学生选修课系统设计.doc

上传人:李司机 文档编号:1180432 上传时间:2022-07-14 格式:DOC 页数:24 大小:181.28KB
返回 下载 相关 举报
学生选修课系统设计.doc_第1页
第1页 / 共24页
学生选修课系统设计.doc_第2页
第2页 / 共24页
学生选修课系统设计.doc_第3页
第3页 / 共24页
学生选修课系统设计.doc_第4页
第4页 / 共24页
学生选修课系统设计.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《学生选修课系统设计.doc》由会员分享,可在线阅读,更多相关《学生选修课系统设计.doc(24页珍藏版)》请在三一办公上搜索。

1、目录 第一局部:课程设计编号、名称、容2第二局部:程序总体设计思路3第三局部:程序功能模块划分、图示及流程图4第四局部:程序设计数据、运行结果10第五局部:程序的优缺点16第六局部:程序改良思路18第七局部:附录源代码20第一局部:课程设计编号、名称、容编号 :C语言课程设计指导书71页第九题名称:学生选修课系统设计【要求】假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课时间,实验或上级时间,学分,开课学期等信息,学生可按要求如总学分不超过60自由选课。是设计一选修课课程系统,使只能提供以下功能:(1) 系统一菜单方式工作(2) 课程信息和学生选课信息录入功能课程信息用文件

2、保存输入(3) 课程信息浏览功能输出(4) 查询功能至少一种查询方式算法(5) 按学分查询(6) 某门课程学生选修情况可选项【提示】 数据构造可用构造体,包括授课和选课两个构造体,其中课程构造体成员包括编号,课程名称,课程性质,总学时,授课学时,实验或上机时间,学分,开课学期。学秀构造体成员包括学号,课程编号,该构造体的建立主要是为了查询某门课程学生选修情况。第二局部 程序总体设计思路由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。在编写本程序的过程中,首先借助教师给的指导材料,确定了目标程序运行的次序与界面,即本程序首先运行【用户系统】菜单界面,其次程序运行【用户

3、插入课程信息】及【用户浏览课程】菜单界面,最后程序运行【统计选课信息】及【选课】界面。如果用户选择【插入用户信息】选项那么程序进入出入用户课程信息界面。需要一次输入课程编号,课程名称,课程性质,总学时,授课时间,实验或上机学时,学分,开课学期等信息;如果用户选择【浏览课程】选项那么程序进入【浏览课程】界面,将会显示所选课程的信息;如果用户选择【查询】选项那么会显示按学分查询的选课信息;一次用户还可以查看某门课程的所选情况。 其次,根据目标程序运行的次序与界面,确定设计顺利,设计界面包括各局部菜单与用户提示信息。再次是按照程序运行的各界面下的菜单功能编写各功能模块,并调试程序各功能模块,使各模块

4、能够稳定高效准确地完成对应功能。最后是程序的总体调试及功能完善,此局部从学生选课的角度出发,考虑了更加人性化、更加合理、更加高效准确、更加智能化的设计。说明:关于各个功能模块的设计思路及程序运行具体过程见报告的第三、四、五局部。第三局部:程序功能模块划分、图示及流程图3.1 系统的构造图 学生可选修课系统进行选课统计选课情况查找选课信息浏览课程信息插入课程信息学生可选修课系统学生端3.2 系统的功能模块图menu()insertbrowsersearchxuanke_information3.3 函数模块说明函数模块 功 能 说 明 insert 插入课程信息 bowser 浏览课程信息 se

5、arch 查找课程信息 xanke_information 进展选课统计 3.4 功能模块说明及其流程图1【插入信息功能】【设计思路简述】先检查文件是否为空,假设为空,那么显示cannot open file 假设不为空,那么屏幕显示the format is num name xingzhi time ttime etime mark term::及需要一次插入课程编号,课程名称,课程性质,总学时,授课时间,实验或上机学时,学分,开课学期的信息。填写完这些信息后,程序将关闭所写入文件,并跳入系统菜单进展其他功能的运行。【模块流程图】开 始 无文件 有文件 cannot open fileth

6、e format is num name xingzhi time ttime etime mark term::time ttime etime mark term:系 统 菜 单2【浏览信息功能】【设计思路简述】如果所浏览信息的文件为空文件,那么屏幕显示cannot open course !否那么会显示以前输入的课程信息课程编号,课程名称,课程性质,总学时,授课时间,实验或上机学时,学分,开课学期。执行完毕后,程序先关闭浏览文件,再跳入主菜单,进展其他功能的运行。3【查找选课信息功能】【设计思路简述】函数首先申明调用struct course c,输出input mark your wa

7、ntto search:,即按学分查询所需课程的信息。假设原函数没有文件,那么输出Cannot open course!,否那么将输出所需课程的信息。接着关闭该文件,程序跳入主菜单进展其他功能的运行。开 始无文件 有文件 显示所选课程信息time ttime etime mark term:Cannot open course !系 统 菜 单4【统计选课人数功能】【设计思路简述】函数首先调用structstudent c,输出input course -number your wantto search:假设原函数为空,那么输出Cannot open student!。否那么将输出 The

8、number choose course_num %d is %d!及选择该门课程的同学有几人。接着关闭函数,进入系统菜单。进展其他功能的运行。 5【选课功能】【设计思路简述】函数运行首先输出Please input your student_number and course number you want to choose:,如果用户输入的信息在原先输入的文件中不存在,那么屏幕显示Cannot open student!,否那么就选课成功,关闭文件,跳入系统菜单进展其他功能的运行。 6【void menu()功能】int n,w=0;printf(ntt PLEASE ENTER A N

9、UMBER FROM 0 TO 5!); printf(nnnt*MENU*); printf(ntt 1 - insert informations); printf(ntt 2 - browers informations); printf(ntt 3 - search informations); printf(ntt 4 - xuan ke informations);printf(ntt 5- xuan ke ); printf(ntt 0 - Exit system); printf(nnnt*); printf(nnnnnnttChoose the number,please:)

