学生选修课程系统设计 源程序清单
学生选课系统(详细设计说明书)
3.13尚未解决的问题114
4程序2(标识符)设计说明114
详细设计说明书
1
1.1
为了更好的描述软件结构以及系统各组成成分之间的相互关系,因此撰写详
细设计说明书。
1.2
a•待开发的软件系统的名称:大连交通大学学生选课系统;
b•本系统主要为方便广大学选课,避免选课高峰期选不上等问题;
{
printf("找不到%s文件!\n",);
exit(0);
}
p1=p2=(struct couse*)malloc(sizeof(struct couse));
fsca nf(fp,"%d%s%d%d%d", &p1-> num1,p1-> namel,&p1->score,
&p1- >n elepeo,&p1->Melepeo);
{
int nu ml;
char name1[20];
int score;
int n elepeo;//课程已选人数
int Melepeo;//课程人数上限
struct couse * n ext;
};
struct stude nt//学生信息结构体
{
int nu m2;
char name2[20];
c.本系统的受益人为:老师、学生和系统管理人员。
1.3
详见概要设计说明书。
1.4
【1】 张海藩,软件工程导论【M】北京:清华大学出版社2008年2月第五版
【2】 王珊、萨师煊,数据库系统概论【M】北京:高等教育出版社2006年5月第四版
2
C++程序设计源代码 学生选课系统
I
目录
第一章 设计题目的内容、任务及具体要求 ..................................1 第二章 总体设计思路 ....................................................2
2.1 程序功能 ........................................................... 2 2.2 模块关系 ........................................................... 2 2.3 总体框图 ............................................................ 3 第三章 功能模块的具体设计 ..............................................4 3.1 主函数模块的设计 ................................................... 4 3.2 显示课程信息模块的设计 ............................................. 7 3.3 查询模块模块的设计 ................................................. 8 3.4 增加模块的设计 ..................................................... 9 3.5 删除模块模块的设计 ................................................ 13 3.6 修改模块模块的设计 ................................................ 14 3.7 选课模块的设计 .................................................... 15 3.8 显示选课情况模块的设计 ............................................. 17 第四章 功能模块的调试及测试 ...........................................18 4.1 登陆界面和主菜单界面的显示 ........................................ 18 4.2 查询所有课程信息的显示结果 ........................................ 19 4.3 查询单个课程信息的显示结果 ........................................ 19 4.4 添加课程信息的显示结果 ............................................ 20 4.5 删除和修改课程信息的显示结果 ...................................... 20 4.6 选课的显示结果 .................................................... 21 4.7 查询选课情况的显示结果 ............................................ 22 4.8 退出 .............................................................. 22 总结 ..................................................................23 致 谢 ................................................................24 参考资料:............................................................. 25 附程序清单............................................................. 26
C语言学生选修课程系统设计
《高级语言程序设计》课程设计说明书设计题目:学生选修课程系统设计目录1.设计目的…………………….p22 .总体设计……………………p33.详细设计…………………….p44.调试与测试………………….p55.源程序清单与执行结果…….p66.建议和体会………………….p21一.设计目的(1)基本掌握面向过程程序设计的基本思路和方法;(2)达到熟练掌握C语言的基本知识和技能;(3)能够利用所学的基本知识和技能,解决简单的程序设计问题程序功能:(1)输入信息,密码保护(2)浏览信息(3)查询信息,提供两种查询方式(4)统计选课情况(5)进入选课操作(6)退出选课系统二.总体设计设计的流程图如下三、详细设计1、输入初始的课程信息:课程信息用文件保存,包括课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等相关信息。
在输入课程信息前要先输入管理员密码,从而限制权限;2、浏览模块:按照指示就可以找到课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等相关信息;3、查询模块:按照指示可以选择通过学分查询信息,或者选择课程性质来查询信息;4、选择模块:通过输入学号和课程编号来选择所修课程,并有统计功能;5、查阅模块:选择主菜单的选项,可以了解统计所选课程的人数;6、退出模块:在主菜单选择“0”退出选课系统。
四:调试与测试问题一、查询模块:其中包括课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等相关信息;当输入学分或者课程性质后,系统进行判断时,提示“输入错误!请重新输入!”解决办法及步骤:1、浏览所有课程中的学分是否为你所输入的值。
2、浏览所有课程中的课程性质是否有存在你所输入的值。
3、输出用于循环检查语句中的课程,发现乱码。
4、仔细分析乱码的原因,最后发现是变量的类型错误,错将课程性质的结构体指针变量定义为了其他类型的指针变量。
C课程设计学生选课系统设计
目录1系统需求分析................................................................................................ 错误!未定义书签。
2总体设计........................................................................................................ 错误!未定义书签。
3具体设计........................................................................................................ 错误!未定义书签。
4界面设计与各功能模块实现........................................................................ 错误!未定义书签。
5 系统调试....................................................................................................... 错误!未定义书签。
6 实验心得体会............................................................................................... 错误!未定义书签。
7附: 源程序251系统需求分析(1)、本系统是针对高校学生的选修课程而设计, 通过本系统高校学生可以很方便地进行自由选课。
重要的问题描述是(功能规定): n门课程, 每门课程有课程编号, 课程名称, 课程性质, 总学时, 授课学时, 实验或上机学时, 学分, 开课学期等信息, 学生可按规定(如总学分不得少于60)自由选课。
C语言课程设计实践报告——《学生选课管理系统》[内附程序源代码]
C语言大型作业实践报告计算机1001制作者:李菁华张兆丰秦恒加2011年6月题目:选修课程管理系统要求:假定有N门选修课,每门课有课程编号、名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期等信息。
学生可按要求(如总学分不能少于20学分)选课。
▪课程信息维护,如录入、修改、删除等,课程信息用文件保存。
▪课程信息浏览—输出。
▪学生选课功能。
▪查询功能包括:按学分、课程性质、学生等查询。
▪统计功能。
统计各门课程的选修人数。
▪本系统要有通用性、界面美观、操作方便。
要考虑系统安全。
具体算法流程设计思路(流程图):程序源代码:#include<stdio.h>#include<time.h>#include<string.h>#include<conio.h>main(){intx,xi,choice2,choice3,choice4,choice8,q=0,filein=0,limit=0,i,num,tonum,tcnum,ecnum ,score,term,student,A,io=0,screen=0;/*-----变量定义区-----,x为现有选修课数量,目前不能超过10,后续与主程序合并时移动到定义区,xi为选修课信息录入循环变量*/char choice1,choice5,choice6,choice7,name[10],kind[10];int carenum[10]={0,0,0,0,0,0,0,0,0,0}; /*用于统计每门课程选修人数*/int o,change=0,delatenum,e,u,stui=0,stuc=0;struct elective /*选修课程信息结构体*/{int electivenum; /*选修课编号*/char electivename[10]; /*选修课课名*/char electivekind[10]; /*选修课性质,暂定考试考查之分*/int totalclassnum; /*总课时*/int techclassnum; /*授课课时*/int expclassnum; /*实验课时*/int credits; /*学分*/int classterm; /*开课学期*/int students; /*此门课选修人数*/};struct muticlass /*学生选择的课程信息结构体*/{int stuchoice;int stuclassnum;char stuclassname;};struct student /*学生信息结构体*/{char stuname[10];long stunum;int stucredits;struct muticlass mutichoice[20]; /*暂定每名学生最多选20门课*/ /*本结构体为嵌套结构体,完善功能时请注意嵌套结构*/};struct student studentcare[100]; /*暂定最多可以有100名学生选课*/struct elective electivedata[10]; /*最多10门选修课*/FILE *electivefp; /*选修课程信息文件指针*/FILE *stufp; /*学生信息文件指针*/FILE *outfp; /*课程信息输出文件指针*/FILE *find;long now,midkey; /*now为密码算法中间变量,midkey为密码算法最终结果*/int chancenum=0,m; /*chancenum为输入密码错我次数计数变量,m为主目录选择判断变量*/unsigned long password,password2;struct tm *timenow; /*timenow为标准系统时间提取指针*/textcolor(WHITE);system("cls");gotoxy(20,12);cprintf("Welcome to the Elective management system"); /*一级主菜单*/gotoxy(1,24);system("pause");t2:system("cls");gotoxy(24,11);cprintf("1.Students elective course system");gotoxy(24,12);cprintf("2.Elective information output");gotoxy(24,13);cprintf("3.Elective course information searching");gotoxy(24,14);cprintf("4.I'm the administrator!");gotoxy(24,15);cprintf("5.Exit the system");gotoxy(24,16);scanf("%d",&choice8);switch(choice8){case 1: limit=0;goto students1;case 2: goto x11;case 3: goto x12;case 4: goto x7;case 5: goto x3;default: system("cls");gotoxy(20,12);cprintf("wrongchoice");gotoxy(1,24);system("pause");goto t2;}x7:textcolor(YELLOW); /*-----密码判断模块-----*/time(&now);midkey=now;midkey=midkey/100;password=midkey;return2:system("cls");gotoxy(22,15);cprintf("Enter 1 to refresh the password.");gotoxy(25,12);cprintf("Please enter your password\n");gotoxy(25,13);scanf("%ld",&password2); /*password2为用户输入的密码变量*/ if(chancenum<4) /*用户输入密码错误次数判断*/{if(password2==password){limit=1;goto x4;}else{if(password2==1){goto x7;}else{system("cls");gotoxy(22,12);textcolor(RED);cprintf("password error");gotoxy(18,13);cprintf("please enter the right password");gotoxy(20,14);cprintf("You have only %d chances",3-chancenum);gotoxy(1,24);system("pause");if(chancenum==3) /*连续4次输入错误密码判断*/{goto x6;}chancenum=chancenum+1;goto return2;}}}x6:system("cls");gotoxy(20,12);cprintf(" Sorry,you have null chance.");gotoxy(1,24);goto x5; /*-----密码判断模块结束-----*/x4:switch(limit){case 0: textcolor(YELLOW);goto students1;case 1: textcolor(GREEN);goto t3;default: textcolor(RED);system("cls");gotoxy(20,12);cprintf("None Limited");gotoxy(1,24);system("pause");textcolor(WHITE);goto t2;}t3:textcolor(GREEN); /*-----主程序开始-----*/system("cls");gotoxy(20,12);cprintf("Welcome to the Elective management system"); /*一级主菜单*/gotoxy(1,24);system("pause");return1:system("cls");gotoxy(24,3);cprintf("Elective management system"); /*选修课管理系统*/gotoxy(24,11);cprintf("1.Students elective course system."); /*学生选课系统*/gotoxy(24,12);cprintf("2.Elective course maintenance system."); /*课程信息维护系统*/gotoxy(24,13);cprintf("3.Exit the system."); /*退出系统*/gotoxy(24,14);scanf("%d",&o);switch(o){case 1: goto students1;case 2: goto electivemans1;case 3: goto x3;default: system("cls");gotoxy(12,12);cprintf("error choice,please make your choice again\n");gotoxy(1,24);system("pause");goto return1;}electivemans1:system("cls");change=0;gotoxy(24,3);cprintf("Elective management system"); /*二级主菜单*/gotoxy(24,11);cprintf("1.New elective database"); /*新建选修课程信息*/gotoxy(24,12);cprintf("2.Maintain elective database"); /*修改选修课程信息*/gotoxy(24,13);cprintf("3.Show the number of statistical electives"); /*统计每门课程选修人数*/gotoxy(24,14);cprintf("4.Elective information output"); /*课程信息输出*/gotoxy(24,15);cprintf("5.Return to the main menu"); /*返回主菜单*/gotoxy(24,16);scanf("%d",&m);switch(m) /*主目录跳转判断*/{case 1: goto x1;case 2: goto x2;case 3: goto x8;case 4: goto x11;case 5: goto return1;default: system("cls");gotoxy(12,12);cprintf("error choice,please make your choice again\n");gotoxy(1,24);system("pause");goto electivemans1;}x3:system("cls");gotoxy(25,12);cprintf("Thanks for using thissystem");gotoxy(1,24);goto x5;x1:electivefp=fopen("elective.dat","w+"); /*-----选修课程信息新建模块-----*/ if((electivefp=fopen("elective.dat","w+"))==NULL){gotoxy(12,12);cprintf("connot open this file");gotoxy(11,13);cprintf("Please debug this program");gotoxy(12,17);system("pause");goto z1;}system("cls");gotoxy(12,12);cprintf("Please according to clew input elective course information");gotoxy(1,24);system("pause");a1:system("cls");gotoxy(12,12);cprintf("Please input the elective quantity,Up to 10."); /*输入此次录入选修课程门数*/gotoxy(14,13);scanf("%d",&x); /*输入选修课总课程数*/if(x>10) /*总课程数小于10判断*/{system("cls");gotoxy(12,12);cprintf("Up to 10");gotoxy(1,24);system("pause");goto a1;}for(xi=0;xi<x;xi++) /*课程信息录入*/{r1:system("cls"); /*课程信息开始录入*/gotoxy(12,11);cprintf("Please enter the No.%d elective course numbers",xi+1);gotoxy(12,12);scanf("%d",&electivedata[xi].electivenum);if(q==1){goto z4;}r2:system("cls");gotoxy(12,11);cprintf("Please input the name of the No.%d elective course class",xi+1);gotoxy(12,12);scanf("%s",&electivedata[xi].electivename);if(q==1){goto z4;}r3:system("cls");gotoxy(12,11);cprintf("Please enter the No.%d elective properties,\"exam\" or \"examines\"",xi+1);gotoxy(12,12);scanf("%s",&electivedata[xi].electivekind);if(q==1){goto z4;}r4:system("cls");gotoxy(12,11);cprintf("Please enter the No.%d elective total class number",xi+1);gotoxy(12,12);scanf("%d",&electivedata[xi].totalclassnum);if(q==1){goto z4;}r5:system("cls");gotoxy(12,11);cprintf("Please enter the No.%d elective lecture class number",xi+1);gotoxy(12,12);scanf("%d",&electivedata[xi].techclassnum);if(q==1){goto z4;}r6:system("cls");gotoxy(12,11);cprintf("Please enter the No.%d elective the experiment class number",xi+1);gotoxy(12,12);scanf("%d",&electivedata[xi].expclassnum);if(q==1){goto z4;}r7:system("cls");gotoxy(12,11);cprintf("Please enter the No.%d elective credits",xi+1);gotoxy(12,12);scanf("%d",&electivedata[xi].credits);if(q==1){goto z4;}r8:system("cls");gotoxy(12,11);cprintf("Please enter the No.%d elective course semesters",xi+1);gotoxy(12,12);scanf("%d",&electivedata[xi].classterm);if(q==1){goto z4;}if(xi<(x-1)){system("cls");gotoxy(12,12);cprintf("This elective information recorded success, please enter the next");gotoxy(1,24);system("pause");}} /*课程信息录入结束*/z4:system("cls"); /*课程信息输入正确性判断*/gotoxy(12,12);cprintf("If information recorded correctly?");gotoxy(14,13);cprintf("Enter \"y\" for Yes,\"n\" for No");gotoxy(14,14);scanf("%c",&choice1);switch(choice1){case 121: goto z2;case 110: goto z3;default: system("cls");gotoxy(12,12);cprintf("Wrong choicePlease make it again.");gotoxy(1,24);system("pause");goto z4;}z3:{ /*错误信息定位*/system("cls");gotoxy(8,5);cprintf("What message entry errors?");gotoxy(12,6);cprintf("1.elective course numbers");gotoxy(12,7);cprintf(" of elective course class");gotoxy(12,8);cprintf("3.elective properties");gotoxy(12,9);cprintf("4.elective total class number");gotoxy(12,10);cprintf("5.elective lecture class number");gotoxy(12,11);cprintf("6.elective experiment class number");gotoxy(12,12);cprintf("7.elective credits");gotoxy(12,13);cprintf("8.elective course semesters");gotoxy(12,14);cprintf("9.Add a elective course lesson.");gotoxy(12,15);cprintf("10.Delate a elective course lesson.");gotoxy(12,16);scanf("%d",&choice2); /*错误项目定位*/system("cls");if(choice2==9){goto r9;}elseif(choice2==10){goto r10;}else{goto z6;}z6:system("cls");gotoxy(12,12);cprintf("Which group of curriculum information need to modify?"); gotoxy(12,13);scanf("%d",&choice3); /*错误组别定位*/if(choice3<x+1&&choice3>0){goto z7;}else{system("cls");gotoxy(12,12);cprintf("Wrong group,please enter again");gotoxy(1,24);system("pause");goto z6;}z7:xi=choice3-1;switch(choice2) /*错误信息修改*/{case 1: q=1;goto r1;case 2: q=1;goto r2;case 3: q=1;goto r3;case 4: q=1;goto r4;case 5: q=1;goto r5;case 6: q=1;goto r6;case 7: q=1;goto r7;case 8: q=1;goto r8;case 9: q=1;goto r9;case 10: q=1;goto r10;default: system("cls");gotoxy(12,12);cprintf("Wrong choice.Please make it again.");gotoxy(1,24);system("pause");goto z3;}}z2:if(change==0){goto write1;}else{remove("elective.dat");electivefp=fopen("elective.dat","w+");goto write1;}write1:fprintf(electivefp,"%d \n",x);for(xi=0;xi<x;xi++) /*将完善的课程信息以文件的形式保存在磁盘上*/{electivedata[xi].students=0;fprintf(electivefp,"%d %s %s %d %d %d %d %d %d\n",electivedata[xi].electivenu m,electivedata[xi].electivename,electivedata[xi].electivekind,electivedata[xi].totalcla ssnum,electivedata[xi].techclassnum,electivedata[xi].expclassnum,electivedata[xi].cr edits,electivedata[xi].classterm,electivedata[xi].students);}filein=1;z1:{system("cls");gotoxy(12,12);cprintf("Elective course information input success!");gotoxy(1,24);system("pause");}goto return1; /*返回主菜单*/x2:change=1;if(filein==1){goto z3;}electivefp=fopen("elective.dat","r+");fscanf(electivefp,"%d \n",&x);for(xi=0;xi<x;xi++){fscanf(electivefp,"%d %s %s %d %d %d %d %d %d\n",&electivedata[xi].electiven um,&electivedata[xi].electivename,&electivedata[xi].electivekind,&electivedata[xi].t otalclassnum,&electivedata[xi].techclassnum,&electivedata[xi].expclassnum,&electiv edata[xi].credits,&electivedata[xi].classterm,&electivedata[xi].students);}goto z3;r9:x=x+1;system("cls");gotoxy(12,11);cprintf("Please enter the No.%d elective course numbers",x);gotoxy(12,12);scanf("%d",&electivedata[x-1].electivenum);system("cls");gotoxy(12,11);cprintf("Please input the name of the No.%d elective course class",x);gotoxy(12,12);scanf("%s",&electivedata[x-1].electivename);system("cls");gotoxy(12,11);cprintf("Please enter the No.%d elective properties,\"exam\" or \"examines\"",x);gotoxy(12,12);scanf("%s",&electivedata[x-1].electivekind);system("cls");gotoxy(12,11);cprintf("Please enter the No.%d elective total class number",x);gotoxy(12,12);scanf("%d",&electivedata[x-1].totalclassnum);system("cls");gotoxy(12,11);cprintf("Please enter the No.%d elective lecture class number",x);gotoxy(12,12);scanf("%d",&electivedata[x-1].techclassnum);system("cls");gotoxy(12,11);cprintf("Please enter the No.%d elective the experiment class number",x); gotoxy(12,12);scanf("%d",&electivedata[x-1].expclassnum);system("cls");gotoxy(12,11);cprintf("Please enter the No.%d elective credits",x);gotoxy(12,12);scanf("%d",&electivedata[x-1].credits);system("cls");gotoxy(12,11);cprintf("Please enter the No.%d elective course semesters",x);gotoxy(12,12);scanf("%d",&electivedata[x-1].classterm);goto z4;r10:system("cls");gotoxy(12,12);cprintf("Which group of elective do you want to delate?");gotoxy(12,13);scanf("%d",&delatenum);if(delatenum>0||delatenum<x){for(e=0;e<x-delatenum;e++){electivedata[delatenum+e-1]=electivedata[delatenum+e];}x=x-1;remove("elective.dat");electivefp=fopen("elective.dat","w+");}else{system("cls");gotoxy(12,12);cprintf("we do not have that group of elective information");gotoxy(1,24);system("pause");goto r10;}goto z4;students1:{electivefp=fopen("elective.dat","r+");fscanf(electivefp,"%d \n",&x);for(xi=0;xi<x;xi++){fscanf(electivefp,"%d %s %s %d %d %d %d %d %d\n",&electivedata[xi].electivenum, &electivedata[xi].electivename,&electivedata[xi].electivekind,&electivedata[xi].total classnum,&electivedata[xi].techclassnum,&electivedata[xi].expclassnum,&electiveda ta[xi].credits,&electivedata[xi].classterm,&electivedata[xi].students);}stufp=fopen("stu.dat","r+");return4:system("cls");gotoxy(12,12);cprintf("Please enter your name");gotoxy(12,13);scanf("%s",&studentcare[stui].stuname);system("cls");gotoxy(12,12);cprintf("Please enter your student ID");gotoxy(12,13);scanf("%ld",&studentcare[stui].stunum);care2:system("cls");gotoxy(3,2);cprintf("Existing elective");for(u=0;u<x;u++){gotoxy(5,u+3);cprintf("%d.num:%dname:%s\n",u+1,electivedata[u].electivenum,electivedata[u].electivename);}gotoxy(5,x+4);cprintf("Which are you interested?");gotoxy(5,x+5);scanf("%d",&choice4);return3:system("cls");gotoxy(3,2);cprintf("Elective information");gotoxy(4,4);cprintf("Num:%d",electivedata[choice4-1].electivenum);gotoxy(4,5);cprintf("Name:%s",electivedata[choice4-1].electivename);gotoxy(4,6);cprintf("Kind:%s",electivedata[choice4-1].electivekind);gotoxy(4,7);cprintf("Total class:%d",electivedata[choice4-1].totalclassnum);gotoxy(4,8);cprintf("Tech class:%d",electivedata[choice4-1].techclassnum);gotoxy(4,9);cprintf("Exp class:%d",electivedata[choice4-1].expclassnum);gotoxy(4,10);cprintf("Credits:%d",electivedata[choice4-1].credits);gotoxy(4,11);cprintf("Class term:%d",electivedata[choice4-1].classterm);gotoxy(4,14);cprintf("Sure to choose this course? enter \"y\" for yes,\"n\" for no");gotoxy(4,15);scanf("%c",&choice5);switch(choice5){case 121: goto care1;case 110: goto care2;default: system("cls");gotoxy(12,12);cprintf("wrong choice");goto return3;}care1:if(stuc>0){for(xi=0;xi<stuc+1;xi++){if(choice4==studentcare[stui].mutichoice[xi].stuclassnum){system("cls");gotoxy(12,12);cprintf("Connot repeat courses");gotoxy(1,24);system("pause");goto care2;}}}carenum[choice4-1]++;electivedata[choice4-1].students=carenum[choice4-1];studentcare[stui].mutichoice[stuc].stuchoice=choice4;studentcare[stui].stucredits=studentcare[stui].stucredits+electivedata[choice4-1 ].credits;studentcare[stui].mutichoice[stuc].stuclassnum=electivedata[choice4-1].elective num;studentcare[stui].mutichoice[stuc].stuclassname=electivedata[choice4-1].electiv ename;x10:system("cls");gotoxy(12,12);cprintf("Course whether end? enter \"y\" for yes,\"n\" for no");gotoxy(12,13);scanf("%c",&choice6);switch(choice6){case 121: goto x9;case 110: stuc++;goto care2;default: system("cls");gotoxy(12,12);cprintf("wrongchoice");gotoxy(1,24);system("pause");goto x10;}x9:if(studentcare[stui].stucredits<20){system("cls");gotoxy(12,12);cprintf("Attention!Total credits less than 20!");gotoxy(1,24);system("pause");goto x10;}else{remove("stu.dat");stufp=fopen("stu.dat","a+");fprintf(stufp,"%d \n",stui);system("cls");gotoxy(12,12);cprintf("Elective success!");gotoxy(1,24);system("pause");return6:system("cls");gotoxy(12,12);cprintf("If others need courses? enter \"y\" for yes,\"n\" for no");gotoxy(12,13);scanf("%c",&choice7);switch(choice7){case 121: stui++;goto return4;case 110: goto return5;default: system("cls");gotoxy(12,12);cprintf("wrong choice");gotoxy(1,24);system("pause");goto return6;}return5: for(u=0;u<stui+1;u++){fprintf(stufp,"%s %ld %d\n",studentcare[u].stuname,studentcare[u].stunum,studentcare[u].stucredits);for(xi=0;xi<stuc+1;xi++){fprintf(stufp,"%d %d %s\n",studentcare[u].mutichoice[xi].stuchoice,studentcare[u].mutichoice[xi].stuclassnu m,studentcare[u].mutichoice[xi].stuclassname);}}remove("elective.dat");electivefp=fopen("elective.dat","w+");fprintf(electivefp,"%d \n",x);for(xi=0;xi<x;xi++) /*将完善的课程信息以文件的形式保存在磁盘上*/{fprintf(electivefp,"%d %s %s %d %d %d %d %d %d\n",electivedata[xi].electivenum,el ectivedata[xi].electivename,electivedata[xi].electivekind,electivedata[xi].totalclassnu m,electivedata[xi].techclassnum,electivedata[xi].expclassnum,electivedata[xi].credits ,electivedata[xi].classterm,electivedata[xi].students);}switch(limit){case 1: goto return1;case 0: goto t2;default: goto t2;}}}x8:electivefp=fopen("elective.dat","r+");fscanf(electivefp,"%d \n",&x);for(xi=0;xi<x;xi++){fscanf(electivefp,"%d %s %s %d %d %d %d %d %d\n",&electivedata[xi].electivenum, &electivedata[xi].electivename,&electivedata[xi].electivekind,&electivedata[xi].total classnum,&electivedata[xi].techclassnum,&electivedata[xi].expclassnum,&electiveda ta[xi].credits,&electivedata[xi].classterm,&electivedata[xi].students);}system("cls");gotoxy(3,4);cprintf("Elective toll");for(u=0;u<x;u++){gotoxy(3,u+6);cprintf("%s : %d",electivedata[u].electivename,electivedata[u].students);}gotoxy(1,18);system("pause");goto electivemans1;x11:system("cls"); /*-----查找模块-----*/electivefp=fopen("elective.dat","r+");fscanf(electivefp,"%d \n",&x);for(xi=0;xi<x;xi++){fscanf(electivefp,"%d %s %s %d %d %d %d %d %d\n",&electivedata[xi].electivenum, &electivedata[xi].electivename,&electivedata[xi].electivekind,&electivedata[xi].total classnum,&electivedata[xi].techclassnum,&electivedata[xi].expclassnum,&electiveda ta[xi].credits,&electivedata[xi].classterm,&electivedata[xi].students);}outfp=fopen("electiveinformation.doc","w+");fprintf(outfp,"选修课程信息\n\n\n\n");for(xi=0;xi<x;xi++){fprintf(outfp,"课程编号:%d \n课程名:%s \n课程种类:%s \n总课时:%d \n教学课时:%d \n实验课时:%d \n学分:%d \n开课学期:%d \n已选人数:%d\n\n\n",electivedata[xi].electivenum,electivedata[xi].electivename,electivedat a[xi].electivekind,electivedata[xi].totalclassnum,electivedata[xi].techclassnum,electiv edata[xi].expclassnum,electivedata[xi].credits,electivedata[xi].classterm,electivedata [xi].students);}switch(limit){case 1: goto electivemans1;case 0: goto t2;default: goto t2;}x12:{find=fopen("elective.dat","r+");fscanf(find,"%d \n",&x);for(i=0;i<x;i++){fscanf(find,"%d %s %s %d %d %d %d %d %d\n",&electivedata[i].electivenum,&el ectivedata[i].electivename,&electivedata[i].electivekind,&electivedata[i].totalclassnu m,&electivedata[i].techclassnum,&electivedata[i].expclassnum,&electivedata[i].credi ts,&electivedata[i].classterm,&electivedata[i].students);}xx:io=0;system("cls");gotoxy(7,3);printf("a:search by electivenum;\n b:search by electivename;\nc:search by electivekind;\n d:search by totalclassnum;\n e:search by techclassnum;\n f:search by expclassnum;\n g:search by credits;\n h:search by classterm;\n i:search by students\n");gotoxy(7,12);cprintf("j:Return to the main menu");gotoxy(7,13);scanf("%c",&A);switch(A){case 97: goto a;case 98: goto b;case 99: goto c;case 100: goto d;case 101: goto e;case 102: goto f;case 103: goto g;case 104: goto h;case 105: goto i;case 106: goto t2;default: system("cls");gotoxy(24,12);cprintf("wrongchoice\n");system("pause");goto xx;}a:screen=0;{system("cls");gotoxy(24,12);cprintf("Please write down the electivenum\n");gotoxy(24,13);scanf("%d",&num);system("cls");for(i=0; i<x; i++){if(electivedata[i].electivenum==num){if(screen>0){system("pause");system("cls");}cprintf("Here is the information you want:\n");cprintf("num:%d\n",electivedata[i].electivenum);cprintf("name:%s\n",electivedata[i].electivename);cprintf("kind:%s\n",electivedata[i].electivekind);cprintf("class:%d\n",electivedata[i].totalclassnum);cprintf("techclass:%d\n",electivedata[i].techclassnum);cprintf("expclass:%d\n",electivedata[i].expclassnum);cprintf("credits:%d\n",electivedata[i].credits);cprintf("term:%d\n",electivedata[i].classterm);cprintf("students:%d\n",electivedata[i].students);io=1;screen=screen+1;} }if(io==0){system("cls");cprintf("wrong number");gotoxy(1,24);system("pause");goto xx;}system("pause");goto xx;}b:screen=0;{system("cls");gotoxy(24,12);cprintf("Please write down the electivename\n");gotoxy(24,13); scanf("%s",&name);system("cls");for(i=0; i<x; i++){if(strcmp(electivedata[i].electivename,name)==0){if(screen>0){system("pause");system("cls");}cprintf("Here is the information you want:\n");cprintf("num:%d\n",electivedata[i].electivenum);cprintf("name:%s\n",electivedata[i].electivename);cprintf("kind:%s\n",electivedata[i].electivekind);cprintf("class:%d\n",electivedata[i].totalclassnum);cprintf("techclass:%d\n",electivedata[i].techclassnum);cprintf("expclass:%d\n",electivedata[i].expclassnum);cprintf("credits:%d\n",electivedata[i].credits);cprintf("term:%d\n",electivedata[i].classterm);cprintf("students:%d\n",electivedata[i].students);io=1;screen=screen+1;}}if(io==0){system("cls");cprintf("wrong number");gotoxy(1,24);system("pause");goto xx;}system("pause");goto xx;}c:screen=0;{system("cls");gotoxy(24,12);cprintf("Please write down the electivenkind\n");gotoxy(24,13); scanf("%s",&kind);system("cls");for(i=0; i<x; i++){if(strcmp(electivedata[i].electivekind,kind)==0){if(screen>0){system("pause");system("cls");}cprintf("Here is the information you want:\n");cprintf("num:%d\n",electivedata[i].electivenum);cprintf("name:%s\n",electivedata[i].electivename);cprintf("kind:%s\n",electivedata[i].electivekind);cprintf("class:%d\n",electivedata[i].totalclassnum);cprintf("techclass:%d\n",electivedata[i].techclassnum);cprintf("expclass:%d\n",electivedata[i].expclassnum);cprintf("credits:%d\n",electivedata[i].credits);cprintf("term:%d\n",electivedata[i].classterm);cprintf("students:%d\n",electivedata[i].students);io=1; screen=screen+1;} }if(io==0){system("cls");cprintf("wrong number");gotoxy(1,24);system("pause");goto xx;}system("pause");goto xx;}d:screen=0;{system("cls");gotoxy(24,12);cprintf("Please write down the totalclassnum\n");gotoxy(24,13); scanf("%d",&tonum);system("cls");for(i=0; i<x; i++){if(electivedata[i].totalclassnum==tonum){if(screen>0){system("pause");system("cls");}cprintf("Here is the information you want:\n");cprintf("num:%d\n",electivedata[i].electivenum);cprintf("name:%s\n",electivedata[i].electivename);cprintf("kind:%s\n",electivedata[i].electivekind);cprintf("class:%d\n",electivedata[i].totalclassnum);cprintf("techclass:%d\n",electivedata[i].techclassnum);cprintf("expclass:%d\n",electivedata[i].expclassnum);cprintf("credits:%d\n",electivedata[i].credits);cprintf("term:%d\n",electivedata[i].classterm);cprintf("students:%d\n",electivedata[i].students);io=1;screen=screen+1;} }if(io==0){system("cls");cprintf("wrong number");gotoxy(1,24);system("pause");goto xx;}system("pause");goto xx;}e:screen=0;{system("cls");gotoxy(24,12);cprintf("Please write down the techclassnum\n");gotoxy(24,13); scanf("%d",&tcnum);system("cls");for(i=0; i<x; i++){if(electivedata[i].techclassnum==tcnum){if(screen>0){system("pause");system("cls");}cprintf("Here is the information you want:\n");cprintf("num:%d\n",electivedata[i].electivenum);。
学生选课管理系统设计(c语言)课程设计
题目一、学生选课管理系统目录第一部分:课程设计名称、目的、要求... 第二部分:程序总体设计思路........... 第三部分:程序功能划分、图示及流程图. 第四部分:程序设计数据、运行结果..... 第五部分:程序的优缺点............... 第六部分:心得体会................... 第七部分:附录(源程序)............. 第八部分:附录(参考文献)...........第一部分:课程设计名称、目的、要求名称:学生选修课程系统设计目的:运用C语言提高解决实际问题的能力实验环境:Microsoft Visual C++ 6.0内容:假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。
【功能】系统以菜单方式工作课程信息录入功能(课程信息用文件保存)--输入课程信息浏览功能--输出查询功能:(至少一种查询方式)--算法按学分查询按课程性质查询学生选修课程(可选项)第二部分:程序总体设计思路由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。
具体的设计思路如下:程序的要求是设计学生选修课管理系统,对选修课程能够进行录入和修改操作等,要求有菜单界面和退出功能。
首先,考虑到程序的数据输入,可以设置一个管理员登陆选项,通过该选项进入管理员界面,进行选修课的录入和修改操作,最后将录入的课程保存到相应的文件中。
然后定义各种函数的功能包括查看,查询,删除等。
另一个为学生登陆界面,该界面学生可以进行课程选择和浏览查询等操作。
在进行该操作之前需要对管理员保存的文件进行读取,然后对其中的内容进行查询等,在学生选好课程以后,可以将其选好的课程保存于相应的文件中,以便下次进行修改。
通过函数的层层调用来实现程序的逻辑结构。
中间通过文件的打开和关闭实现对文件内部所包含的数据的操作。
Linux环境下C语言《学生选课管理系统》全源代码,含流程图、个人总结.(对您有用的话顶一下!)
//第一部分:结构体、流程图、总结………………Page1//第二部分C语言源代码………………Page10//第一部分一、简介:本系统称为“学生选课管理系统”,主要功能是实现对学生信息和教师信息的管理,以及学生成绩的管理。
该系统分为三级身份:管理员、教师、学生。
其中管理员的权限有:1)、添加学生或老师的信息,2)、删除学生或老师信息,3、修改学生或老师信息,4)查找学生或老师信息。
教师的权限:1)仅可以修改自己密码,2)查看所有关于自身的信息,3)修改其所授科目的学生科目的成绩。
学生的权限:仅可以修改自己的密码,查看所有有关自己的信息,另外还要可以选课。
二、设计思想;[1]:分别把学生信息、科目信息和教师—科目信息建立三个链表。
//科目信息typedef struct subject_info{float SUB_notes[3]; //科目成绩int SUB_csscore; //科目学分char SUB_csname[32]; //科目名称struct list_head list;}SUB;//学生信息typedef struct STU_info{float STU_totalscore; //总分int STU_id; //学号int STU_age; //年龄int STU_grade; //年级int STU_place; //名次char STU_name[32]; //姓名char STU_psword[32]; //密码SUB subject[3];struct list_head list;}STU;//教师信息:typedef struct TCH_info{int TCH_id; //工号char TCH_name[32]; //姓名char TCH_psword[32]; //密码SUB s ubject[1];struct list_head list;}TEC;//管理员信息typedef struct ADM_info{char ADM_usename[8];char ADM_psword[6];}ADM;ADM use[1];#define Y 'y'#define N 'n'#define S_FLAG 's'#denfine T_FLAG 't'#define A_FLAG 'a'void gettime(); //获取当前时间void main_menu(); //主菜单void stu_login(); //学生登录void openf (char *filename); //判断文件是否存在void tec_login(); //老师登录void adm_login(); //管理员登录void adm_nextmenu(); //管理员2级菜单void a_updt_stuinfo(); //操作学生信息void a_updt_tecinfo(); //操作老师信息void a_updt_myinfo(); //操作管理员自身信息void a_add_stuinfo(); //添加学生信息void a_add_tecinfo(); //添加老师信息void a_mdify_stuinfo(); //修改学生信息void a_del_info(char flag); //删除信息void a_mdify_tecinfo(); //修改老师信息void a_seek_stuinfo(); //查找学生信息void a_seek_tecinfo(); //查找老师信息void show (char flag); //显示信息void save (char flag,char system); //保存信息void check(char flag); //验证密码void commom(); //公用函数集合void a_show(char flag); //显示信息void a_seek_info(char flag); //查找信息void a_mdify_info(char flag); //修改学生或老师信息void stu_nextmenu(int tmpid); //学生菜单void tec_nextmenu(int tmpid); //老师菜单void s_show_myinfo(int tmpid); //学生显示自己信息void t_show_myinfo(int tmpid); //教师显示自己信息void s_updt_myinfo(int tmpid); //学生更新自己信息void s_select_subject(int tmpid); //学生选课void t_updt_stuinfo(int tmpid); //教授更新自己信息void t_updt_myinfo(int tmpid); //教授显示自己信息void readf(); //从文件中读取信息void stu_sort(); //对学生链表排序float ave (float core[3]); //求平均成绩float (*f)(float core[3]); //int inputpsword(char *pass); //输入密码回显* [2]: 模块分析开始主界面E:exit 1:student 2:teacer 3:admin退出stu_login tec_login amd_login student_nextmenu teacher_menu adminmenustudent_nextmenustu_show_myinfo stu_update_mypsword stu_select_mysubject 返回上一级\teachertec_show_myinfo() tec_update_mypsword(); tec_next_menu(); 返回上一级tec_next_menu()tec_ show_stuinfo() tec__update_stuscore(); 返回上一级输入信息、保存修改保存adm_nextmenuADM_update_stuinfo ADM_update_tecinfo ADM_updat_myinfo 返回上一级Add del update show Add del update show change_mypsword[3]: 流程图1 2 3 4NY YY Y Y Y开始 主界面login 1、2、3、4tec_logi stu_login exit adm_login loginlogin loginqNY1 2 3 4Y NNNY Y Ystu_login 1、2.、3、4 show_info chag_pswod sign_sub returnY1 2 3 4YN NNY Y Ytec_login 1、2.、3、4 show_info chag_pswod up_stuinfo returnY1 2 3 4YNNNY Y Yadm_login1、2.、3、4 updt_stuinfo chag_pswod updt_tecinfo return三、总结《学生选课管理系统》,5天。
学生选课系统详细设计文档1
学生选课系统详细设计文档执笔人1引言 (3)1.1编写目的 (3)1.3定义 (3)1.4参考资料 (3)2程序系统的结构 (4)3程序1(标识符)设计说明 (10)3.1功能 (15)3.2性能 (15)3.3输人项 (15)3.4输出项 (15)3.5算法 (15)3.6流程逻辑 (15)3.7接口 (16)3.8存储分配 (16)3.9注释设计 (16)3.10限制条件 (17)3.11测试计划 (17)4用户界面设计说明. (18)4.1用户界面说明 (19)4.2用户界面与模块关系表 (20)详细设计说明书1引言1.1编写目的该详细设计说明书的目的在于根据需求说明书与概要设计说明书提出该系统的详细设计,即系统的详细架构,主要包括系统的模块划分、程序系统的结构、各个模块的流程以及各层次中每个程序的设计考虑。
用户群体为需要选课的学生。
1.2定义(1)Active Server Pages (ASP) 是服务器端脚本编写环境,是由Server端脚本、对象及组件拓展过的标准主页使用它可以创建和运行动态、交互的Web 页和基于Web 的功能强大的应用程序。
ASP程序是由文本、HTML标记和脚本组合而成的。
在ASP程序中,脚本通过分隔符与文本和HTML标记区分开来。
ASP用分隔符〈%和%〉包括脚本命令。
由分隔符括起的命令称为主脚本命令,这些命令由主脚本语言进行处理。
在ASP分隔符〈%和% 〉内,可以包括主脚本语言允许的任何语句、表达式和操作符等。
(2)SQL Server 是一个具备完全Web 支持的数据库产品,提供了对可扩展标记语言(XML) 的核心支持以及在Internet 上和防火墙外进行查询的能力,提供了以Web 标准为基础的扩展数据库编程功能。
丰富的XML 和Internet 标准支持允许使用内置的存储过程以XML 格式轻松存储和检索数据。
1.4参考资料1.魏志华.《软件工程》.北京:清华大学出版社,20052.张海藩.《软件工程导论》.北京:清华大学出版社,20133. Roger S. Pressman.软件工程-实践者之路第五版.影印.清华大学出版社.20012程序系统的结构1.总体模块如图1所示。
C程序设计学生选修课管理系统
目录●组内成员 (3)●程序功能模块划分 (3)●数据设计 (4)●主函数代码 (5)●程序执行后的部分效果图 (14)●小组成员分工 (18)●程序开发体会 (18)学生选修课系统说明书班级:统本工管1102班组长:黄滔组员:简利林、白云鹏、王巧云、柴建彬系统功能模块划分数据设计为了方便使用结构此系统结构均为全局类型定义struct class_type{int id;char name[20];char xingzhi[20];int ztime;int ktime;int stime;int fen;int xueqi;}cla[100];struct student_type{int id;char name[20];int kechengid;char kechengname[20];}stu[100];主函数代码:void caidan(){int n;system("cls");printf("--------------------------------学生选修课程系统--------------------------------\n\n");printf(" 1.课程信息录入");printf(" 2.课程信息管理");printf(" 3.课程信息查询");printf(" 4.学生选修课程");printf(" 5.退出系统");printf("请输入你的选择,按回车确定:");scanf("%d",&n);if (n==1) shuru();else if (n==2) guanli();else if (n==3) chaxun();else if (n==4) xuesheng();else if (n==5){system("cls");save();printf("谢谢您对本系统的支持!\n您修改过的信息已经保存!\n");system("pause");exit(0);}else{system("cls");printf("请重新输入正确的选项(1-5)!\n");system("pause");caidan();}}void shuru(){int c;int k;system("cls");printf("----------------------------------课程信息录入----------------------------------");printf("请输入你要增加的课程数,输入0则返回主菜单!\n");scanf("%d",&c);while (c<0&&c>100){printf("数据输入有误,请重新输入!(输入数据为0-100)\n");scanf("%d",&c);}if (c==0)caidan();else if(c+i>100)printf("储存区最多可存储100门课程,总输入个数即将超过100,我们最多只能帮您保存100个数据!\n");else{system("cls");for(k=0;k<c;k++){cla[i+k].id=i+k;printf("课程编号%d",cla[i+k].id+1);printf("\n请输入课程名称: ");scanf("%s",cla[i+k].name);printf("\n请输入课程性质: ");scanf("%s",cla[i+k].xingzhi);printf("\n请输入课程总学时: ");scanf("%d",&cla[i+k].ztime);printf("\n请输入课程授课学时: ");scanf("%d",&cla[i+k].ktime);printf("\n请输入课程实验或上机学时: ");scanf("%d",&cla[i+k].stime);printf("\n请输入课程学分: ");scanf("%d",&cla[i+k].fen);printf("\n请输入课程开课学期: ");scanf("%d",&cla[i+k].xueqi);}i=i+c;save();printf("输入完成,保存信息完成!\n");system("pause");caidan();}}void liulan(){int m;system("cls");printf("----------------------------------课程信息浏览----------------------------------");for(m=0;m<i;m++){printf("\n课程编号%d",cla[m].id+1);printf("\n课程名称: %s",cla[m].name);printf("\n课程性质: %s",cla[m].xingzhi);printf("\n课程总学时: %d",cla[m].ztime);printf("\n课程授课学时: %d",cla[m].ktime);printf("\n课程实验或上机学时: %d",cla[m].stime);printf("\n课程学分: %d",cla[m].fen);printf("\n课程开课学期: %d",cla[m].xueqi);printf("\n\n");}system("pause");caidan();}void chaxun(){int n;system("cls");printf("----------------------------------课程信息查询----------------------------------");printf(" 1.按课程编号查询");printf(" 2.按课程名称查询");printf(" 3.按课程性质查询");printf(" 4.按课程总学时查询");printf(" 5.按课程授课学时查询");printf(" 6.按课程实验或上机学时查询");printf(" 7.按课程学分查询");printf(" 8.按课程开课学期查询");printf(" 9.返回主菜单");printf("请输入你的选择,按回车确定:");scanf("%d",&n);if (n==1) cxid();else if (n==2) cxname();else if (n==3) cxxz();else if (n==4) cxzt();else if (n==5) cxkt();else if (n==6) cxst();else if (n==7) cxf();else if (n==8) cxxq();else if (n==9) caidan();else{system("cls");printf("请重新输入正确的选项(1-9)!\n");system("pause");chaxun();}}void read(){int j,k;FILE *fp,*ap;if((fp=fopen("class.txt","rt"))==NULL){system("cls");printf("未找到已存数据纪录,您需要重新输入数据!\n"); i=0;system("pause");shuru();}else{system("cls");printf("数据读取成功,您可以正常使用本系统!\n");for(j=0;j<100;j++){fread(&cla[j],sizeof(cla[j]),1,fp);if(cla[j].id==-1)break;}i=j;fclose(fp);if((ap=fopen("student.txt","rt"))==NULL)printf("\n注:学生信息为空\n!");for(k=0;k<100;k++){fread(&stu[k],sizeof(stu[k]),1,fp);if(stu[k].id==-1)break;}e=k;fclose(ap);system("pause");caidan();}}void save(){FILE *fp,*ap;int l;if((fp=fopen("class.txt","wt"))==NULL)printf("打开课程文件错误!\n");for(l=0;l<i;l++)if(fwrite(&cla[l],sizeof(cla[l]),1,fp)!=1)printf("课程数据写入失败!");fclose(fp);if((ap=fopen("student.txt","wt"))==NULL)printf("打开学生文件错误!\n");for(l=0;l<e;l++)if(fwrite(&stu[l],sizeof(stu[l]),1,fp)!=1)printf("学生数据写入失败!");fclose(ap);}void guanli(){int n;system("cls");printf("--------------------------------学生选修课程管理--------------------------------\n\n"); printf(" 1.课程信息浏览"); printf(" 2.课程信息修改"); printf(" 3.课程信息删除"); printf(" 4.返回主菜单"); printf("请输入你的选择,按回车确定:");scanf("%d",&n);if (n==1) liulan();else if (n==2) xiugai();else if (n==3) shanchu();else if (n==4) caidan();else{system("cls");printf("请重新输入正确的选项(1-4)!\n");system("pause");caidan();}}void shanchu(){int n,x;system("cls");printf("请输入您要删除的课程编号,输入0为返回上一级菜单:\n");scanf("%d",&n);if(n>i&&n<0){printf("本编号信息为空,请重新输入!");system("pause");shanchu();}else if (n==0) guanli();else{FILE *fp;if((fp=fopen("class.txt","wt+"))==NULL){system("cls");printf("打开失败\n");system("pause");guanli();}else{system("cls");printf("正在删除,请稍候...\n");for(x=n-1;x<i;x++)fread(&cla[x],sizeof(cla[x]),1,fp);for(x=n-1;x<i;x++){strcpy(cla[x].name,cla[x+1].name);strcpy(cla[x].xingzhi,cla[x+1].xingzhi);cla[x].ztime=cla[x+1].ztime;cla[x].ktime=cla[x+1].ktime;cla[x].stime=cla[x+1].stime;cla[x].fen =cla[x+1].fen;cla[x].xueqi=cla[x+1].xueqi;}i--;save();fclose(fp);system("pause");guanli();}}}void xiugai(){int a;system("cls");printf("请输入您需要修改的课程编号,输入0为返回上一级菜单:"); scanf("%d",&a);if(a>i&&a<0){printf("本编号信息为空,请重新输入!");system("pause");xiugai();}else if (a==0) guanli();else{FILE *fp;if((fp=fopen("class.txt","wt+"))==NULL){system("cls");printf("打开失败\n");system("pause");guanli();}printf("课程编号%d",a);printf("\n请输入课程名称:");scanf("%s",cla[a-1].name);printf("\n请输入课程性质:");scanf("%s",cla[a-1].xingzhi);printf("\n请输入课程总学时:");scanf("%d",&cla[a-1].ztime);printf("\n请输入课程授课学时:");scanf("%d",&cla[a-1].ktime);printf("\n请输入课程实验或上机学时:");scanf("%d",&cla[a-1].stime);printf("\n请输入课程学分:");scanf("%d",&cla[a-1].fen);printf("\n请输入课程开课学期:");scanf("%d",&cla[a-1].xueqi);save();fclose(fp);guanli();}}void cxid(){system("cls");int a;printf("----------------------------------课程信息查询----------------------------------"); printf("\n请输入您需要查找的课程编号:\n");scanf("%d",&a);printf("\n课程编号%d",cla[a-1].id+1);printf("\n课程名称: %s",cla[a-1].name);printf("\n课程性质: %s",cla[a-1].xingzhi);printf("\n课程总学时: %d",cla[a-1].ztime);printf("\n课程授课学时: %d",cla[a-1].ktime);printf("\n课程实验或上机学时: %d",cla[a-1].stime);printf("\n课程学分: %d",cla[a-1].fen);printf("\n课程开课学期: %d\n",cla[a-1].xueqi);system("pause");chaxun();}void xuesheng(){int n;system("cls");printf("----------------------------------学生选修课程----------------------------------\n\n");printf(" 1.学生信息录入");printf(" 2.学生选课察看");printf(" 3.学生信息修改");printf(" 4.学生信息删除");printf(" 5.返回主菜单");printf("请输入你的选择,按回车确定:");scanf("%d",&n);if (n==1) xsshuru();else if (n==2) xschakan();else if (n==3) xsxiugai();else if (n==4) xsshanchu();else if (n==5) caidan();else{system("cls");printf("请重新输入正确的选项(1-5)!\n");system("pause");xuesheng();}}void xsshuru(){int c;int k;system("cls");printf("----------------------------------学生信息录入----------------------------------");printf("请输入你要增加的学生数,输入0则返回主菜单!\n");scanf("%d",&c);while (c<0&&c>100){printf("数据输入有误,请重新输入!(输入数据为0-100)\n");scanf("%d",&c);}if (c==0)caidan();else if(c+e>100)printf("储存区最多可存储100门课程,总输入个数即将超过100,我们最多只能帮您保存100个数据!\n");else{system("cls");for(k=0;k<c;k++){stu[e+k].id=e+k;printf("学生编号%d",stu[e+k].id+1);printf("\n请输入学生姓名: ");scanf("%s",stu[e+k].name);printf("\n请输入课程编号: ");scanf("%d",&stu[e+k].kechengid);strcpy(stu[e+k].kechengname,cla[stu[e+k].kechengid-1].name);}e=e+c;save();printf("输入完成,保存信息完成!\n");system("pause");xuesheng();}}void xschakan(){int m;system("cls");printf("----------------------------------学生信息浏览----------------------------------"); for(m=0;m<e;m++){printf("\n学生编号: %d",stu[m].id+1);printf("\n学生姓名: %s",stu[m].name);printf("\n课程编号: %d",stu[m].kechengid);printf("\n课程名称: %s",stu[m].kechengname);printf("\n\n");}system("pause");xuesheng();}void xsxiugai(){int a;system("cls");printf("请输入您需要修改的学生编号,输入0为返回上一级菜单:");scanf("%d",&a);if(a>e&&a<0){printf("本编号信息为空,请重新输入!");system("pause");xsxiugai();}else if (a==0) xuesheng();else{FILE *ap;if((ap=fopen("student.txt","wt+"))==NULL){system("cls");printf("打开失败\n");system("pause");xuesheng();}printf("学生编号: %d",a);printf("\n请输入学生姓名:");scanf("%s",stu[a-1].name);printf("\n请输入课程编号:");scanf("%d",&stu[a-1].kechengid);strcpy(stu[a-1].kechengname,cla[stu[a-1].kechengid-1].name);save();fclose(ap);xuesheng();}程序执行后的部分效果图封面效果:主菜单课程信息管理菜单课程信息查询课程信息查询信息录入信息保存●小组成员分工情况:姓名完成任务占任务总工作量比例得分(满分100)黄滔程序编写20%白云鹏程序搜集部分编写20%简利林循环程序编写20%柴建彬程序编写20%王巧云程序编写20%●程序开发体会:黄滔:时光飞逝,弹指之间,一学年已经过去了,能和大家一起开发一个这样的程序是我的荣幸。
学生选课管理系统课程设计c语言
学生选课管理系统课程设计 - C语言引言学生选课管理系统是一个用于学校管理学生选课信息的重要工具。
本文将介绍如何使用C语言设计一个简单的学生选课管理系统,主要功能包括学生信息管理、课程信息管理、选课和退课功能等。
通过本文学习,读者可以初步了解一个基本的学生选课管理系统是如何设计和实现的。
功能设计学生信息管理•学生信息包括学生姓名、学号、性别、年龄等基本信息。
•实现学生信息的增、删、改、查功能。
课程信息管理•课程信息包括课程名称、课程编号、授课教师等信息。
•实现课程信息的增、删、改、查功能。
选课功能•学生可以根据课程编号进行选课操作。
•当选课成功时,系统将更新学生选课信息和课程选课人数。
退课功能•学生可以根据已选课程编号进行退课操作。
•当退课成功时,系统将更新学生选课信息和课程选课人数。
系统设计数据结构设计•学生信息和课程信息可以采用结构体来保存。
•使用链表或数组来管理学生和课程信息数据。
模块设计•设计学生管理模块、课程管理模块、选课模块和退课模块。
•每个模块实现对应功能,便于代码的维护和扩展。
C语言代码实现// 学生结构体typedef struct {char name[50];int id;char gender;int age;} Student;// 课程结构体typedef struct {char name[50];int id;char teacher[50];int max_num;int cur_num;} Course;// 学生信息管理函数void addStudent(Student* students, int* count);void deleteStudent(Student* students, int* count);void updateStudent(Student* students, int count);void searchStudent(Student* students, int count);// 课程信息管理函数void addCourse(Course* courses, int* count);void deleteCourse(Course* courses, int* count);void updateCourse(Course* courses, int count);void searchCourse(Course* courses, int count);// 选课和退课函数void selectCourse(Student* students, int s_count, Course* courses, int c_count);void withdrawCourse(Student* students, int s_count, Course* courses, in t c_count);// 主函数int main() {Student students[100];Course courses[50];int s_count = 0;int c_count = 0;// 主程序逻辑return0;}总结通过本文的学习,读者可以初步了解学生选课管理系统的设计和实现过程。
学生选修课程系统设计
摘要C 语言一共只有32 个关键字,9 种控制语句,程序书写形式自由,主要用小写字母表示。
它把高级语言的基本结构和语句与低级语言的实用性结合起来。
C语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
运算符丰富,C 语言的运算符包含的范围很广泛,共有34 种运算符。
C 语言把括号、赋值、强制类型转换等都作为运算符处理。
从而使C 语言的运算类型极其丰富,表达式类型多样化。
灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
数据结构丰富,C 语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。
能用来实现各种复杂的数据结构的运算。
并引入了指针概念,使程序效率更高。
另外C 语言具有强大的图形功能,支持多种显示器和驱动器。
且计算功能、逻辑判断功能强大。
C 语言的三种程序结构:顺序结构、选择结构、循环结构、结构体和数组等。
学号C语言是学习单片机的重要前提,许多的控制系统都需要C语言来编程,所以学号C语言是必须的。
关键词:学生选修课程系统;C语言课程设计;模块化程序设计;信息录入;浏览信息;查询;选课AbstractC language a total of only 32 key, 9 kinds of control statements, and program written form freedom, mainly use lowercase letter said. It is the basic structure of the high-level language and statement and low-level language practical combined.C language can be like assembly language registration, byte and address for operation, and these three are the most basic computer.The unit of work.Operator is rich, C language operator contains range is very wide, a total of 34 kinds of operator. C language brackets, assignment, forced type conversion, etc as operator processing. So that the C language arithmetic class.Type is extremely rich expression type diversification. Agile use all sorts of operator can realize in other high-level languages.To realize in the operation.Data structure is rich, C language data types are: integer, real, character type, array type, pointer type, structure, type, Shared body type, etc. Can be used to realize all kinds of complicated data structure of the operation.And introduced the pointer concept, make the process more efficient. Another C language has powerful graphics functions, supportA variety of display and drive. And the calculating function, logic powerful.C language three program structure: sequence structure, choice structure, circulation structure, structure, and array, etc.Student id C language learning is an important prerequisite for single chip microcomputer, many control system need C language programming,So student id C language is a must.Key words:Student elective system; C language curriculum design; Modularized program design; Information recorded; Browse information; Query; elective目录引言 (1)1 C 语言课程设计的目的 (1)2 课程设计题目 (1)2.1 要求 (1)2.2 分析 (2)2.3 总体设计 (2)2.4 详细设计 (3)2.4.1主函数,头文件及结构体声明 (3)2.4.2 管理员功能模块 (3)2.4.3学生功能菜单 (4)2.4.4创建链表模块 (4)2.4.5浏览模块 (5)2.4.6查询模块 (6)2.4.7插入链表模块 (7)2.4.8添加模块 (7)2.4.9删除模块 (8)2.4.10选修课程模块 (9)2.4.11读取文件模块 (9)2.4.12保存文件模块 (10)2.5 运行结果 (11)结论 (16)谢辞 (17)参考文献 (18)附录 (19)引言C语言是一种面向过程的计算机程序设计语言,它是目前众多计算机语言中举世公认的优秀的结构程序设计语言之一。
学生选修课程系统设计
标签:学生选修课程序校园课程设计c代码假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。
试设计一选修课程系统,使之能提供以下功能:1.系统以菜单方式工作2.课程信息录入功能(课程信息用文件保存)--输入3.课程信息浏览功能--输出4.查询功能:(至少一种查询方式)--算法5.按学分查询6.按课程性质查询7.学生选修课程(可选项):下如码代#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct subjects{int num;char name[20];char kind[10];int stime;int ttime;int etime;int score;int term;struct subjects *next;}SUB;SUB *create_form(){SUB *head,*tail,*p;int num,stime,ttime;int etime,score,term;char name[20],kind[10];int size=sizeof(SUB);head=tail=NULL;printf("输入选修课程信息:\n");scanf("%d %s %s %d %d %d %d %d",&num,&name,&kind,&stime,&ttime,&etim e,&score,&term);while(num!=0){p=(SUB *)malloc(size);p->num=num;strcpy(p->name,name);strcpy(p->kind,kind);p->stime=stime;p->ttime=ttime;p->etime=etime;p->score=score;p->term=term;if(head==NULL)head=p;elsetail->next=p;tail=p;scanf("%d %s %s %d %d %d %d %d",&num,&name,&kind,&stime,&ttime,&etim e,&score,&term);}tail->next=NULL;return head;}void savefile(SUB *head){SUB *p;FILE *fp;fp=fopen("subjects.txt","w");fprintf(fp,"课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期\n");for(p=head;p;p=p->next)fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",p->num,p->name,p->kind,p ->stime,p->ttime,p->etime,p->score,p->term);fclose(fp);}void savefileadd(SUB *head){SUB *p;FILE *fp;fp=fopen("subjectsadd.txt","w");fprintf(fp,"课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期\n");for(p=head;p;p=p->next)fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",p->num,p->name,p->kind,p ->stime,p->ttime,p->etime,p->score,p->term);fclose(fp);}void savefiledel(SUB *head){SUB *p;FILE *fp;fp=fopen("subjectsdel.txt","w");fprintf(fp,"课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期\n");for(p=head;p;p=p->next)fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",p->num,p->name,p->kind,p ->stime,p->ttime,p->etime,p->score,p->term);fclose(fp);}void prin(SUB *head){SUB *ptr;if(head==NULL){printf("没有此门课程记录!\n");return;}printf("课程编号课程名称课程性质总学时授课学时实践或上机学时学分开课学期\n");for(ptr=head;ptr;ptr=ptr->next)printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind ,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);}void search(SUB *head){int a,num;int t=1;char type[10];char ch='a',ch1;SUB *ptr;while(ch!=' '){printf("若要按课程性质查找请输入1,若要按学分查找请输入2:\n");scanf("%d",&a);switch(a){case 1:printf("请输入要查找的课程的性质:\n");scanf("%s",type);printf("课程编号课程名称课程性质总学时授课学时实践或上机学时学分开课学期\n");for(ptr=head;ptr;ptr=ptr->next)if(strcmp(type,ptr->kind)==0){printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->k ind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);t=0;}if(t) printf("未找到!\n");t=1;break;case 2:printf("输入要查找的课程的学分\n");scanf("%d",&num);printf("课程编号课程名称课程性质总学时授课学时实践或上机学时学分开课学期\n");for(ptr=head;ptr;ptr=ptr->next)if(ptr->score==num){printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->k ind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);t=0;}if(t) printf("未找到!\n");t=1;}printf("继续查找请按回车键,结束请按空格键:\n");ch1=getchar(); //将回车键赋给CH1,否则CASE里面最后输入的回车键会赋给CH,因此用CH1填补。
学生选修程序系统设计
C语言程序设计实习报告之目录目录第一部分:课程设计编号、名称及题目要求 (2)第二部分:需求分析 (2)第三部分:程序总体设计思路及模板 (3)第四部分:详细设计 (4)第五部分:上机操作 (14)第六部分:程序的优缺点 (18)第七部分:总结及附录 (21)第一部分:课程设计编号、名称及题目要求【编号】:C语言课程设计与学习指导书 P91页第九题【名称】:学生选修课系统设计【要求】:假定有n门课程,每门课程有课程编号、课程名称、课程性质、总学时、授课时间、实验或上级时间、学分、开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。
试设计一选修课课程系统,使之能提供以下功能:(1)系统以菜单方式工作(2)课程信息和学生选课信息录入功能(课程信息用文件保存)——输入。
(3)课程信息浏览功能——输出(4)查询功能(至少一种查询方式)——算法(5)按学分查询(6)某门课程学生选修情况(可选项)第二部分:需求分析根据题目要求,系统以菜单方式工作,因而要提供键盘式选择菜单以实现功能选择;由于录入信息分为课程信息的录入与学生选课信息的录入两部分,而课程信息的录入要求以文本文件的方式存放到一个文件中,所以要提供文件的输入、输出等操作;在程序中需要学生进行课程,所以需要提供浏览、查找等操作;最后由于选课结束后,对某门课程学生选修课情况,需要统计,也是本文件的重点。
第三部分:程序设计思路及模板图3-1 系统功能模块图一、本程序总体设计思路根据上面需求分析,选用上述功能模板,可以将这个系统的设计分为以下模块。
学生选修课程序系统——数据录入(课程信息录入和学生选课信息录入)、课程信息浏览、课程查询(按课程号查询和按学分查询)、选课情况统计(某门课程学生选修情况)。
数据结构可用结构体,包括课程和选课两个结构体,其中课程结构体成员包括编号、课程名称、课程性质、总学时、授课学时、实验或上机时间、学分、开课学期。
选修结构体成员包括学号、课程编号,该结构体的建立主要是为了查询某门课程学生选修情况。
C++课程设计——学生选修课程系统
课程设计报告课程名称面向对象程序设计课题名称学生选修课程系统专业班级学号姓名指导教师20年月日课程设计任务书课程名称面向对象程序设计课题学生选修课程系统专业班级学生姓名学号指导老师审批任务书下达日期20年月日任务完成日期20年月日《面向对象程序设计》课程设计任务书授课班级:一、课程设计报告规范(包括系统设计要求,设计思路,系统功能模块图,系统流程图,类的层次图(包括类成员列表),调试过程,关键程序代码,总结,参考书目等)。
(一)需求分析系统设计目的与意义系统功能需求(系统流程图);输入输出的要求;(二)总体设计系统功能分析;系统功能模块划分与设计(系统功能模块图)。
(三)详细设计数据库需求分析数据库概念结构设计(E-R图);数据库逻辑结构设计。
类层次图(四)界面设计与各功能模块实现(五)系统调试调试问题出现的主要问题:编译语法错误及修改,重点是运行逻辑问题修改和调整(六)使用说明及编程体会说明如何使用你编写的程序,详细列出每一步的操作步骤。
(七)关键源程序(带注释)二、书写格式1、设计报告要求用A4纸打印成册;2、标题为:黑体三号,正文为:宋体五号。
三、答辩与评分标准:1、完成基本功能:40分;2、设计报告及使用说明书:40分;3、设置错误或者按照要求改变结果:10分;4、回答问题:10分。
四、教材及参考书朱战立等著, C++面向对象程序设计,人民邮电出版社;郑莉著, C++ 语言程序设计(含实验指导书)。
清华大学出版社 ( 结构化程序设计部分 )钱能主编 ,C++ 程序设计教程,清华大学出版社, 2000.11戴锋编著, Visual C++ 程序设计基础 , 清华大学出版社 ,2001.4吕日著, C++ 程序设计教程,清华大学出版社,C++ 大学教程,美国 Harvey M.Deitel 等五、课程设计时间安排1、班级:指导教师:3、时间安排:上机时间:十九周周一下午14:00-18:00周二下午14:00-18:00周三上午08:00-12:00附:选题方案:所选题目根据学生学号确定,学号模6加1,即(学号%6+1)。
C语言课程设计-学生选修课程系统设计
学生选修课系统设计、设计目的当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计算机被广泛应用于信息系统的环境。
计算机的最到好处的于利用它能够进行信息管理,使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。
计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。
本系统就是为了管理好学生选课信息而设计的。
数据处理手工操作,工作量大,出错率高,出错后不易更改,造成了时间上的浪费。
基于这个问题,我认为有必要建立一个学生选课系统,使学生选课信息管理工作规范化、系统化、程序化,避免学生选课管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改选课情况。
二、题目说明假定有n 门课程,每门课程都有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。
试设计一选修课程系统,使之能提供一下功能:(1) 系统以菜单方式工作;(2) 课程信息和学生信息的录入功能(课程信息有文件保存)输入;(3) 课程信息浏览功能------ 输出;(4) 查询功能(至少一种查询方式)--- 算法;(5) 按学分查询;(6) 某门课程学生选修情况(可选项)。
[ 提示]数据结构可用结构体,包括课程和选秀两个结构体,其中课程结构体包括课程编号、课程名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期。
选修结构体成员包括学号,课程编号,该结构体的建立主要是为了查询某门课程学生选修情况.三、数据结构设计本系统的实现,全部采用链表这种数据结构,用链表实现课程的查找、添加、删除、课程的选修、追加选修的课程,课程信息采用结构体这种数据结构。
typedef struct subjects{管理员身份登录\n");puts("\t\t\t\t2.puts("\t\t\t\t3. puts("\n\n\t\t****************************************** printf("Chiose your number(1-3):[ ]\b\b"); sca nf("%d",&n);num;以学生身份登录\n");退出”); intswitch( n){case 1:Ma ngers() ;break;case 2:Stude nts();break;case 3:w=0;break;default:;}}while(w==1);return 0;}(二)管理员功能模块管理员的功能一共有四个功能:浏览,查询,添加,删除课程,运用字符串处理函数处理密码的问题,用一个switch语句实现函数的调用:[程序]void Man gers(){int n, w=1,flag=0,i=3;char s[8];char password[7]="1";do{prin tf("\n\nEn ter password:");scan f("%s",s);if(!strcmp(s,password)) deldeldel输入选修课程信息(num,name,kind,stime ,ttime,etime,score,te rm )浏览所有课程I 创建链表创建完成,& stime ,&ttime, &etchoose();}prin tf(" 课程编号课程名称课程性质总学时授课学时实践或上机学时学分开课学期\n");while(!feof(fp)){ptr=(SUB*)malloc(sizeof(SUB));fsca nf(fp,"%d%s%s%d%d%d%d%d\n",&ptr-> nu m,ptr- >n ame,ptr->ki nd,&ptr->stime,&p tr->ttime,&ptr->etime,&ptr->score, &ptr->term);prin tf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr-> nu m,ptr- >n ame,ptr->ki nd,ptr->st ime,ptr->ttime,ptr->etime,ptr->score,ptr->term);}system("pause");} (六)查询模块查询模块主要用于管理员功能中的“查询课程”和学生功能模块中的“查询所有课程”,查询模块共分为三个查询方法:按课程名称查找,按课程性质查找和按学分查找switch语句中,每一个case语句就是一中查询方法:[程序]2->next==NULLp2->n ext=subj; subj-> next 二NULL; break ?系统进行检测所要保存的文件---- 1 char ch, chi ; 一 _. ;」扌 .................---- J int num T k课程编号文件课程名称 课程 实验或上机学 插入课程信息fprin tf (fp,"性质总学时授课学时 时print 分输入课学邇除的课程编号); f ('%dn&("叩请输入课程信息SUB); — 件名称ch :ch1;sca n , J?_ 所在的 p=head;p;p=p->next 编号查找并删是^口否 刃nJZ的)9d 祁um|,p->nam 要选m 修的 输入(课程信息pr W 称、课程性质、总学「 ,「才实践或上机学时)pr ,p t ->ki nd,---- ,p->term );fclose (fp ); ---------!feof (f 程序对输入的信息进亍 继续插入请按回车 t 程早}设彳计myInsert(subj); E prin tf("\n\n 语言课田"P Dmri ch=ge QI d T: Docui Sub->k /、i I J ■…/厂 yin d,&n ewSub->stime ,&newSub->ttime,&neWSub->et 鼻b ->sco e,ewSub);-保 存在'' 中 \n")system(f s e 阿■ j, 危 gj 百韦 甲陋耳L . FA EX J W ■■ I " I M课程编号谍程名称课程性质 1 matlh& bx 2 history hx 3 miiR ic wy 扛学时141212曲專奮頁库存在,3-trt,中Retur nhead;实跣录上机学时学分开课学期20 Sfl 4A洁明了的程序菜单。
【设计】生活学生选修课程系统设计
【关键字】设计一、课程设计的内容假定有n门课程,,每门课程都有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课.试设计一选修课程系统,使之能提供一下功能:1.系统以菜单方式工作;2.课程信息和学生信息的录入功能(课程信息有文件保存)----输入;3.课程信息浏览功能----输出;4.查询功能(至少一种查询方式)---算法;5.按学分查询;6.某门课程学生选修情况(可选项).二、课程设计的要求与数据1.进一步掌握和利用C语言进行课程设计的能力2.进一步理解和运用结构化程序设计的思想和方法3.初步掌握开发一个小型实用系统的基本方法4.学会调试一个较长程序的基本方法5.学会利用流程图和N-S图表示算法6.掌握书写程序设计开发文当的能力三、课程设计应完成的工作1、编写完成相应题目的程序2、编写课程设计报告,课程设计报告应该包含以下6部分1)需求分析:包括设计题目、设计要求以及系统功能需求分析2)总体设计:包括系统总体设计框架和系统功能模块图3)详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图4)调试分析过程描述:包括尝试数据、尝试输出结果以及对程序尝试过程中存在问题进行思考(主要问题的出错现象、出错原因、解决方法及其效果等,相应效果截图)5)总结:课程设计完成了哪些主要功能,是否有扩展功能?还有哪些地方需要改进?课程设计的学习与体会?有哪些合理化建议?6)附录:主要原程序代码含必要的注释3、答辩:在实验室建立程序运行环境,并在指导教师的监督下,独立解决问题,运行程序和回答教师的提问。
五、应收集的资料及其主要参考文献[1]谭浩强.C程序设计(第三版)[M]北京:清华大学出版社,2005年9月[2]谭浩强.C程序设计题解与上机指导(第三版)[M]北京:清华大学出版社,2005年7月发出任务日期:指导教师签名:计划完成日期:基层教学单位责任人签名:主管院长签章目录1.设计目的与要求 (5)2.总体设计 (5)3.详细设计 (7)3.1功能模块设计………………………………………………3.2数据结构设计………………………………………………4.调试分析 (16)5.总结 (17)6.附录(程序) (18)7.答辩记录(正文处留出适当空白) (18)8.指导教师意见(正文处留出适当空白) (19)1.目的与要求假定有n门课程,,每门课程都有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课.试设计一选修课程系统,使之能提供一下功能:1. 系统以菜单方式工作;2. 课程信息和学生信息的录入功能(课程信息有文件保存)----输入;3. 课程信息浏览功能----输出;4. 查询功能(至少一种查询方式)---算法;5. 按学分查询;6.某门课程学生选修情况(可选项).2.总体设计数据结构可用结构体,包括课程和选课两个结构体,其中课程结构体包括课程编号、课程名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期。
c++课程设计之学生选修课程系统设计
《C++程序设计》课程设计陈述【1 】学生选修课程体系设计一.需求剖析盘算机技巧作为信息化的焦点技巧受到全社会的广泛看重.现在,盘算机的应用也已不再局限于科学盘算,它已进入人类社会的各个范畴并施展着越来越重要的感化.深刻控制盘算机专业常识.具有优越体系设计与剖析才能的盘算机高等专业人才在社会上深受迎接.而体系设计与剖析才能的造就须要经由过程实践练习才干获得.经由过程盘算机对一些体系的治理已经成为一种体系.便捷的方法.本课程设计就是用C++设计学生选课体系的问题,实现对学生选课的治理操纵.本课程设计的目标是设计一个学生选修课程体系的程序,用来实现对学生成绩的治理,个中包含学生信息的文件读入.添加.查询.保管.删除以及响应的课程信息治理.程序设计了两个类,个中一个包含学生的学号.姓名.选课数以及选修总学分,另一个则包含了课程的信息,包含课程编号.课程名称.课程性质.课时等等.然后经由过程数组.向量.聚集等来实现学生选课信息的记载.保管,删除等相干操纵从而达到治理学生选课的. 二.设计请求假定有n门课程,每门课程有课程编号.课程名称.课程性质.总学时.讲课学时.试验学时.学分.开课学期等信息.学生可以按请求(如每个学生总学分不得少于20.没学期不克不及超出3门课程,每门课程不得超出50小我,但不克不及少于10不然该课程不开设)自由选课.使之能供给一些功效:1)课程信息录入功效2)课程信息阅读功效3)查询功效:(按课程性质查询.按课程学分查询,查询每个学生的选修信息.查询每门课程的选修信息等)4)学生选修课程5)修正课程或选课信息(依据课程编号或名称修正课程信息.依据学生姓名修正选课信息);6)删除课程或选课信息(依据课程编号或名称删除课程信息.依据学生姓名删除选课信息);三.总体设计我们设计一个程序对学生选课信息进行保管,对学生的选课信息进行可履行操纵,如添加.删除.查询等等.该程序包含以下功效模块:1)学生信息添加模块:可以或许输入学生根本信息并保管到文件中.2)检讨模块:显示所有可选修课程的信息.3)查询:显示所有相符请求的课程信息.4)选课:显示学生已选课程信息和选课,删除已选课程信息.5)退出体系.为了完美体系,我们还添加了一个登录界面.斟酌到添加课程信息的功效只合适先生,是以我们设置了添加课程的权限设置(必须输入暗码).我们树立了两个文件用来保管学生信息和课程信息.(student.txt和subject.txt)该体系功效解释:1)体系以菜单方法工作2)课程信息录入功效(课程信息用文件保管)--输入3)课程信息阅读功效--输出4)查询功效:(至少一种查询方法)--算法5)按学分查询6)按课程性质查询7)学生选修课程(可选项)四.具体设计该成序包含的重要函数功效解释:void XuanKeMenu(); // 选课主菜单函数int find(int no);void Save();void DL();//登录界面的函数void MainMenu();void output();void Load(); //载入文件信息的函数void Load2();void quit();void add();void ChaXun();void chaxun1();void chaxun2();void xuanke();void tq1(); //提取选课编号的函数void tq2();void AddStuInfo();//添加学生信息的函数void SaveStuInfo(); //保管学生信息到文件中void del();//删除已选课程信息的函数重要的数据构造表:#include<iostream>#include<vector>#include<set>#include<string>#include<conio.h>#define N 10using namespace std;int F;class subject //树立一个课程类,保管课程信息{public:int num;char name[30];char cha[20];int Time,time1,time2,xf;char kkxq[20];}S;class student //树立一个学生类,保管学生信息{public:char nam[10];char num[15];int zxf;int cnt;}Stu;vector <subject> v; //声明一个指向课程信息的向量vector <student> z; //声明一个指向学生信息的向量set <int> T; //树立一个聚集vector <set<int> > TT; //树立一个向量聚集set <int> ::iterator it; //树立一个迭代器void XuanKeMenu(); //声明一个选课主菜单函数int find(int no);void Save();void DL(); //声明一个登录界面的函数void MainMenu();void output();void Load(); //声明载入文件信息的函数void Load2();void quit();void add();void ChaXun();void chaxun1();void chaxun2();void xuanke();void tq1(); //声明提守信息的函数void tq2();void AddStuInfo(); //声明添加学生信息的函数void del();void AddStuInfo(){FILE *fp;fp=fopen("d:\\student.txt","a");fseek(fp,0,2); //打开学生信息文件system("cls");cout<<endl<<endl<<endl<<endl<<endl;cout<<"\t\t***************************************************"<<endl;cout<<"\t\t***************** 学生选课体系 ******************"<<endl;cout<<"\t\t***************************************************"<<endl<<endl;cout<<"\t\t\t请输入学号:";cin>>Stu.num;cout<<"\t\t\t请输入姓名:";cin>>Stu.nam;t=Stu.zxf=0;fprintf(fp,"%s %s %d %d\n",Stu.num,Stu.nam,t,Stu.zxf); //存入文件z.push_back (Stu); T.clear(); TT.push_back(T); //用向量指向学生信息fclose(fp);}void add(){string password1,password2;char password[20];int _cnt=0;FILE *fp;fp=fopen("d:\\password","r");fscanf(fp,"%s",password); password2=password;fclose(fp);system("cls");cout<<endl<<endl<<endl;cout<<"\t ********************************************************"<<endl;cout<<"\t ********************** 课程信息 *******************"<<endl;cout<<"\t ********************************************************"<<endl<<endl; cout<<"\t 请输入暗码:"; //对添加课程进行权限设置char ch;while(ch=getch()){if(ch==13) break;if(ch != 8) { putchar('*'); password1 += ch;_cnt++;}else{if(_cnt){password1.erase(password1.end()-1);_cnt--;system("cls");cout<<endl<<endl<<endl;cout<<"\t ********************************************************"<<endl;cout<<"\t ********************** 课程信息 *******************"<<endl;cout<<"\t ********************************************************"<<endl<<endl; cout<<"\t 请输入暗码:";int x=_cnt;while(x--)cout<<"*";}}}if(password1 != password2){ cout<<"\n\n\t\t\t 暗码错误";getch(); MainMenu(); } A: system("cls");cout<<endl<<endl<<endl;cout<<"\t ********************************************************"<<endl;cout<<"\t ********************** 课程信息 *******************"<<endl;cout<<"\t ********************************************************"<<endl<<endl; cout<<"\t\t\t请输入课程编号:";cin>>S.num;cout<<"\t\t\t请输入课程名称:";cin>>;cout<<"\t\t\t请输入课程性质:";cin>>S.cha;cout<<"\t\t\t请输入总课时:";cin>>S.Time;cout<<"\t\t\t请输入讲课学时";cin>>S.time1;cout<<"\t\t\t请输入上机学时(试验学时):";cin>>S.time2;cout<<"\t\t\t请输入学分:";cin>>S.xf;cout<<"\t\t\t请输入开课学期:";cin>>S.kkxq;v.push_back(S);Save();cout<<endl<<"\t 是否持续添加[Y/N]:";string s; cin>>s;if(s[0]=='Y'||s[0]=='y') goto A;else MainMenu();}void Save() //保管已选的课程信息{FILE *fp;fp=fopen("d:\\subject.txt","w");for(int i=0;i<v.size();i++)fprintf(fp,"%d %s %s %d %d %d %d %s\n",v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq); fclose(fp);}void SaveStuInfo() //保管学生信息{FILE *fp;fp=fopen("d:\\student.txt","w");for(int i=0;i<z.size();i++){fprintf(fp,"%s %s %d %d",z[i].num,z[i].nam,z[i].cnt,z[i].zxf); for(it=TT[i].begin(); it!=TT[i].end(); it++)fprintf(fp, " %d",*it);fprintf(fp,"\n");}fclose(fp);}void quit() //退出函数{exit(1);}void ChaXun() //查询主菜单函数{system("cls");cout<<endl<<endl<<endl;cout<<"\t ********************************************************"<<endl;cout<<"\t ********************** 课程信息 *******************"<<endl;cout<<"\t ********************************************************"<<endl<<endl;cout<<"\t\t\t\t请选择查询方法:\n\t\t\t\t[1]学分查询\n\t\t\t\t[2]课程性质查询\n\t\t\t\t[0]返回主菜单\n\n";cout<<"\t\t\t\t请选择[0-2]:";int choice;cin>>choice;if(choice>=0&&choice<3){if(choice==1) chaxun1();if(choice==2) chaxun2();if(choice==0) MainMenu();}else ChaXun();}void chaxun1() //按学分方法查询{system("cls");int cnt=0;cout<<endl<<endl<<endl;cout<<"\t ********************************************************"<<endl;cout<<"\t ********************** 课程信息 *******************"<<endl;cout<<"\t ********************************************************"<<endl<<endl;cout<<"\t 请输入学分:";int key;cin>>key;cout<<"\t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"讲课"<<" "<<" 试验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"\t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;for(int i=0;i<v.size();i++){if(cnt&&cnt%10==0){cout<<endl<<"\t ========================================================"<< endl; cout<<"\t 按随意率性键检讨下一页"; getch();system("cls");cout<<endl<<endl<<endl;cout<<"\t ********************************************************"<<endl;cout<<"\t ********************** 课程信息 *******************"<<endl;cout<<"\t ********************************************************"<<endl<<endl; cout<<"\t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"讲课"<<" "<<" 试验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"\t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;}if(v[i].xf==key){cnt++;printf("\t %3d%12s%8s%4d%6d%8d%8d%7s\n",v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq);}}cout<<endl<<"\t 是否持续查询[Y/N]:";string s; cin>>s;if(s[0]=='Y'||s[0]=='y') chaxun1();else MainMenu();}void chaxun2() //按课程性质查询{system("cls");int cnt=0;cout<<endl<<endl<<endl;cout<<"\t ********************************************************"<<endl;cout<<"\t ********************** 课程信息 *******************"<<endl;cout<<"\t ********************************************************"<<endl<<endl; cout<<"\t 请输入课程性质:";char key[20];cin>>key;cout<<"\t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"讲课"<<" "<<" 试验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"\t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;for(int i=0;i<v.size();i++){if(cnt&&cnt%10==0){cout<<endl<<"\t ========================================================"<< endl; cout<<"\t 按随意率性键检讨下一页"; getch();system("cls");cout<<endl<<endl<<endl;cout<<"\t ********************************************************"<<endl;cout<<"\t ********************** 课程信息 *******************"<<endl;cout<<"\t ********************************************************"<<endl<<endl; cout<<"\t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"讲课"<<" "<<" 试验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"\t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;}if(!strcmp(v[i].cha,key)){cnt++;printf("\t %3d%12s%8s%4d%6d%8d%8d%7s\n",v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq); }}cout<<endl<<"\t 是否持续查询[Y/N]:";string s; cin>>s;if(s[0]=='Y'||s[0]=='y') chaxun2();else MainMenu();}void tq1(char *str) //提掏出选课时输入的课程编号{string t="";int i=0,cont=0;while(str[i]){if(isalnum(str[i])) t += str[i];else{int tmp=atoi(t.c_str());if(TT[F].find(tmp)!=TT[F].end()) {t="";i++; continue;}z[F].zxf += v[find(tmp)].xf;TT[F].insert(tmp); t="";cont++;}i++;//}int tmp=atoi(t.c_str());//cout<<t<<" ";system("pause");if(TT[F].find(tmp)==TT[F].end()){cont++;TT[F].insert(tmp);z[F].zxf += v[find(tmp)].xf;}z[F].cnt += cont;}void xuanke() //选课函数:履行选课功效{char str[100];system("cls");cout<<endl<<endl;cout<<"\t ********************************************************"<<endl;cout<<"\t ********************** 课程信息 *******************"<<endl;cout<<"\t ********************************************************"<<endl<<endl; cout<<"\t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"讲课"<<" "<<" 试验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"\t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;for(int i=0; i<v.size(); i++){if(i&&i%10==0){cout<<endl<<"\t ========================================================"<< endl; cout<<endl<<"\t 请输入所选课程编号:"; gets(str);if(strcmp(str,"")) tq1(str);//,system("cls");cout<<endl<<endl;cout<<"\t ********************************************************"<<endl;cout<<"\t ********************** 课程信息 *******************"<<endl;cout<<"\t ********************************************************"<<endl<<endl; cout<<"\t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"讲课"<<" "<<" 试验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"\t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;}printf("\t %3d%12s%8s%4d%6d%8d%8d%7s\n",v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq); }cout<<endl<<"\t ========================================================"; cout<<endl<<"\t 请输入所选课程编号:"; gets(str);if(strcmp(str,"")) tq1(str);SaveStuInfo();if(z[F].zxf<60){cout<<"\t\t你所选课程的总学分少于60,是否持续选课![Y/N]";string x; cin>>x;if(x[0]=='y'||x[0]=='Y') xuanke();else XuanKeMenu();}else XuanKeMenu();}int find(int no) //查找函数,找到想要的课程编号{for(int i=0;i<v.size();i++)if(v[i].num==no) return i;}void display(int i){printf("\t %3d%12s%8s%4d%6d%8d%8d%7s\n",v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq); }void XuanKeMenu() //选课菜单函数{system("cls");int choice,l=0;cout<<endl<<endl;cout<<"\t ********************************************************"<<endl;cout<<"\t ********************** 学生选课 *******************"<<endl;cout<<"\t ********************************************************"<<endl<<endl;cout<<"\t 姓名:"<<z[F].nam<<" 学号:"<<z[F].num<<" 已选 "<<z[F].cnt;cout<<"门课程"<<" 已选课程总学分:"<<z[F].zxf<< endl;cout<<"\t ========================================================"<<endl;cout<<"\t 已选课程信息:\n";cout<<"\t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"讲课"<<" "<<" 试验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"\t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;for(it=TT[F].begin();it!=TT[F].end();it++,l++){if(l&&l%10==0){cout<<endl<<"\t ========================================================"<< endl;cout<<"\t [1 ]开端选课 [2] 删除已选课程 [3] 下一页 [0] 返回请选择[0/3]:"; cin>>choice; getchar();if(choice==1) xuanke();else if(choice==2) del();else if(choice==0) MainMenu();else if(choice==3) ;else XuanKeMenu();system("cls");cout<<endl<<endl;cout<<"\t ********************************************************"<<endl;cout<<"\t ********************** 学生选课 *******************"<<endl;cout<<"\t ********************************************************"<<endl<<endl;cout<<"\t 姓名:"<<z[F].nam<<" 学号:"<<z[F].num<<" 已选 "<<z[F].cnt;cout<<"门课程"<<" 已选课程总学分:"<<z[F].zxf<< endl;cout<<"\t ========================================================"<<endl;cout<<"\t 已选课程信息:\n";cout<<"\t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"讲课"<<" "<<" 试验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"\t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;}display(find(*it));}cout<<endl<<"\t ========================================================"<< endl;cout<<"\t [1] 开端选课 [2] 删除已选课程 [0] 返回请选择[0/2]:"; cin>>choice; getchar();if(choice==1) xuanke();else if(choice==2) del();else if(choice==0) MainMenu();else XuanKeMenu();}void tq2(char *str) //提取函数:提前删除时输入的课程编号{string t="";int i=0,cont=0;while(str[i]){if(isalnum(str[i])) t += str[i];else{int tmp=atoi(t.c_str());set<int>::iterator _t=TT[F].find(tmp);if(_t!=TT[F].end()){t="";TT[F].erase(_t);z[F].cnt--;z[F].zxf-=v[find(tmp)].xf;}}i++;}int tmp=atoi(t.c_str());set<int>::iterator _t=TT[F].find(tmp);if(_t!=TT[F].end()){t="";TT[F].erase(_t);z[F].cnt--;z[F].zxf-=v[find(tmp)].xf;}}void del() //删除已选课程信息{int m,l=0,k=0;char str[100];system("cls");cout<<endl<<endl;cout<<"\t ********************************************************"<<endl;cout<<"\t ********************** 学生选课 *******************"<<endl;cout<<"\t ********************************************************"<<endl<<endl; cout<<"\t 姓名:"<<z[F].nam<<" 学号:"<<z[F].num<<" 已选 "<<z[F].cnt;cout<<"门课程"<<" 已选课程总学分:"<<z[F].zxf<< endl;cout<<"\t ========================================================"<<endl;cout<<"\t 已选课程信息:\n";cout<<"\t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"讲课"<<" "<<" 试验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"\t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;for(it=TT[F].begin();it!=TT[F].end();it++,l++){if(l&&l%10==0){cout<<endl<<"\t ========================================================"<< endl; cout<<"\t\t\t\t请输入要删除的课程的编号:";gets(str);if(strcmp(str,"")) tq2(str);system("cls");cout<<endl<<endl;cout<<"\t ********************************************************"<<endl;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*课程信息浏览*/ void browser()
-1-
作者:宁波工程学院 计科专业 周咲宇
{ void main(); FILE *fp; struct course c; int a; if((fp=fopen("course.txt","r"))==NULL) { printf("\nCannot open course!\n"); } printf("课程编号 课程名称 课程性质
/*课程信息录入*/ void insert() {
void main(); FILE *fp; struct course c; int count; int i; if((fp=fopen("course.txt","a+"))==NULL) {
printf("cannot open file\n"); } printf("\n 请输入课程门数:\n"); scanf("%d",&count); printf("课程编号 课程名称 课程性质
if(um==c.num) break;
} fclose(fp); if((fp=fopen("student.txt","a+"))==NULL) {
printf("\nCannot open student!\n"); } fprintf(fp,"%d %d %s\n",s.snum,um,); fclose(fp); printf("\n1-返回主菜单;2-退出选课系统\n"); scanf("%d",&a); if(a==1)
main(); else
exit(0); }
/*学生选修课程*/ void xuan_ke() {
void main(); struct student s; struct course c; int a; FILE *fp; printf("\n 请输入您的学号及您要选择的课程编号:"); scanf("%d%d",&s.snum,&um); if((fp=fopen("course.txt","r"))==NULL) {
开课学期:\n");
for(;!feof(fp);) {
总学时
授课学时
实验或上机学时
学分
fscanf(fp,"%d %s %s %d %d %d %d %d\n",&c.num,&,&c.kind,&c.time,&c.ttime,&c.et ime,&c.mark,&c.term);
printf("%5d%12s%9s%9d%9d%11d%11d%11d\n",c.num,,c.kind,c.timeprintf("%5d%12s%9s%9d%9d%11d%11d%11d\n",c.num,,c.kind,c.time,c.ttime,c.etime, c.mark,c.term);
} } else{
printf("输入错误!"); exit(1); } fclose(fp); printf("\n1-返回主菜单;2-退出选课系统\n"); scanf("%d",&a); if(a==1) main(); else exit(0); }
\n");
printf("
2- 浏 览 课 程 信 息
\n");
printf("
3- 查 询 课 程 信 息
\n");
printf("
4- 统 计 选 课 情 况
\n");
printf("
5- 进 入 选 课 操 作
\n");
printf("
0- 退 出 选 课 系 统
\n");
printf("***********************************************************************
main(); else
exit(0); }
/*主菜单*/ int main(void) {
int n,w=0; printf("*********************************************************************** *********\n");
if(c.mark==score)
printf("%5d%12s%9s%9d%9d%11d%11d%11d\n",c.num,,c.kind,c.time,c.ttime,c.etime, c.mark,c.term);
} } else if(b==2){
printf("\n 请输入您要查询的课程性质:\n"); scanf("%s",&kind);
if((fp=fopen("course.txt","r"))==NULL) {
printf("\nCannot open course!\n"); } printf("课程编号 课程名称 课程性质 总学时 授课学时 实验或上机学时 学 分 开课学期:\n"); for(;!feof(fp);) { fscanf(fp,"%d%s%s%d%d%d%d%d\n",&c.num,&,&c.kind,&c.time,&c.ttime,&c.etime, &c.mark,&c.term); if(strcmp(c.kind,kind)==0)
printf("请选择查询方式,输入选项数字:"); scanf("%d",&b); if(b==1) {
printf("\n 请输入您要查询的学分:\n"); scanf("%d",&score);
if((fp=fopen("course.txt","r"))==NULL) {
printf("\nCannot open course!\n"); } printf("课程编号 课程名称 课程性质 总学时 授课学时 实验或上机学时 学
作者:宁波工程学院 计科专业 周咲宇
源程序清单:
#include<stdio.h> #include<stdlib.h> #include <string.h>
struct course {
int num; char name[20]; char kind[10]; int time; int ttime; int etime; int mark; int term; }; struct student { int snum; int cnum; char cname[20]; };
运行结果:
-5-
作者:宁波工程学院 计科专业 周咲宇
1.主菜单功能
2.课程信息录入或插入功能 4.课程信息浏览功能
-6-
作者:宁波工程学院 计科专业 周咲宇
5.课程信息查询功能
6.学生选修课程功能 7.统计选课情况功能
-7-
作者:宁波工程学院 计科专业 周咲宇 -8-
} fclose(fp); printf("\n1-返回主菜单;2-退出选课系统\n");
scanf("%d",&a); if(a==1)
main(); else
exit(0); }
/*课程信息查询*/ void search() {
void main(); FILE *fp; struct course c; int score; char kind[10]; int a; int b; printf("1.按学分查询,2.按课程性质查询.\n");
printf("\nCannot open course!\n"); } for(;!feof(fp);) {
fscanf(fp,"%d %s %s %d %d %d %d %d\n",&c.num,&,&c.kind,&c.time,&c.ttime,&c.et ime,&c.mark,&c.term);
开课学期:\n"); for(i=0;i<count;i++) {
总学时
授课学时
实验或上机学时
学分
scanf("%d %s %s %d %d %d %d %d",&c.num,&,&c.kind,&c.time,&c.ttime,&c.etime, &c.mark,&c.term);
fprintf(fp,"%d %s %s %d %d %d %d %d\n",c.num,,c.kind,c.time,c.ttime,c.etime,c.mark, c.term);
*********\n");
printf("
请选择输入选项前数字:");