版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
题目一、学生选课管理系统目录TOC\o"1-3"\h\z第一部分:课程设计名称、目标、要求 第二部分:程序总体设计思绪 第三部分:程序功效划分、图示及步骤图 第四部分:程序设计数据、运行结果 第五部分:程序优缺点 第六部分:心得体会 第七部分:附录(源程序) 第八部分:附录(参考文件) 第一部分:课程设计名称、目标、要求名称:学生选修课程系统设计目标:利用C语言提升处理实际问题能力试验环境:MicrosoftVisualC++6.0内容:假定有n门课程,每门课程有课程编号,课程名称,课程性质,总课时,讲课课时,试验或上机课时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。【功效】系统以菜单方法工作
课程信息录入功效(课程信息用文件保留)--输入
课程信息浏览功效--输出
查询功效:(最少一个查询方法)--算法
按学分查询
按课程性质查询
学生选修课程(可选项)
第二部分:程序总体设计思绪因为C语言是面对过程语言,故我设计思绪是依据目标程序运行过程来编写。具体设计思绪以下:程序要求是设计学生选修课管理系统,对选修课程能够进行录入和修改操作等,要求有菜单界面和退出功效。首先,考虑到程序数据输入,能够设置一个管理员登陆选项,经过该选项进入管理员界面,进行选修课录入和修改操作,最终将录入课程保留到对应文件中。然后定义多种函数功效包含查看,查询,删除等。另一个为学生登陆界面,该界面学生能够进行课程选择和浏览查询等操作。在进行该操作之前需要对管理员保留文件进行读取,然后对其中内容进行查询等,在学生选好课程以后,能够将其选好课程保留于对应文件中,方便下次进行修改。经过函数层层调用来实现程序逻辑结构。中间经过文件打开和关闭实现对文件内部所包含数据操作。整个程序设计思绪到此结束。第三部分:程序功效划分、图示及步骤图【功效模块划分及其步骤图】本程序功效模块依据程序设计需求,综合程序实用性、人性化、智能化考虑,将程序划分为6个部分分别编写,程序主体功效将由这9个部分来完成。这9个部分依次是:登录界面函数;voidlogin()学生登录界面据函数:voidstu_login()管理员登录界面函数:voidman_login()退出界面函数:voidbye_sys()课程选择函数:voidc_select()课程浏览函数:voidc_view()课程查询函数:voidc_search()课程增加函数:voidc_add()课程删除函数:voidc_delete()菜单函数:voidindex()主函数部分;main()总体设计:系统功效模块图部分函数步骤图:课程选择函数:课程查询函数课程增加函数4、课程删除函数第四部分:程序设计数据、运行结果本程序是一款应用软件,故数据设计、程序运行结果应在程序利用中得以表现,现在经过一个程序利用事例来对程序运行结果进行演示和实现。【软件利用举例】1、程序开始界面以下:选择某个选项,如进行管理员登录,进行课程增加进入管理员界面:2、再选择所要进行操作,如进行课程增加,结果以下:下面能够进行继续增加课程或退出:3、选择课程浏览,能够分页查看对应课程信息:第一页:第二页:4、课程查询查找结果:管理员课程删除操作:删除后能够进行浏览,观察删除后结果:可见删除后只有一条统计。删除操作完成正确。下面进行学生操作使用方法:1、学生登陆界面:2、选择学生选课选项:3、学生登陆也可进行课程浏览和查询函数,其结果和管理员登陆相同,不再演示。第五部分:程序优缺点【程序优点】算法是程序灵魂,程序优点首先表现在算法上优点,其次才是功效上。[算法上优点]关键表现在以下三点:程序采取main主函数方法设计,程序主体功效大全部由该功效完成。程序如此设计有利于程序深入改善及有利于程序实施效率提升。程序对文件数据读写采取了fread和fwrite块读写函数,能够将文件中数据完全读出,然后赋到定义数组中,再在对应数组中进行一系列操作,最终再写入文件。插入操作在本程序中将课程信息直接插入数组最终一个节点,从而降低了数据相互移动,节省了时间。[功效上优点]关键表现在以下两点:简练明了程序菜单。程序关键采取了层次不一样菜单,相互独立又相互联络,巧妙相接,符适用户使用习惯和思维。人性化程序提醒语言,程序提醒语言较人性化,不仅大多为祈使语句、疑问句,而且提醒明确,含有较强明确指导作用。程序提醒不仅层次分明,提醒方法多样,而且提醒信息井然有序,愈加有利于用户顺利、正确地看懂程序并进行操作。【程序缺点】关键表现在以下两点:本程序没有进行对应密码操作,所以对于使用者来说可能存在比较大不保密性。需要改善。本程序没有使用文本读写函数fscanf和fprintf,所以到课程文件和选课文件全部是二进制形式。第六部分:心得体会选课系统程序比起通讯录程序来讲好写部分,因为本程序用到了数组,对于数组操作掌握比较熟练,所以在编写程序时候困难没有那么多。本程序在编写过程中用到了很多通讯录中模块化设计和函数相互调用思想,使得编写比较方便和好用。经过该系统课程设计分析,我掌握了模块化设计方法,了解和利用了结构化程序设计思想和方法,掌握和提升了利用C语言进行程序设计能力。程序设计过程,实际上是确定处理问题具体步骤,而这个步骤通常叫做步骤,在程序设计过程中理清楚整个问题步骤很关键,然后采取逐步细化方法实现整个程序。对于一个较大应用程序,通常不可能一次就设计出一个很完善系统。通常要先设计满足基础要求系统,然后再测试或在使用过程中不停完善,慢慢地做成一个功效很完善选修课程管理系统。所以在进行调试时候需要对很多变量了解和掌握其改变规律等,这对于我愈加好掌握visualC中调试工含有很大帮助。总而言之经过这次课程设计,我对c语言使用和了解全部有了很大加深,对于编程思想也有了很多新了解和感受。第七部分:附录一、参考文件:1、李丽娟主编,C语言程序设计教程(第二版),人民邮电出版社2、严蔚敏主编,数据结构(C语言),清华大学出版社3、崔单主编,C语言程序设计案例精粹,电子工业出版社4、谭浩强主编,程序设计(第三版),清华大学出版社二、源程序#include"stdio.h"#include"stdlib.h"#include"windows.h"#include"string.h"voidindex();//首页voidlogin();voidbye_sys();//退出界面voidstu_login();//学生登录菜单voidc_select();voidc_view();//课程浏览voidc_add();//增加课程voidc_delete();voidc_searchs();//学生查询函数voidc_searchm();//管理员查询函数voidc_viewm();//管理员浏览函数voidc_views();//学生浏览函数structcourse//定义课程结构体{intc_num;charc_name[20];intc_score;intc_nelepeo;//课程已选人数intc_melepeo;//课程人数上限};structstudent{chars_number[10];chars_password[10];};structmanager{charm_name[10];charm_password[10];};voidindex()//首页{charinput;printf("\n\n\t\t\t*****************************\n");printf("\t\t\t湖南大学学生选课系统\n");printf("\t\t\t*****************************\n\n\n");printf("\t\t\t*****************************\n\n\n");printf("\t\t\t*****************************\n\n\n");printf("\t\t\t*****************************\n\n\n");printf("\t\t\t**********设计者:刘晓斌******\n\n\n");input=getchar();system("cls");}voidlogin()//登陆界面{voidstu_login();voidman_login();voidbye_sys();intinput;do{system("cls");printf("\n\n\n\t1.学生登录\n");printf("\t2.管理员登陆\n");printf("\t3.退出本系统\n");printf("\t请选择服务类别:");scanf("%d",&input);if(input!=1&&input!=2&&input!=3)//输入数不等于选项时候打印画面{printf("\n\t输入犯错!请重新选择~\n");printf("\n\t按任意键返回选择页面~\n\t");getchar();getchar();system("cls");}if(input==3)//假如输入3退出系统{bye_sys();}}while(input!=1&&input!=2&&input!=3);switch(input){case1:stu_login();break;case2:man_login();break;}}voidbye_sys()//退出界面{exit(0);}voidman_login(){voidc_add();voidc_delete();voidc_view();voidc_searchm();intin;do{system("cls");printf("\n\n\t1.新增课程\n");printf("\t2.删除课程\n");printf("\t3.课程浏览\n");printf("\t4.课程查询\n");printf("\t5.退出\n");printf("\n\n\t请选择服务种类:");scanf("%d",&in);if(in!=1&&in!=2&&in!=3&&in!=4&&in!=5){printf("\n\t没有这项服务\t按任意重新选择");getchar();getchar();}}while(in!=1&&in!=2&&in!=3&&in!=4&&in!=5);switch(in){case1:c_add();break;case2:c_delete();break;case3:c_viewm();break;case4:c_searchm();break; case5:login();break;}}voidstu_login()//学生登录菜单{voidc_select();voidc_view();voidc_searchs();voidlogin();intinput;do{system("cls");printf("\n\n\n\t--学生登陆--");printf("\n\n\t1.学生选课\n");printf("\t2.课程浏览\n");printf("\t3.课程查询\n");printf("\t4.退出\n");scanf("%d",&input);if(input!=1&&input!=2&&input!=3&&input!=4){printf("\n\t没有这项服务~\n");printf("\t按任意键重新选择");getchar();getchar();}}while(input!=1&&input!=2&&input!=3&&input!=4);switch(input){case1:c_select();break;case2:c_views();break;case3:c_searchs();break;case4:login();break;}}voidc_select(){intn,in,i=0,j;intflag=0;FILE*fp;FILE*fp1;charinput;structcoursecourses[10];if((fp=fopen("course.dat","rb"))==NULL)//判定是否存在课程{printf("\n\n\n\t课程不存在\n\n");printf("\t<按任意键返回管理菜单>\n\t");input=getchar();input=getchar();stu_login();//进入学生登陆菜单}else//存在话循环读取文件中信息直到文件指针到文件尾部{do{fread(&courses[i],sizeof(structcourse),1,fp);i=i+1;}while(!feof(fp));fclose(fp);//文件读完后关闭}printf("\n\n\t\t请输入你要选课程编号:");scanf("%d",&n);if((fp1=fopen("courseselect.dat","rb"))==NULL){fp1=fopen("courseselect.dat","wb");}else{fclose(fp1);fp1=fopen("courseselect.dat","ab");}for(j=0;j<i;j++)if(courses[j].c_num==n)flag++;if(flag==0) {printf("\n\n\t\t不存在对应课程\n"); printf("\n\n\t\t继续选课请按1,退出请按2:\n"); scanf("%d",&in); switch(in) { case1:c_select();break;case2:stu_login();break;default: printf("输入错误,将返回登录界面!\n"); login();break; } }else{fwrite(&courses[j],sizeof(structcourse),1,fp1);fclose(fp1);printf("\n\n\t\t选课成功\t请选择:");printf("\n\n\t\t1.继续选课");printf("\n\n\t\t2.退出,返回登录界面!");scanf("%d",&in);switch(in){case1:c_select();break;case2:stu_login();break;default:break;} }}voidc_viewm()//课程浏览{voidstu_login();voidc_view();intinp,i=0,n=0;FILE*fp;charinput;structcoursecourseview[10];if((fp=fopen("course.dat","rb"))==NULL)//判定是否存在课程{system("cls");printf("\n\n\n\t课程不存在\n\n");printf("\t<按任意键返回管理菜单>\n\t");getchar();getchar();stu_login();//进入学生登陆菜单}else//存在话循环读取文件中信息直到文件指针到文件尾部{do{fread(&courseview[i],sizeof(structcourse),1,fp);i=i+1;}while(!feof(fp));fclose(fp);//文件读完后关闭do{system("cls"); if(i==1) { printf("\n\n\n\t\t\t没有统计!\n"); getchar();getchar(); man_login();} else { printf("\n\t------共有%d条统计-------",i-1); printf("\n\n\t课程编号:%d\n",courseview[n].c_num); printf("\n\n\t课程名字:%s\n",courseview[n].c_name);printf("\n\n\t课程学分:%d\n",courseview[n].c_score);printf("\n\n\t课程已选人数:%d\n",courseview[n].c_nelepeo);printf("\n\n\t课程人数上限:%d\n",courseview[n].c_melepeo);printf("\n\n\t1.上一页\t2.下一页\t3.回目录");printf("\n请选择:");scanf("%d",&inp);switch(inp) {case1:{if(n==0){printf("\n\t已抵达首页\t按任意键返回");input=getchar();input=getchar();}else{n=n-1;}break;}case2:{if(n==i-2){printf("\n\t已抵达尾页\t按人意见返回");input=getchar();input=getchar();}else{n=n+1;}break;}case3:{man_login();break;}default:{printf("\n\t操作错误\t按任意键返回");getchar();getchar();break;} } }}while(inp!=3);}}voidc_views()//课程浏览{voidstu_login();voidc_view();intinp,i=0,n=0;FILE*fp;charinput;structcoursecourseview[10];if((fp=fopen("course.dat","rb"))==NULL)//判定是否存在课程{system("cls");printf("\n\n\n\t课程不存在\n\n");printf("\t<按任意键返回管理菜单>\n\t");getchar();getchar();stu_login();//进入学生登陆菜单}else//存在话循环读取文件中信息直到文件指针到文件尾部{do{fread(&courseview[i],sizeof(structcourse),1,fp);i=i+1;}while(!feof(fp));fclose(fp);//文件读完后关闭do{system("cls"); if(i==1) { printf("\n\n\n\t\t\t没有统计!\n"); getchar();getchar(); stu_login();} else { printf("\n\t------共有%d条统计-------",i-1); printf("\n\n\t课程编号:%d\n",courseview[n].c_num); printf("\n\n\t课程名字:%s\n",courseview[n].c_name); printf("\n\n\t课程学分:%d\n",courseview[n].c_score); printf("\n\n\t课程已选人数:%d\n",courseview[n].c_nelepeo); printf("\n\n\t课程人数上限:%d\n",courseview[n].c_melepeo); printf("\n\n\t1.上一页\t2.下一页\t3.回目录");printf("\n请选择:"); scanf("%d",&inp); switch(inp) {case1:{if(n==0){printf("\n\t已抵达首页\t按任意键返回");input=getchar();input=getchar();}else{n=n-1;}break;}case2:{if(n==i-2){printf("\n\t已抵达尾页\t按人意见返回");input=getchar();input=getchar();}else{n=n+1;}break;}case3:{stu_login();break;}default:{printf("\n\t操作错误\t按任意键返回");getchar();getchar();break;}} }}while(inp!=3);}}voidc_searchs(){voidstu_login();voidc_searchs();intid,i=0,j,inp,k;intflag=0;FILE*fp;structcoursecoursesear[10];if((fp=fopen("course.dat","rb"))==NULL)//判定课程信息是否存在{system("cls");printf("\n\n\t课程不存在\t按任意键返回");getchar();getchar();stu_login();}else//存在话循环读取文件中信息直到文件指针到文件尾部{do{fread(&coursesear[i],sizeof(structcourse),1,fp);i=i+1;}while(!feof(fp));fclose(fp);}system("cls");printf("\n\n\t\t\t请输入你要查询课程编号:");scanf("%d",&id);do//检验输入是否符合要求{for(j=0;j<i-1;j++) { if(id==coursesear[j].c_num){ flag++; k=j; } }if(flag==1){system("cls");printf("\n\n\t课程编号:%d\n",coursesear[k].c_num);printf("\n\n\t课程名字:%s\n",coursesear[k].c_name);printf("\n\n\t课程学分:%d\n",coursesear[k].c_score);printf("\n\n\t课程已选人数:%d\n",coursesear[k].c_nelepeo);printf("\n\n\t课程人数上限:%d\n",coursesear[k].c_melepeo); getchar();getchar(); printf("\n\n\t1.回目录继续查询\t2.退出查询系统\n");printf("请选择:");scanf("%d",&inp);switch(inp){case1:c_searchs();case2:stu_login();default:{printf("\n\t没有这项服务\t请按任意键重新输入");getchar();getchar();}} }else{system("cls");printf("\n\n\t不存在对应统计\n");printf("\n\n\t1.回目录继续查询\t2.退出查询系统\n");printf("请选择:");scanf("%d",&inp);switch(inp){case1:c_searchs();case2:stu_login();default:{printf("\n\t没有这项服务\t请按任意键重新输入");getchar();getchar();}} }}while(inp!=1);}voidc_searchm(){voidstu_login();voidc_searchm();intid,i=0,j,inp,k;intflag=0;FILE*fp;structcoursecoursesear[10];if((fp=fopen("course.dat","rb"))==NULL)//判定课程信息是否存在{system("cls");printf("\n\n\t课程不存在\t按任意键返回");getchar();getchar();stu_login();}else//存在话循环读取文件中信息直到文件指针到文件尾部{do{fread(&coursesear[i],sizeof(structcourse),1,fp);i=i+1;}while(!feof(fp));fclose(fp);}system("cls");printf("\n\n\t\t\t请输入你要查询课程编号:");scanf("%d",&id);do//检验输入是否符合要求{for(j=0;j<i-1;j++) { if(id==coursesear[j].c_num){ flag++; k=j; } }if(flag==1){system("cls");printf("\n\n\t课程编号:%d\n",coursesear[k].c_num);printf("\n\n\t课程名字:%s\n",coursesear[k].c_name);printf("\n\n\t课程学分:%d\n",coursesear[k].c_score);printf("\n\n\t课程已选人数:%d\n",coursesear[k].c_nelepeo);printf("\n\n\t课程人数上限:%d\n",coursesear[k].c_melepeo); getchar();getchar(); printf("\n\n\t1.回目录继续查询\t2.退出查询系统\n");printf("请选择:");scanf("%d",&inp);switch(inp){case1:c_searchm();case2:man_login();default:{printf("\n\t没有这项服务\t请按任意键重新输入");getchar();getchar();}} }else{system("cls");printf("\n\n\t不存在对应统计\n");printf("\n\n\t1.回目录继续查询\t2.退出查询系统\n");printf("请选择:");scanf("%d",&inp);switch(inp){case1:c_searchm();case2:man_login();default:{printf("\n\t没有这项服务\t请按任意键重新输入");getchar();getchar();}} }}while(inp!=1);}voidc_add()//增加课程{voidc_add();voidman_login();inti=0,j,inp;FILE*fp;structcoursecourse_new;structcoursecourses[10];system("cls");printf("\n\n\t\t请输入课程信息");printf("\n\n\t\t1.课程编号:");scanf("%d",&course_new.c_num);printf("\n\n\t\t2.课程名字:");scanf("%s",course_new.c_name);printf("\n\n\t\t3.课程学分:");scanf("%d",&course_new.c_score);printf("\n\n\t\t4.课程已选人数:");scanf("%d",&course_new.c_nelepeo);printf("\n\n\t\t5.课程人数上限:");scanf("%d",&course_new.c_melepeo);if((fp=fopen("course.dat","rb"))!=NULL){do{fread(&courses[i],sizeof(structcourse),1,fp);i=i+1;}while(!feof(fp));fclose(fp);for(j=0;j<=i-1;j++)if(course_new.c_num==courses[j].c_num){system("cls");pr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年AI托管加盟合作合同
- 2026年医疗入驻AI 解决方案协议
- 小学社区养老院代际互动活动频次-基于2024年活动策划与执行记录
- 小学信息技术与生活应用相结合的教学案例教学研究课题报告
- 2026年隐患排查治理试题完整版答案
- 2026年主题党日活动考试题库及答案
- 财务报告审计申请书范文
- 当兵提问心理测试题及答案
- 心理课程快乐的秘密
- 道路路基施工与维护考试题(含参考答案)
- 2026国家药品监督管理局药品和医疗器械审评检查京津冀分中心、华中分中心、西南分中心第一批编外招聘122人笔试参考题库及答案解析
- (二模)东北三省三校2026年高三第二次模拟考试 语文试卷(含答案及解析)
- 2026年青岛金家岭金融聚集区管理委员会公开选聘工作人员考试参考题库及答案解析
- (一模)江门市2026年高三高考模拟考试政治试卷(含答案详解)
- 河北省石家庄市2026届高三一模考试化学试卷(含答案)
- 2026年武汉警官职业学院单招职业技能考试题库带答案详解
- 我国专利执行责任保险法律制度的困境与突破:基于案例视角的深度剖析
- 人员被困应急预案(设备内部、深基坑、罐体等)
- 自然特征与农业课件2025-2026学年人教版八年级地理下册
- 涉密检查材料归档办法
- 初等变换初等矩阵教案
评论
0/150
提交评论