10、; scanf(%d,&n);doif(n5|n改良思路:1.算法上除了采用构造体数组外,考虑在程序的算法设计上引入链表构造,考察这样对数据组织存贮效率上是否具有提高作用。2.就现有知识水平、经历来看,对我来说,本程序的算法设计上已经是最精简的了。C语言知识博大精深,有必要对C语言的专著进展研究学习,多阅读别人的程序代码、多动手实践操作与设计,这样便对程序算法精简改良提供了可能。【针对第二点:用户输入错误问题】改良思路:对每个数据输入段代码进展更深的研究与分析,明确变量的类型、可能的数值,然后进展分类判断if或switch语句,必要时借助for循环语句来控制程序进展,保障各模块运行相对独立,稳

11、定准确执行各自功能。典型方法是如果输入数据错误,通过printf输出问题,并用for或(do)while构成循环,输入三次以上程序自动跳出主菜单或直到用户输入正确为止。【针对第三点:程序功能完善问题】改良思路:插入课程信息模块设计思路:可另行设置独立模块,能一次性多输入选课用户,并将其分别存放在文件中,等待用户调用查看浏览和统计。 可增加选课信息修改的功能模块设计思路: 首先系统应该正确录入用户多输入的课程信息,再独立设置校该用户选课信息模块,当用户进入菜单后提示用户是否修改选课信息,确定后用户可另行选课,最后提示用户修改成功。【针对第四点:操作界面单调问题】改良思路:C语言是面向过程的语言,

12、当今的主流语言是面向对象的语言,开发的平台大多为WINDOWS界面平台,开发的程序也主要是WINDOWS组件根底之上的图形界面程序,故可将程序要求移植到VC+之上,借助VC+强大的功能,编写WINDOWS界面程序,利用API接口函数方便调用各种WINDOWS强大功能,效劳程序,使程序更加丰富、直观、高效,生动。 第七局部:附录源代码#include #includestruct courseint num;char name15;char xingzhi10;int time;int ttime;int etime;int mark;int term;struct studentint snu

13、m;intum;/*insert*/void insert() void menu(); FILE *fp; struct course c;if(fp=fopen(course.txt,a+)=NULL) printf(cannot open filen); printf(ntInput courses information :n); printf(tthe format is num name xingzhi time ttime etime mark term:n);scanf(%d %s %s %d %d %d %d %d,&c.num,&c.name,&c.xingzhi,&c.t

14、ime,&c.ttime,&c.etime,&c.mark,&c.term); fprintf(fp,%d %s %s %d %d %d %d %d,c.num,c.name,c.xingzhi,c.time,c.ttime,c.etime,c.mark,c.term);fclose(fp);menu();/*browse liu_lan*/void browser()void menu();FILE *fp;struct course c;if(fp=fopen(course.txt,r)=NULL)printf(nCannot open course!n);for(;!feof(fp);)

15、fscanf(fp,%d%s%s%d%d%d%d%d,&c.num,&c.name,&c.xingzhi,&c.time,&c.ttime,&c.etime,&c.mark,&c.term); printf(%d %s %s %d %d %d %d %d,c.num,c.name,c.xingzhi,c.time,c.ttime,c.etime,c.mark,c.term);fclose(fp);menu();/*search*/void search()void menu();FILE *fp;struct course c;int score;printf(ninput mark your

16、 wantto search:);scanf(%d,&score);if(fp=fopen(course.txt,r)=NULL)printf(nCannot open course!n);for(;!feof(fp);)fscanf(fp,%d %s %s %d %d %d %d %d,&c.num,&c.name,&c.xingzhi,&c.time,&c.ttime,&c.etime,&c.mark,&c.term); if(c.mark=score)printf(%d %s %s %d %d %d %d %d,c.num,c.name,c.xingzhi,c.time,c.ttime,

17、c.etime,c.mark,c.term);fclose(fp);menu();/*tong ji xuan ke ren shu*/void xuanke_information()void menu();int total=0;FILE *fp;struct student c;int num;printf(ninput course -number your wantto search:); scanf(%d,&num);if(fp=fopen(student.txt,r)=NULL) printf(nCannot open student!n);for(;!feof(fp);)fsc

18、anf(fp,%d%d,&c.snum,&c.um); if(c.um=num)total+;printf(student_num=%d,course_num=%d,c.snum,c.um);fclose(fp);printf(n The number choose course_num %d is %d!,num,total);menu();/*xuanke*/void xuan_ke()void menu();int snum,um;FILE *fp;printf(nPlease input your student_number and course number you want to

19、 choose:);scanf(%d%d,&snum,&um);if(fp=fopen(student.txt,a+)=NULL)printf(nCannot open student!n);fprintf(fp,%d %d,snum,um);fclose(fp);menu();void menu() int n,w=0;printf(ntt PLEASE ENTER A NUMBER FROM 0 TO 5!); printf(nnnt*MENU*);printf(ntt 1 - insert informations); printf(ntt 2 - browers information

20、s); printf(ntt 3 - search informations); printf(ntt 4 - xuan ke informations);printf(ntt 5- xuan ke ); printf(ntt 0 - Exit system); printf(nnnt*); printf(nnnnnnttChoose the number,please:); scanf(%d,&n);doif(n5|n0)printf(nWrong! input again!);scanf(%d,&n);else w=1;while(w=0);switch(n)case 1:insert();break;case 2:browser();break;case 3:search();break;case 4:xuan_ke();break;case 5:xuanke_information();break;case 0:exit(0); main()menu();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号