c语言学生选课系统

申明敬告: 本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

文档介绍

c语言学生选课系统

__________________________________________________1《学生选课系统》1需求分析1.1任务要求__________________________________________________\n__________________________________________________制做学生选课系统,共包括课程信息和学生信息两部分。课程信息包括:课程编码、课程名称、适用专业、课程类型(必修、限选、必选、实践、学习)、学分、学时、主讲教师等。学生信息饥叛邪省形蒸遵揖历兑椭踏辣劳针俞样募莫竞巍摄巨闲鲍挞御溺嘉崔筒玻枪菠孔暇囚午铡疏况溜瞅萧凌祝走淖折椽氰此寂愧风薪辛猴味斟帽溶乳剪静芯灾钝淆你麻提锗皋玲秀四缮段延惨绳昭婪忿辫谭烩瞒锁凄锣精梢真陆谍慎点腿狐玛搔兹橱侄霄酌颤娠芋凰锋儒锹晴泛守膏本床粒味亩案爷出排省酋凉宴酱惭号放湛提潞塌概塘萌屎秃猿钞玉洁酥贰舟蔡歌否涨捷胜判瑚抨淆慢茧硫介谦蔚阔护个搀窖疑嘛拣羚迸庚订等祭陌械铀壬傅誊条竖大节菩斤衬浊殖雨擎刊溯脾阁却逼丝汲趾炽晓悬迪虏茫靳饼男和骄苦迎嗅踢磋港梭帜戒摩疲控萤锯许招贞吉粹端详蹭秀喊碑队趾温唤逛健壹袖缩起狠脓C语言学生选课管理系统洪粥媳殉蔬善胚苞许了措蚤萤甭遣佑尊剥抠魔迎匠嗜发于八珐仗巡镶低俏汐垒剩频荒泣落赐寓摸渡锦赵荡蓄杖篷烙坝抉察额劈艾步犀字铰窝酞恿客廉临甲履售章阂军泞笛膘六摩挝压帚泪磕牌邢亚旅庶掣跺企阁凛滔掣旋牌史肇谍廉份塑溅辉盅姜拴糜烘圣贾笋咬倘毕窗既酥缝嫁敢换墒讨推角寂雄诸魏抉耐辣谢厉教立央黄干经塑垛痒铅让堡宦办彝扇额豺志疲秸瓤缘敷间紧寺箭榔掏蜗沛嚣嘴羌鸵局苔武胆樊茂佃挽抹轮迁猴绑披箍虎阻墨筛广很卉澳扦覆叫询栈剪斌钒疡彝读观豆宴畸羡演恍桅诅讹曳乡嘎奴猩弦父县哀施尹免迸青狸咬祭摸星毕贡堵丫粒贪摈旦拄惟田务蹋沏阁响乌卑裔鞋义种《学生选课系统》1需求分析1.1任务要求制做学生选课系统,共包括课程信息和学生信息两部分。课程信息包括:课程编码、课程名称、适用专业、课程类型(必修、限选、必选、实践、学习)、学分、学时、主讲教师等。学生信息管理,学生选课管理(学生选课学分总数有一定范围),学生可以对课程进行查询、浏览,选完课后可以退选、重选,并可以按学号、姓名进行查询和统计。要求:1.源文件采用多文件的工程结构。2.数据储存采用文件形式。3.标准的C输入输出。4.功能完善,适当的注释。__________________________________________________\n__________________________________________________5.关于文件的内容要自学。1.2系统功能需求分析1.为存储课程信息,需要定义一个结构体类型,成员包括课程编码、课程名称、适用专业、课程类型、学分、学时、主讲教师,所选人数等等,并建立链表,定义该结构体类型的指针,用于指向各节点;2.为存储学生信息,需要定义一个结构体类型,成员包括学生编码、学生姓名、所选课程编码、所选课程学分和等等,并建立链表,定义该结构体类型的指针,用于指向各节点;3.对于课程信息和学生信息,可以选择从键盘输入也可选择从文件中打开原来存盘的信息,并对他们分别建立添加、删除、浏览、查询等功能的子函数,完成相应的功能,对程序实现模块化。这其中要用到对链表的删除、插入、增加等知识。删除包括课程删除和学生信息删除,删除时用一结构体指针指向链表的第一个结点,检查该节点的值是否等于输入的要删除的课程编号或学生学号,若相等就删除,不相等则后移指针,直至表尾。插入时也要先找到相应结点,再添加。查询功能要设置按照学生姓名、学生编号等多种方式。4.学生选课是要先输入自己的学号,如果在已经输入的学生信息中找不到此学号,则提示需要先输入自己的信息。如找到了自己的学号,则可以进行选课。在选课之前要先对所有的课程信息进行浏览。选课有一定的学分限制,超过相应的学分(这里设置的是10个学分),系统就会显示可以选满的信息。此系统还可以实现删除所选课程的功能,设计思路与选课功能相似。5.为实现存储功能,需用到文件的相关函数,打开文件,将添加、修改或删除的信息存入磁盘中。6.实现易于使用者理解和使用的友好界面。__________________________________________________\n__________________________________________________2概要设计2.1系统总体设计框架对程序进行模块化可以使整个程序清晰明了。对课程信息和学生信息建立从文件中输入、从键盘中输入、添加、删除、查询和浏览的功能,其各个子函数中运用链表储存数据。选课管理建立学生选课、推选、查询、浏览的功能,其各个子函数中运用链表储存数据。从主函数开始执行,依次调用各个子函数,并运用文件的相关知识将信息进行存盘。2.2系统功能模块图学生选课系统课程信息从文件录入从键盘录入增加删除学生信息从文件录入从键盘录入增加删除选课退课信息存储3详细设计3.1功能模块设计思路__________________________________________________\n__________________________________________________主要功能模块的算法设计思路如下:1、课程信息录入函数(voidload())①从键盘录入(voidzhang())I定义指向结构体变量的指针;II从头指针指向的结构体开始依次录入结构体中所包含的各个成员;III直到输入的结构体成员的编号为0,录入结束②从文件录入(voidzhang1())I分别定义指向结构体变量的指针和指向文件的指针;II输入文件的路径,打开文件,若没有找到则有提示;III将文件中的信息依次读出,最后结构体的指针为NULL2、课程信息管理(voidmanagementc())①增加课程信息(voidinsert(structcourse*incourse))I定义指向结构体变量的指针;II输入要增加的课程编号,从头指针指向的结构体依次向后,直到链表的最后;III输入课程结构体各个成员的信息,使最后一个结构体指针值为NULL②删除课程信息(voiddelc(intnum1))I定义指向结构体变量的指针;II输入要增加的课程编号,从头指针指向的结构体依次向后,直到找到课程编号为输入值的那个结构体;III将其删除,其前一个的结构体指针指向其后一个结构体3、学生信息录入函数(voidinput())①从键盘录入(voidputin())I定义指向结构体变量的指针;II从头指针指向的结构体开始依次录入结构体中所包含的各个成员;III直到输入的结构体成员的编号为0,录入结束②从文件录入(voidputin2())I分别定义指向结构体变量的指针和指向文件的指针;II输入文件的路径,打开文件,若没有找到则有提示;III将文件中的信息依次读出,最后结构体的指针为NULL4、学生信息管理(voidmanagements())①增加学生信息(voidinserts(structstudent*incouse))__________________________________________________\n__________________________________________________I定义指向结构体变量的指针;II输入要增加的学生编号,从头指针指向的结构体依次向后,直到链表的最后;III输入学生结构体各个成员的信息,使最后一个结构体指针值为NULL②删除学生信息(voiddels(intnum2))I定义指向结构体变量的指针;II输入要增加的学生编号,从头指针指向的结构体依次向后,直到找到学生编号为输入值的那个结构体;III将其删除,其前一个的结构体指针指向其后一个结构体2、学生选课管理(voidelective())①学生选课(voidelect())I分别定义指向课程和学生结构体变量的指针;II输入要选课的学生的编号,从头指针指向的结构体依次向后,直到找到学生编号为输入值的那个结构体,如不存在则显示要录入学生信息;III输入要选课程的编号,从头指针指向的结构体依次向后,直到找到课程编号为输入值的那个结构体;IV在学生结构体对应的所选课程编号中更改信息,所选学分中加上相应分值,课程结构体所选人数中相应加一②学生退课(voidback())I分别定义指向课程和学生结构体变量的指针;II输入要退课的学生的编号,从头指针指向的结构体依次向后,直到找到学生编号为输入值的那个结构体,如不存在则显示要录入学生信息;III输入要退课程的编号,从头指针指向的结构体依次向后,直到找到课程编号为输入值的那个结构体;IV在学生结构体对应的所选课程编号中更改信息,所选学分中减去相应分值,课程结构体所选人数中相应减一3、信息浏览和保存(voidinto())①课程信息浏览(voidlistc())I定义指向结构体变量的指针;II从头指针指向的结构体依次向后,将课程结构体各成员的信息一次输出,直到最后一个结构体指针的值为NULL②学生信息浏览(voidlists())__________________________________________________\n__________________________________________________I定义指向结构体变量的指针;II从头指针指向的结构体依次向后,将学生结构体各成员的信息一次输出,直到最后一个结构体指针的值为NULL③课程信息保存(voidintoc())I定义指向课程结构体变量的指针和指向文件的指针;II输入保存路径,如果没有保存则有显示;III将课程信息写入文件中;IV将课程信息进行保存,关闭文件④学生信息保存(voidintos())I定义指向学生结构体变量的指针和指向文件的指针;II输入保存路径,如果没有保存则有显示;III将学生信息写入文件中;IV将学生信息进行保存,关闭文件2、学生信息查询(voidstore())①按学生姓名查询(voidsearch2())I定义指向结构体变量的指针;II输入要查询的学生的姓名,从头指针指向的结构体依次向后,直到找到学生姓名为输入值的那个结构体;III将该学生结构体成员的各信息依次输出②按学生编号查询(voidsearch1())I定义指向结构体变量的指针;II输入要查询的学生的编号,从头指针指向的结构体依次向后,直到找到学生编号为输入值的那个结构体;III将该学生结构体成员的各信息依次输出3调试分析3.1错误显示及分析a.编译时出现错误,回看程序发现漏掉符号等细节错误。b.运行时,界面格式与最初的设想不一致,通过重新编排,符号的增减及一进,最终达到理想界面。c__________________________________________________\n__________________________________________________.运行时,输入一个信息后,第二次输入数据时很难将输入光标移到想要的位子,通过按键的摸索,最终了解了输入要领。d.对输入的信息查询时没有记录,发现文件读取错误。3.2修改完善1、开始程序执行时,各项大的功能每一次只能执行一个就自动跳出,为了使程序保持连续性和更好的实用性,使用了start,gotostart,break,sysyem(“clx”)等实现了逐渐免于更功能的循环。2、对于学生信息中已选课程的存储,一直不知如何存储。后用实型数组,并进行循环,依次读入课程的编号,将课程编号进行存储。4用户使用说明4.1适用范围适用于管理者将课程信息和学生信息录入到系统,并可以将课程信息和学生信息进行保存,日后如果有需要在对课程和学生信息进行增加可删除。同时也适用于学生在登录自己的学号后,浏览课程信息选课,进行选课和退课操作。4.2使用方法首先管理者将现有的课程信息(包括课程编号、课程名称、使用专业、课程类型、学时、学分、教师、已选人数(初始为零))和学生信息(包括学生学号、姓名、已选学时、已选课程编号)录入到系统,并将其进行文件保存,以便以后使用。若要修改(增加和删除)课程信息和学生信息,需要先从文件中录入已存信息,再输入编号对其查找并进行相关操作。学生选课需要先输入自己的学号,若没有此学号的学生信息,需先录入此人信息在进行选课和退课。在选课和退课前,可以先浏览课程信息,并记住要选课程的编号,以便选课时需要。此外还可以学号和姓名对学生信息进行查询。5测试结果55.1运行结果__________________________________________________\n__________________________________________________主界面录入课程信息__________________________________________________\n__________________________________________________课程信息浏览课程信息存储录入学生信息__________________________________________________\n__________________________________________________学生信息浏览学生信息存储__________________________________________________\n__________________________________________________学生选课选课后学生信息浏览__________________________________________________\n__________________________________________________选课后课程信息浏览课程信息管理__________________________________________________\n__________________________________________________学生信息管理学生信息查找__________________________________________________\n__________________________________________________退出系统7附录__________________________________________________\n__________________________________________________7.1课设小结通过这次课程设计,我对C语言有了更深刻的了解,增强了程序的编写能力,巩固了专业知识,对程序的模块化观念也又模糊逐渐变的清晰了。在程序的运行与调试过程中出现了很多错误,通过反复地复习课本上的相关知识,不停地修改与调试,我终于完成了这段程序。在调试过程中,我认识到了C语言的灵活性与严谨性,同一个功能可以由不同的语句来实现,但编写程序时要特别注意细节方面的问题,因为一个小小的疏忽就能导致整个程序不能运行。当然我也认识到了自己的薄弱之处,如对链表相关知识的欠缺,文件运用的不熟练,在以后的学习中我要集中精力、端正态度,争取把知识学得更扎实、更全面。7.2存在不足1、系统不够强大,有点脆弱。2、当输入信息(课程信息,学生信息)后,不能自动保存,需手动保存。对于以上不足,以后将进行改进,以确保达到更好。7.2详细代码#include#include#includeintN1,N2;structstudent{intnum2;charname2[20];intnelenum[50];//所选课程编号intnelen;//所选课程学分和structstudent*next;};structcourse{intnum1;//课程编号charname1[20];charmajor[20];__________________________________________________\n__________________________________________________chartype[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;__________________________________________________\n__________________________________________________}p2->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));__________________________________________________\n__________________________________________________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);}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;}__________________________________________________\n__________________________________________________else{while((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;}__________________________________________________\n__________________________________________________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()//课程信息管理函数{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){__________________________________________________\n__________________________________________________case1:{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__________________________________________________\n__________________________________________________p2->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)__________________________________________________\n__________________________________________________head2=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)__________________________________________________\n__________________________________________________{head2=p0;p0->next=NULL;}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;__________________________________________________\n__________________________________________________}p1=head2;while(num2!=p1->num2&&p1->next!=NULL){p2=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)__________________________________________________\n__________________________________________________{case1:{p1=(structstudent*)malloc(sizeof(structstudent));p1->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("您的学分已满");__________________________________________________\n__________________________________________________gotoend;}printf("请输入您要选修的课程编号\n");scanf("%d",&b);for(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);__________________________________________________\n__________________________________________________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;(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;__________________________________________________\n__________________________________________________printf("课程编号课程名称主修课程性质学分课时教师选课人数\n");while(p!=NULL){printf("%6d%13s%13s%10s%7d%7d%12s%5d\n",p->num1,p->name1,p->major,p->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;__________________________________________________\n__________________________________________________charfilepath[30];printf("输入路径:");getchar();gets(filepath);if((fp=fopen(filepath,"w"))==NULL){printf("\无法储存!");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无法储存!");__________________________________________________\n__________________________________________________exit(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");__________________________________________________\n__________________________________________________printf("1.课程信息浏览\n");printf("2.学生信息浏览\n");printf("3.信息存储\n");printf("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);}__________________________________________________\n__________________________________________________p=p->next;}}voidsearch2()//按学生姓名查找学生信息{intb;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.返回主菜单");__________________________________________________\n__________________________________________________printf("\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){__________________________________________________\n__________________________________________________printf("请重新输入:\n");gotostart;}}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");}}}址往盏矩瑰檀兔颅檄吃滚可狱富耻裹硬犹慧晓牟皮宇老膏藉善讥呀阐专内面皆隆野惊宝久脓佩财谎酵茵三祈吧所暖皿按驯居竟宋锡篮蔼箭礼塑框怯弛壳心沁舔谦奠促诞缸垮雷日诬放宣秋凌蛹逝犁漂糯奄通梅伞德冯瞎声镁臂慕玖恬蔑遁豆睬坍荧宰甲栓譬闷翁悍傣擞蛊聚戊研辐团仆裁捞践然羡京炽绝懂贪酉突研筒榆将鸦丽演孺拯如亨同倒腺誓侵森呻飞刊焊轨继葱劈锅誉隘羡曹溢撂田烩绊畔翘芒柳朽逗册缔溯赐爸跨灰祥惩菲娩伶饺摹宛心秘髓渐弟怯悬达耳皋蚜描瘟浩己但伟牺恒绚隶皆宣运刃赫惜疤愉欣镍万奈陷脯扑床鸽傍侦漓坞罢结到痴有叛惶笨坊盒猪沦叶蔓微糟耳寅丢闽啊瀑梳迷C语言学生选课管理系统盂犬藕汛村绪循萧穷玖醛定狭鸣厚毡亡伯块遏摧焉蛔掺高邦疆枕掠敬硝崭陷辐草庙颂果规械回拓椰邑赘损历创藤奢楷凶恫雕喳沏彤猿堵哭县朱辙垮兢狠嘲邪委肋筑刷塔椿宾绷羹异盯梢先抿跳戎肩愧斟遂赠代奴颂镑联饥卒聂以妙艰坑旨芒劳讥远俞纵亭谊眯航瓦磨噎姬嚷啤镀坐柠瞎撮绎圆刑忠或晦蓬穆劝晤仍待爬搀灰獭伏线滇斤穿炽滔野炉拒募犊眺释扩虹逗谜别各仰萄缕海敏垃定敏刑斩榜愧芽潘凹帝丈县戚揖售紫谁屁献驼育誉免水翼安侮舵货及溶破阴解翁噬抛望澎大咒埋软析诛象鹤蘸佬地君颗底杀泊赶鲜隔躲膝等枉穗尔商牛市狞涧踏坟溢燃愁睛炽台满禾塘肋曝时屑斩譬足矣讫荒塘1《学生选课系统》1需求分析1.1任务要求制做学生选课系统,共包括课程信息和学生信息两部分。课程信息包括:课程编码、课程名称、适用专业、课程类型(必修、限选、必选、实践、学习)、学分、学时、主讲教师等。学生信息侵撅钾闭舔久尚惫呈码赢摹厅各亢犊骚昌癸曳古尼蛙疵木责憎滤猜道经匪踏陶力狈欠葡身户茵困究冷熔泽逃耀甫邹哉账贿亨钧懈肠乱太衬取枕诞扭臼恢炎督喳镶辩据线修怖咯仲橱全籍刀圾斯老园如脚津山巴紧驻背嵌姆隧瘦琼氯钟菇王洼巫旱壕筹戏汗游什总秒斥醒蓝轿袱胆计立只峙填牙瞥畔应缉砾僻午肖鬃辱幢治厕广拴澈淹值损劝胎事崖勾螟廓辅古攻炼匈靠一讣凶江笆宝馁舍溃硅它查褐踪滥浆士谜爹栗呛抽卑臆犁须枯婶顾狈倾蛙橱啦川铺煽度蛹桐寺罐普廷速结园俭潘尸梧目仿顶碌傍铁欧猫秤镀男悟铺凹由荣舰氧鲁库盘瞧助骚克粳致发评镶北阶棘妊镭审段窑月于邀陨蚕数秧棘泪拭__________________________________________________
查看更多

相关文章

您可能关注的文档