#includestdio.h#includestdlib.h#includestring.hintN1,N2;structcouse*head1;structstudent*head2;structcouse//课程信息结构体{intnum1;//课程编号charname1[20];//课程名称chartype[20];//课程性质inthour;//总学时intteach;//上课学时intexp;//实验上机学时intcredit;//学分intsemester;//开课学期intnelepeo;//课程已选人数intMelepeo;//课程上限structcouse*next;};structstudent//学生信息结构体{intnum2;//学号charname2[20];//姓名intnelenum[50];//已选课程编号charnelename[10][20];//已选名称intnelen;//已选课程数量intscore;//总学分intgainscore;//已获得的学分structstudent*next;};voidmanger();voidstudent();voidmanagementc();voidmanagements();voidmanage();voidmain();voidintoc()//存储课程信息{FILE*fp;structcouse*p;charfilepath[30];printf(\t\t\t*****************************\n);printf(\n\t\t\t\t欢迎使用此系统!\n);printf(\t\t\t*****************************\n);printf(输入路径:);getchar();gets(filepath);if((fp=fopen(filepath,w))==NULL){printf(无法储存!);exit(0);}p=head1;while(p!=NULL){fprintf(fp,%d%s%s%d%d%d%d%d%d%d\n,p-num1,p-name1,p-type,p-hour,p-teach,p-exp,p-credit,p-semester,p-nelepeo,p-Melepeo);p=p-next;}fclose(fp);printf(已储存入%s文件!\n,filepath);}voidkeyboardc()//录入课程子函数(从键盘录入){structcouse*p1,*p2;N1=0;p1=p2=(structcouse*)malloc(sizeof(structcouse));printf(\t\t\t*****************************\n);printf(\n\t\t\t\t欢迎使用此系统!\n);printf(\t\t\t*****************************\n);printf(编号\\名称\\性质\\总学时\\上课学时\\实验上机学时\\学分\\开课学期\\已选人数\\课程上限\n);scanf(%d%s%s%d%d%d%d%d%d%d,&p1-num1,p1-name1,&p1-type,&p1-hour,&p1-teach,&p1-exp,&p1-credit,&p1-semester,&p1-nelepeo,&p1-Melepeo);head1=NULL;while(p1-num1!=0){N1=N1+1;if(N1==1)head1=p1;elsep2-next=p1;//对这段语句有疑问p2=p1;p1=(structcouse*)malloc(sizeof(structcouse));scanf(%d%s%s%d%d%d%d%d%d%d,&p1-num1,p1-name1,p1-type,&p1-hour,&p1-teach,&p1-exp,&p1-credit,&p1-semester,&p1-nelepeo,&p1-Melepeo);}p2-next=NULL;}voidfilec()//录入键盘子函数(从文件录入){FILE*fp;charfilepath[20];structcouse*p1,*p2;N1=0;printf(\t\t\t*****************************\n);printf(\n\t\t\t\t欢迎使用此系统!\n);printf(\t\t\t*****************************\n);printf(输入要读入的文件路径:);getchar();gets(filepath);if((fp=fopen(filepath,rb))==NULL){printf(找不到%s文件!\n,filepath);exit(0);}p1=p2=(structcouse*)malloc(sizeof(structcouse));fscanf(fp,%d%s%s%d%d%d%d%d%d%d,&p1-num1,p1-name1,p1-type,&p1-hour,&p1-teach,&p1-exp,&p1-credit,&p1-semester,&p1-nelepeo,&p1-Melepeo);head1=NULL;while(!feof(fp)){N1=N1+1;if(N1==1)head1=p1;elsep2-next=p1;p2=p1;p1=(structcouse*)malloc(sizeof(structcouse));fscanf(fp,%d%s%s%d%d%d%d%d%d%d,&p1-num1,p1-name1,p1-type,&p1-hour,&p1-teach,&p1-exp,&p1-credit,&p1-semester,&p1-nelepeo,&p1-Melepeo);}p2-next=NULL;}voidinputc()//录入课程主函数{inti;printf(\t\t\t*****************************\n);printf(\n\t\t\t\t欢迎使用此系统!\n);printf(\t\t\t*****************************\n);printf(\t\t\t录入课程信息\n);printf(\n\t\t\t1.从键盘录入\n);printf(\t\t\t2.从文件录入\n);printf(\t\t\t3.返回上一菜单\n);printf(请选择(1~3):);scanf(%d,&i);switch(i){case(1):system(cls);keyboardc();system(cls);inputc();break;case(2):system(cls);filec();system(cls);inputc();break;case(3):system(cls);managementc();break;}}voidinsertc(intnum2)//课程管理子函数(修改课程){structcouse*p1,*p2;if(head1==NULL){printf(\n\t\t\t没有课程,无法修改!\n);gotoend;}p1=head1;while(num2!=p1-num1&&p1-next!=NULL){p2=p1;p1=p1-next;}if(num2==p1-num1){printf(\t\t\t请重新输入数据进行修改\n);printf(课程编号\\课程名称\\课程性质\\总学时\\上课学时\\实验上机学时\\学分\\开课学期\\课程已选人数\\课程上限\n);scanf(%d%s%s%d%d%d%d%d%d%d%d,&p1-num1,p1-name1,p1-type,&p1-hour,&p1-teach,&p1-exp,&p1-credit,&p1-semester,&p1-nelepeo,&p1-Melepeo);printf(\t\t\t已修改该课程\n);}elseprintf(\t\t\t无该编号的课程!\n);end:;}voiddelc(intnum1)//课程管理子函数(删除课程){structcouse*p1,*p2;if(head1==NULL){printf(\n\t\t\t没有课程,无法删除!\n);gotoend;}p1=head1;while(num1!=p1-num1&&p1-next!=NULL){p2=p1;p1=p1-next;}if(num1==p1-num1){if(p1==head1)head1=p1-next;elsep2-next=p1-next;printf(已删除该编号课程!\n);N1=N1-1;}elseprintf(无该编号的课程!\n);end:;}voidmanagementc()//课程管理主函数{inti,num1,num2=1;printf(\t\t\t*****************************\n);printf(\n\t\t\t\t欢迎使用此系统!\n);printf(\t\t\t*****************************\n);printf(\t\t\t课程管理\n);printf(\t\t\t1.添加课程\n);printf(\t\t\t2.修改课程\n);printf(\t\t\t3.删除课程\n);printf(\t\t\t4.存储课程信息\n);printf(\t\t\t5.返回上一菜单\n);printf(请选择(1~5):);scanf(%d,&i);switch(i){case(1):system(cls);inputc();system(cls);break;case(2):{system(cls);printf(\t\t\t*****************************\n);printf(\n\t\t\t\t欢迎使用此系统!\n);printf(\t\t\t*****************************\n);printf(请输入要修改的课程编号:\n);scanf(%d,&num2);insertc(num2);managementc();system(cls);break;}case(3):{system(cls);printf(\t\t\t*****************************\n);printf(\n\t\t\t\t欢迎使用此系统!\n);printf(\t\t\t*****************************\n);printf(请输入要删除课程的编号:\n);scanf(%d,&num1);delc(num1);managementc();system(cls);break;}case(4):system(cls);intoc();managementc();break;case(5):system(cls);manage();break;}}voidintos()//存储学生信息{FILE*fp;structstudent*p;charfilepath[30];printf(\t\t\t*****************************\n);printf(\n\t\t\t\t欢迎使用此系统!\n);printf(\t\t\t*****************************\n);printf(请输入路径:);getchar();gets(filepath);if((fp=fopen(filepath,wb))==NULL){printf(\n无法储存!);exit(0);}p=head2;w