c语言课程设计-学生选修课系统设计.doc_第1页
c语言课程设计-学生选修课系统设计.doc_第2页
c语言课程设计-学生选修课系统设计.doc_第3页
c语言课程设计-学生选修课系统设计.doc_第4页
c语言课程设计-学生选修课系统设计.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

选取日期中国地质大学 052081学号20081000711指导教师:目 录 第一部分:课程设计编号、名称、内容2第二部分:程序总体设计思路3第三部分:程序功能模块划分、图示及流程图4第四部分:程序设计数据、运行结果10第五部分:程序的优缺点错误!未定义书签。第六部分:程序改进思路18第七部分:附录(源代码)20第一部分:课程设计编号、名称、内容 编号 :c语言课程设计指导书71页第九题名称:学生选修课系统设计【要求】 假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课时间,实验或上级时间,学分,开课学期等信息,学生可按要求(如总学分不超过60)自由选课。是设计一选修课课程系统,使只能提供以下功能:(1) 系统一菜单方式工作(2) 课程信息和学生选课信息录入功能(课程信息用文件保存输入(3) 课程信息浏览功能输出(4) 查询功能(至少一种查询方式)算法(5) 按学分查询(6) 某门课程学生选修情况(可选项)【提示】 数据结构可用结构体,包括授课和选课两个结构体,其中课程结构体成员包括编号,课程名称,课程性质,总学时,授课学时,实验或上机时间,学分,开课学期。学秀结构体成员包括学号,课程编号,该结构体的建立主要是为了查询某门课程学生选修情况。第二部分 程序总体设计思路由于c语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。在编写本程序的过程中,首先借助老师给的指导材料,确定了目标程序运行的次序与界面,即本程序首先运行【用户系统】菜单界面,其次程序运行【用户插入课程信息】及【用户浏览课程】菜单界面,最后程序运行【统计选课信息】及【选课】界面。如果用户选择【插入用户信息】选项则程序进入出入用户课程信息界面。需要一次输入课程编号,课程名称,课程性质,总学时,授课时间,实验或上机学时,学分,开课学期等信息;如果用户选择【浏览课程】选项则程序进入【浏览课程】界面,将会显示所选课程的信息;如果用户选择【查询】选项则会显示按学分查询的选课信息;一次用户还可以查看某门课程的所选情况。 其次,根据目标程序运行的次序与界面,确定设计顺利,设计界面(包括各部分菜单与用户提示信息)。再次是按照程序运行的各界面下的菜单功能编写各功能模块,并调试程序各功能模块,使各模块能够稳定高效准确地完成对应功能。 最后是程序的总体调试及功能完善,此部分从学生选课的角度出发,考虑了更加人性化、更加合理、更加高效准确、更加智能化的设计。说明:关于各个功能模块的设计思路及程序运行具体过程见报告的第三、四、五部分。 第三部分:程序功能模块划分、图示及流程图3.1 系统的结构图 学生可选修课系统进行选课统计选课情况查找选课信息浏览课程信息插入课程信息学生可选修课系统学生端3.2 系统的功能模块图menu()insert browsersearch xuanke_information3.3 函数模块说明函数模块 功 能 说 明 insert 插入课程信息 bowser 浏览课程信息 search 查找课程信息 xanke_information 进行选课统计 3.4 功能模块说明及其流程图(1)【插入信息功能】【设计思路简述】先检查文件是否为空,若为空,则显示cannot open file 若不为空,则屏幕显示 “the format is num name xingzhi time ttime etime mark term::”及需要一次插入课程编号,课程名称,课程性质,总学时,授课时间,实验或上机学时,学分,开课学期的信息。填写完这些信息后,程序将关闭所写入文件,并跳入系统菜单进行其他功能的运行。【模块流程图】开 始 无文件 有文件 cannot open filethe 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 want to search:,即按学分查询所需课程的信息。若原函数没有文件,则输出“cannot open course ! ”,否则将输出所需课程的信息。接着关闭该文件,程序跳入主菜单进行其他功能的运行。 开 始 无文件 有文件 显示所选课程信息time ttime etime mark term:cannot open course !系 统 菜 单(4)【统计选课人数功能】【设计思路简述】函数首先调用“struct student c”,输出“input course -number your wantto search:”若原函数为空,则输出“cannot open student!”。否则将输出 the 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 number 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:); scanf(%d,&n);doif(n5|n改进思路:1.算法上除了采用结构体数组外,考虑在程序的算法设计上引入链表结构,考察这样对数据组织存贮效率上是否具有提高作用。2.就现有知识水平、经验来看,对我来说,本程序的算法设计上已经是最精简的了。c语言知识博大精深,有必要对c语言的专著进行研究学习,多阅读别人的程序代码、多动手实践操作与设计,这样便对程序算法精简改进提供了可能。【针对第二点:用户输入错误问题】改进思路:对每个数据输入段代码进行更深的研究与分析,明确变量的类型、可能的数值,然后进行分类判断(if或switch语句),必要时借助for循环语句来控制程序进行,保障各模块运行相对独立,稳定准确执行各自功能。典型方法是如果输入数据错误,通过printf输出问题,并用for或(do)while构成循环,输入三次以上程序自动跳出主菜单或直到用户输入正确为止。【针对第三点:程序功能完善问题】改进思路:插入课程信息模块设计思路:可另行设置独立模块,能一次性多输入选课用户,并将其分别存放在文件中,等待用户调用查看浏览和统计。 可增加选课信息修改的功能模块设计思路: 首先系统应该正确录入用户多输入的课程信息,再独立设置校该用户选课信息模块,当用户进入菜单后提示用户是否修改选课信息,确定后用户可另行选课,最后提示用户修改成功。 【针对第四点:操作界面单调问题】改进思路:c语言是面向过程的语言,当今的主流语言是面向对象的语言,开发的平台大多为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 snum;int cnum;/*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.xingzhi,&c.time,&c.ttime,&c. etime,&c.mark,&c.term); fprintf(fp,%d %s %s %d %d %d %d %d,c.num,,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);)fscanf(fp,%d%s%s%d%d%d%d%d,&c.num,&,&c.xingzhi,&c.time,&c.ttime,&c.etime,&c.mark,&c.term); printf(%d %s %s %d %d %d %d %d,c.num,,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 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.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.xingzhi,c.time,c.ttime,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);)fscanf(fp,%d%d,&c.snum,&um); if(um=num) total+;printf(student_num=%d,course_num=%d,c.snum,um);fclose(fp);printf(n the number choose course_num %d is %d!,num,total);menu();/*xuanke*/void xuan_ke()void menu();int snum,cnum;file *fp;printf(nplease input your student_number and course number you want to choose:);scanf(%d%d,&snum,&cnum);if(fp=fopen(student.txt,a+)=null)printf(ncannot open student!n);fprintf(fp,%d %d,snum,cnum);fclose(fp);menu();void menu()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论