C语言学生选课管理系统 36页

  • 222.57 KB
  • 2022-08-23 发布

C语言学生选课管理系统

  • 36页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
  4. 网站客服QQ:403074932
《学生选课系统》1需求分析1.1任务要求制做学生选课系统,共包括课程信息和学生信息两部分。课程信息包括:课程编码、课程名称、适用专业、课程类型(必修、限选、必选、实践、学习)、学分、学时、主讲教师等。学生信息管理,学生选课管理(学生选课学分总数有一定范围),学生可以对课程进行查询、浏览,选完课后可以退选、重选,并可以按学号、姓名进行查询和统计。要求:1.源文件采用多文件的工程结构。2.数据储存采用文件形式。3.标准的C输入输出。4.功能完善,适当的注释。5.关于文件的内容要自学。1.2系统功能需求分析1.为存储课程信息,需要定义一个结构体类型,成员包括课程编码、课程名称、适用专业、课程类型、学分、学时、主讲教师,所选人数等等,并建立链表,定义该结构体类型的指针,用于指向各节点;2.为存储学生信息,需要定义一个结构体类型,成员包括学生编码、学生姓名、所选课程编码、所选课程学分和等等,并建立链表,定义该结构体类型的指针,用于指向各节点;3.对于课程信息和学生信息,可以选择从键盘输入也可选择从文件中打开原来存盘的信息,并对他们分别建立添加、删除、浏览、查询等功能的子函数,完成相应的功能,对程序实现模块化。这其中要用到对链表的删除、插入、增加等知识。删除包括课程删除和学生信息删除,删除时用一结构体指针指向链表的第一个结\n点,检查该节点的值是否等于输入的要删除的课程编号或学生学号,若相等就删除,不相等则后移指针,直至表尾。插入时也要先找到相应结点,再添加。查询功能要设置按照学生姓名、学生编号等多种方式。1.学生选课是要先输入自己的学号,如果在已经输入的学生信息中找不到此学号,则提示需要先输入自己的信息。如找到了自己的学号,则可以进行选课。在选课之前要先对所有的课程信息进行浏览。选课有一定的学分限制,超过相应的学分(这里设置的是10个学分),系统就会显示可以选满的信息。此系统还可以实现删除所选课程的功能,设计思路与选课功能相似。2.为实现存储功能,需用到文件的相关函数,打开文件,将添加、修改或删除的信息存入磁盘中。3.实现易于使用者理解和使用的友好界面。2概要设计2.1系统总体设计框架对程序进行模块化可以使整个程序清晰明了。对课程信息和学生信息建立从文件中输入、从键盘中输入、添加、删除、查询和浏览的功能,其各个子函数中运用链表储存数据。选课管理建立学生选课、推选、查询、浏览的功能,其各个子函数中运用链表储存数据。从主函数开始执行,依次调用各个子函数,并运用文件的相关知识将信息进行存盘。\n2.1系统功能模块图3详细设计3.1功能模块设计思路主要功能模块的算法设计思路如下:1、课程信息录入函数(voidload())①从键盘录入(voidzhang())I定义指向结构体变量的指针;II从头指针指向的结构体开始依次录入结构体中所包含的各个成员;III直到输入的结构体成员的编号为0,录入结束②从文件录入(voidzhang1())I分别定义指向结构体变量的指针和指向文件的指针;II输入文件的路径,打开文件,若没有找到则有提示;III将文件中的信息依次读出,最后结构体的指针为NULL2、课程信息管理(voidmanagementc())①增力口课程信息(voidinsert(structcourse*incourse)I定义指向结构体变量的指针;II输入要增加的课程编号,从头指针指向的结构体依次向后,直到链表的最后;III输入课程结构体各个成员的信息,使最后一个结构体指针值为NULL\n②删除课程信息(voiddelc(intnuml))I定义指向结构体变量的指针;II输入要增加的课程编号,从头指针指向的结构体依次向后,直到找到课程编号为输入值的那个结构体;III将其删除,其前一个的结构体指针指向其后一个结构体3、学生信息录入函数(voidinput())①从键盘录入(voidputin())I定义指向结构体变量的指针;II从头指针指向的结构体开始依次录入结构体中所包含的各个成员;III直到输入的结构体成员的编号为0,录入结束②从文件录入(voidputin2())I分别定义指向结构体变量的指针和指向文件的指针;II输入文件的路径,打开文件,若没有找到则有提示;III将文件中的信息依次读出,最后结构体的指针为NULL4、学生信息管理(voidmanagements())①增加学生信息(voidinserts(structstudent*incouse)I定义指向结构体变量的指针;II输入要增加的学生编号,从头指针指向的结构体依次向后,直到链表的最后;III输入学生结构体各个成员的信息,使最后一个结构体指针值为NULL②删除学生信息(voiddels(intnum2))I定义指向结构体变量的指针;II输入要增加的学生编号,从头指针指向的结构体依次向后,直到找到学生编号为输入值的那个结构体;III将其删除,其前一个的结构体指针指向其后一个结构体5、学生选课管理(voidelective())①学生选课(voidelect。)I分别定义指向课程和学生结构体变量的指针;II输入要选课的学生的编号,从头指针指向的结构体依次向后,直到找到学生编号为输入值的那个结构体,如不存在则显示要录入学生信息;III输入要选课程的编号,从头指针指向的结构体依次向后,直到找到课程编号\n为输入值的那个结构体;IV在学生结构体对应的所选课程编号中更改信息,所选学分中加上相应分值,课程结构体所选人数中相应加一②学生退课(voidback())I分别定义指向课程和学生结构体变量的指针;II输入要退课的学生的编号,从头指针指向的结构体依次向后,直到找到学生编号为输入值的那个结构体,如不存在则显示要录入学生信息;III输入要退课程的编号,从头指针指向的结构体依次向后,直到找到课程编号为输入值的那个结构体;IV在学生结构体对应的所选课程编号中更改信息,所选学分中减去相应分值,课程结构体所选人数中相应减一6、信息浏览和保存(voidinto())①课程信息浏览(voidlistc())I定义指向结构体变量的指针;II从头指针指向的结构体依次向后,将课程结构体各成员的信息一次输出,直到最后一个结构体指针的值为NULL②学生信息浏览(voidlists。)I定义指向结构体变量的指针;II从头指针指向的结构体依次向后,将学生结构体各成员的信息一次输出,直到最后一个结构体指针的值为NULL③课程信息保存(voidintoc())I定义指向课程结构体变量的指针和指向文件的指针;II输入保存路径,如果没有保存则有显示;III将课程信息写入文件中;IV将课程信息进行保存,关闭文件④学生信息保存(voidintos())I定义指向学生结构体变量的指针和指向文件的指针;II输入保存路径,如果没有保存则有显示;III将学生信息写入文件中;IV将学生信息进行保存,关闭文件7、学生信息查询(voidstore())\n①按学生姓名查询(voidsearch2(»I定义指向结构体变量的指针;II输入要查询的学生的姓名,从头指针指向的结构体依次向后,直到找到学生姓名为输入值的那个结构体;III将该学生结构体成员的各信息依次输出②按学生编号查询(voidsearchl。I定义指向结构体变量的指针;II输入要查询的学生的编号,从头指针指向的结构体依次向后,直到找到学生编号为输入值的那个结构体;III将该学生结构体成员的各信息依次输出3调试分析3.1错误显示及分析a编译时出现错误,回看程序发现漏掉符号等细节错误。b.运行时,界面格式与最初的设想不一致,通过重新编排,符号的增减及一进,最终达到理想界面。c.运行时,输入一个信息后,第二次输入数据时很难将输入光标移到想要的位子,通过按键的摸索,最终了解了输入要领。d.对输入的信息查询时没有记录,发现文件读取错误。3.2修改完善1、开始程序执行时,各项大的功能每一次只能执行一个就自动跳出,为了使程序保持连续性和更好的实用性,使用了start,gotostart,break,sysyem“(clx”)等实现了逐渐免于更功能的循环。2、对于学生信息中已选课程的存储,一直不知如何存储。后用实型数组,并进行循环,依次读入课程的编号,将课程编号进行存储。4用户使用说明4.1适用范围适用于管理者将课程信息和学生信息录入到系统,并可以将课程信息和学生信息进行保存,日后如果有需要在对课程和学生信息进行增加可删除。同时也适\n用于学生在登录自己的学号后,浏览课程信息选课,进行选课和退课操作。3.1使用方法首先管理者将现有的课程信息(包括课程编号、课程名称、使用专业、课程类型、学时、学分、教师、已选人数(初始为零))和学生信息(包括学生学号、姓名、已选学时、已选课程编号)录入到系统,并将其进行文件保存,以便以后使用。若要修改(增加和删除)课程信息和学生信息,需要先从文件中录入已存信息,再输入编号对其查找并进行相关操作。学生选课需要先输入自己的学号,若没有此学号的学生信息,需先录入此人信息在进行选课和退课。在选课和退课前,可以先浏览课程信息,并记住要选课程的编号,以便选课时需要。此外还可以学号和姓名对学生信息进行查询。\n5测试结果55.1运行结果主界面录入课程信息\nQ送伊西聿室婚口由」£茜深系豌录入课程信息人入单录录菜J:盘件主1-键文回・书r丁一:、退选12.0.请课程信息浏览\n,R点的西聿系狗Debug田■跣田一存-m1料单ffli1-隹二息回人课程编号i欢迎费用此枭统T课程II质课时主修学分课钳舒添曾Cl-nI——I教师选理人数孙涛0至我8至前0123436708_A1输青息捽息理刻息程息生息统生雷莪出录卷古春S课程信息存储Q於2西仔至粽口由」弓茜果系近三口印长4:n1-翟言茴入录入学生信息\n学生信息浏览QfMg西年要对口由阳匹吴条绿播一图翻国号铺卜廖回王某单情输入工-黯/编号26102700,也20102718姓需由学0^0所选课程编号所选课程学分欢迎使用此系统T方息!¥息理钏直程自至息获{特选怎素生雷莪出屎方芯毒.is123456K8学生信息存储\nQ\:wg西睾要於□由四茜深系送专相1iH"n1-隹言茴入课学自输己息不信息存储四王索里%输入路径「学生学生选课选课后学生信息浏览\nQf黑附西许系淑。由唱惬港呈绿轨一lllia三-返回王菜单值输入I:城编号261027^0261027012G1B271B娃+£翠陈学所选谡程编号欢迎使用此系统?菜凶:请输入一8:,人步生/j戌出览息理息理剜息誉心生息谍晅统主修谈程性质"।必像,w,必褪c耨Jg1=3课程编号122菜也:日.退出系统.查游霾萨阍前入I)3.塞层图鼬*率主看息詈理欢迎使用此系统?教师选课人效孙涛4至冬2王堇«Q芦g西■深至粽口由“工国鼻系近轨EP回选课后课程信息浏览存1都里・固一皤K4:J=^q了王1-善一直回人课学晅辅--LL青nqELi拿机i嗔机:礴0耀墓曷5.罢手萋。•官票存课程信息管理\n学生信息管理学生信息查找Q芦g街深至粽口中」夕建设系玩一轨史’学生信息查找学生信息查找日』自后舁U-u£K--.tdH一工I刁3辜工1-1回单添瞿造|1.|3.0.青学生信息查找\n国S3Q■■超附西■深至相口山」外法演系近w'杳香菜J:号名工L学姓回人轴1.2片iM.退出系统cP:版件\选课系筵\pebu婢误系施国|£3Thanky口Lt!Biye-Dye*Piacas口k等射tocontinuc7附录\n7.1课设小结通过这次课程设计,我对C语言有了更深刻的了解,增强了程序的编写能力,巩固了专业知识,对程序的模块化观念也又模糊逐渐变的清晰了。在程序的运行与调试过程中出现了很多错误,通过反复地复习课本上的相关知识,不停地修改与调试,我终于完成了这段程序。在调试过程中,我认识到了C语言的灵活性与严谨性,同一个功能可以由不同的语句来实现,但编写程序时要特别注意细节方面的问题,因为一个小小的疏忽就能导致整个程序不能运行。当然我也认识到了自己的薄弱之处,如对链表相关知识的欠缺,文件运用的不熟练,在以后的学习中我要集中精力、端正态度,争取把知识学得更扎实、更全面。7.2存在不足1、系统不够强大,有点脆弱。2、当输入信息(课程信息,学生信息)后,不能自动保存,需手动保存。对于以上不足,以后将进行改进,以确保达到更好。7.3详细代码#include#include#includeintN1,N2;structstudent{intnum2;charname2[20];intnelenum[50];//所选课程编号intnelen;//所选课程学分和structstudent*next;};structcourse{intnum1;//课程编号charname1[20];charmajor[20];\nchartype[20];intcredit;intperiod;charteacher[20];//从键盘录入课程信息//选此门课程的人数//结构体指针intpeople;structcourse*next;};structcourse*head1;structstudent*head2;voidzhang(){structcourse*p1,*p2;N1=0;p1=p2=(structcourse*)malloc(sizeof(structcourse));printf("课程编号\t课程名称\t主修\t课程性质\t学分\t课时\t教师\n");scanf("%d%s%s%s%d%d%s",&p1->num1,p1->name1,p1->major,p1->type,&p1->credit,&p1->period,p1->teacher);p1->people=0;head1=NULL;while(p1->num1!=0){N1=N1+1;if(N1==1)head1=p1;elsep2->next=p1;p2=p1;p1=(structcourse*)malloc(sizeof(structcourse));scanf("%d%s%s%s%d%d%s",&p1->num1,p1->name1,p1->major,p1->type,&p1->credit,&p1->period,p1->teacher);p1->people=0;\np2->next=NULL;}voidzhang1()//从文件录入课程信息{FILE*fp;charfilepath[20];structcourse*p1,*p2;N1=0;printf("请输入您要读取的路径:");getchar();gets(filepath);if((fp=fopen(filepath,"r"))==NULL){printf("找不到%s文件!\n",filepath);exit(0);}p1=p2=(structcourse*)malloc(sizeof(structcourse));fscanf(fp,"%d%s%s%s%d%d%s%d",&p1->num1,p1->name1,p1->major,p1->type,&p1->credit,&p1->period,p1->teacher,&p1->people);while(!feof(fp)){N1=N1+1;if(N1==1)head1=p1;elsep2->next=p1;p2=p1;p1=(structcourse*)malloc(sizeof(structcourse));\nfscanf(fp,"%d%s%s%s%d%d%s%d",&p1->num1,p1->name1,p1->major,p1->type,&p1->credit,&p1->period,p1->teacher,&p1->people);}p2->next=NULL;}voidload()//录入课程信息函数{inti;printf("\t\t\t录入课程信息\n");printf("\n1.从键盘录入");printf("\n2.从文件录入");printf("\n3.返回主菜单\n");printf("请选择1-3:");scanf("%d",&i);switch(i){case1:zhang();break;case2:zhang1();break;case3:break;}}//增加课程信息voidinsert(structcourse*incourse){structcourse*p0,*p1,*p2;p1=head1;p0=incourse;if(head1==NULL){head1=p0;p0->next=NULL;else{}\nwhile((p0->num1>p1->num1)&&(p1->next!=NULL)){p2=p1;p1=p1->next;}if(p0->num1<=p1->num1){if(head1==p1)head1=p0;elsep2->next=p0;p0->next=p1;}else{p1->next=p0;p0->next=NULL;}}N1=N1+1;}voiddelc(intnum1)//删除课程信息{structcourse*p1,*p2;if(head1==NULL){printf("\n无法删除!\n");gotoend;}\np1=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()//课程信息管理函数{structcourse*p1;inti,num1;printf("\t\t\t课程信息管理\n");printf("1.添加课程\n");printf("2.删除课程\n");printf("3.返回\n");printf("请输入1-3:\n");scanf("%d",&i);switch(i){\ncase1:{p1=(structcourse*)malloc(sizeof(structcourse));printf("课程编号\t课程名称\t主修\t课程性质\t学分\t课时\t教师\n");scanf("%d%s%s%s%d%d%s",&p1->num1,p1->name1,p1->major,p1->type,&p1->credit,&p1->period,p1->teacher);p1->people=0;insert(p1);break;case2:printf("请输入您要删除的课程编号:\n");scanf("%d",&num1);delc(num1);break;case3:break;voidputin(void)//从键盘录入学生信息inti;structstudent*p1,*p2;N2=0;p1=p2=(structstudent*)malloc(sizeof(structstudent));printf("学号\t姓名\n");scanf("%d%s",&p1->num2,p1->name2);p1->nelen=0;for(i=0;i<20;i++)p1->nelenum[i]=0;head2=NULL;while(p1->num2!=0){N2=N2+1;if(N2==1)head2=p1;else\np2->next=p1;p2=p1;p1=(structstudent*)malloc(sizeof(structstudent));scanf("%d%s",&p1->num2,p1->name2);p1->nelen=0;for(i=0;i<20;i++)p1->nelenum[i]=0;}p2->next=NULL;}voidputin2()//从文件录入学生信息{inti=0;FILE*fp;charfilepath[20];structstudent*p1,*p2;N2=0;printf("请输入您要读取的路径:”);getchar();gets(filepath);if((fp=fopen(filepath,"rt"))==NULL){printf("找不到%s文件!\n",filepath);exit(0);}p1=p2=(structstudent*)malloc(sizeof(structstudent));fread(p1,sizeof(structstudent),1,fp);head2=NULL;while(!feof(fp)){i=0;N2=N2+1;if(N2==1)\nhead2=p1;elsep2->next=p1;p2=p1;p1=(structstudent*)malloc(sizeof(structstudent));fread(p1,sizeof(structstudent),1,fp);}p2->next=NULL;}voidinput()//录入学生信息函数{inti;printf("\t\t\t录入学生信息\n");printf("\n1.从键盘录入\n");printf("2.从文件录入\n");printf("3.返回主菜单\n");printf("请输入1-3:\n");scanf("%d",&i);switch(i){case1:putin();break;case2:putin2();break;case3:break;}}voidinserts(structstudent*incouse)//增加学生信息{structstudent*p0,*p1,*p2;p1=head2;p0=incouse;if(head2==NULL)head2=p0;p0->next=NULL;\n}else{while((p0->num2>p1->num2)&&(p1->next!=NULL)){p2=p1;p1=p1->next;}if(p0->num2<=p1->num2){if(head2==p1)head2=p0;elsep2->next=p0;p0->next=p1;}else{p1->next=p0;p0->next=NULL;}}N2=N2+1;}voiddels(intnum2)//删除学生信息{structstudent*p1,*p2;if(head2==NULL){printf("\n无法删除\n");gotoend;}p1=head2;while(num2!=p1->num2&&p1->next!=NULL){\np2=p1;p1=p1->next;}if(num2==p1->num2){if(p1==head2)head2=p1->next;elsep2->next=p1->next;printf("已删除\n");N2=N2-1;}elseprintf("没有此学生编号\n");end:;}voidmanagements()//学生信息管理函数{structstudent*p1;inti,num2;printf("\t\t\t学生信息管理\n");printf("1.添加学生信息\n");printf("2.删除学生信息\n");printf("3.返回主菜单\n");printf("请选择1-3:\n");scanf("%d",&i);switch(i){case1:{p1=(structstudent*)malloc(sizeof(structstudent));\np1->nelen=0;p1->nelenum[0]=0;printf("num\tname\n");scanf("%d%s",&p1->num2,p1->name2);inserts(p1);}break;case2:{printf("请输入您要删除的学生编号:\n");scanf("%d",&num2);dels(num2);}break;case3:break;}}voidelect()//学生选课{structstudent*s;structcourse*p;inta,i,b;printf("请输入您的学号:\n");scanf("%d",&a);s=head2;while((s->num2)!=a&&s->next!=NULL)s=s->next;if(s->num2!=a){printf("您的信息不存在,请重新输入:\n");gotoend;}if((s->nelen)>10){printf("您的学分已满");gotoend;}printf("请输入您要选修的课程编号\n");scanf("%d",&b);\nfor(i=0;(s->nelenum[i])==0;i++);s->nelenum[i]=b;p=head1;while((p->num1)!=b)p=p->next;for(i=0;(s->nelenum[i])!=0;i++);s->nelenum[i]=b;(p->people)++;(s->nelen)=(s->nelen)+(p->credit);(p->people)++;end:;}voidback()//学生退课{structstudent*p;structcourse*p1;intb,i,j,a;printf("请输入您的学号:\n");scanf("%d",&a);p=head2;while(p->num2!=a&&p!=NULL)p=p->next;if(p==NULL)printf("您的信息不存在:\n");else{printf("请输入您要退选的课程:\n");scanf("%d",&b);p1=head1;while(p1->num1!=b)p1=p1->next;for(i=0;p->nelenum[i]!=b;i++);for(j=i;p->nelenum[j]!=0;j++)p->nelenum[j]=p->nelenum[j+1];p->nelenum[--j]=0;\n(p->nelen)=(p->nelen)-(p1->credit);(p1->people)--;printf("succeed!\n");}}voidelective()//学生选课信息管理{inti;printf("\t\t\t学生选课信息管理\n");printf("1.选课\n");printf("2.退课\n");printf("3.返回主菜单\n");printf("请输入1-3:\n");scanf("%d",&i);switch(i){case1:elect();break;case2:back();break;case3:break;}}voidlistc()//浏览课程信息{structcourse*p;p=head1;printf("课程编号课程名称主修课程性质学分课时教师选课人数\n");while(p!=NULL){printf("%6d%13s%13s%10s%7d%7d%12s%5d\n",p->num1,p->name1,p->major,\np->type,p->credit,p->period,p->teacher,p->people);p=p->next;}}voidlists()//浏览学生信息{structstudent*p;inta;p=head2;printf("学生编号学生姓名所选课程编号所选课程学分\n");while(p!=NULL){printf("%6d%13s",p->num2,p->name2);printf("%6d",p->nelen);for(a=0;p->nelenum[a]!=0&&a<14;a++)printf("%d",p->nelenum[a]);printf("\n");p=p->next;}}voidintoc()//存储课程信息{FILE*fp;structcourse*p;charfilepath[30];printf("输入路径:");getchar();\ngets(filepath);if((fp=fopen(filepath,"w"))==NULL){无法储存!");exit(0);}p=head1;while(p!=NULL){fprintf(fp,"%d%s%s%s%d%d%s%d\n",p->num1,p->name1,p->major,p->type,p->credit,p->period,p->teacher,p->people);p=p->next;}fclose(fp);printf("已储存入%s文件!\n",filepath);}voidintos()//存储学生信息{FILE*fp;structstudent*p;charfilepath[30];printf("请输入路径:");getchar();gets(filepath);if((fp=fopen(filepath,"wt"))==NULL){printf("\n无法储存!");\nexit(0);p=head2;while(p!=NULL){fwrite(p,sizeof(structstudent),1,fp);p=p->next;}fclose(fp);printf("已储存入%s文件!\n",filepath);}voidinto(){inti;printf("\t\t\t信息存储\n");printf("1.课程信息存储\n");printf("2.学生信息存储t\n");printf("3.返回主菜单\n");printf("请输入1-3\n");scanf("%d",&i);switch(i){case(1):intoc();break;case(2):intos();break;case(3):break;}}voidstore(){//信息存储函数//信息存储浏览函数inti;printf("\t\t信息存储和浏览\n");printf("1.课程信息浏览\n");printf("2.学生信息浏览\n");printf("3.信息存储\n");\nprintf("4.返回主菜单\n");printf("请输入1-4:\n");scanf("%d",&i);switch(i){case(1):listc();break;case(2):lists();break;case(3):into();break;case(4):break;}}voidsearch1()//按学生编号查找学生信息{inta,b;structstudent*p;printf("请输入学生编号");scanf("%d",&a);p=head2;printf("学号学生姓名所选课程编号所选课程学分\n");while(p!=NULL){if(p->num2==a){printf("%6d%13s",p->num2,p->name2);for(b=0;p->nelenum[b]!=0&&b<14;b++)printf("%d",p->nelenum[b]);printf("%10d\n",p->nelen);}p=p->next;}voidsearch2()//按学生姓名查找学生信息{\nintb;charname[20];structstudent*p;printf("请输入要查找的学生姓名:");scanf("%s",name);p=head2;printf("学号学生姓名所选课程编号所选课程学分\n");while(p!=NULL){if(strcmp(name,p->name2)==0){printf("%6d%13s",p->num2,p->name2);for(b=0;p->nelenum[b]!=0&&b<14;b++)printf("%d",p->nelenum[b]);printf("%10d\n",p->nelen);}p=p->next;}}voidsearch()//学生信息查找主函数{inti;printf("\t\t\t学生信息查找");printf("\n1.按学号查找");printf("\n2.按姓名查找");printf("\n3.返回主菜单");\nprintf("\n请输入1-3:");scanf("%d",&i);switch(i){case1:search1();break;case2:search2();break;case3:break;}}voidmain()//主函数{charm;inti;start:printf("\t\t\t*****************************\n");printf("\n\t\t\t\t欢迎使用此系统!\n");printf("\t\t\t*****************************\n");printf("\n");printf("\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("\t\t\t6.信息存储与浏览\n");printf("\t\t\t7.查找学生信息\n");printf("\t\t\t8.退出系统");printf("\t\t\t\n请输入1-8:\n");scanf("%d",&i);if(scanf("%d",&i)){if(i<1||i>8)printf("请重新输入:\n");gotostart;\n}}if(scanf("%c",&m)){printf("输入错误,请重新输入:\n");gotostart;}switch(i){case1:system("cls");load();gotostart;break;case2:system("cls");managementc();gotostart;break;case3:system("cls");input();gotostart;break;case4:system("cls");managements();gotostart;break;case5:system("cls");elective();gotostart;break;case6:system("cls");store();gotostart;break;case7:system("cls");search();gotostart;break;case8:{system("cls");printf("Thankyou!\n\nBye-Bye!\n");

相关文档