课程设计任务书(学生选修课程系统9)_第1页
课程设计任务书(学生选修课程系统9)_第2页
课程设计任务书(学生选修课程系统9)_第3页
课程设计任务书(学生选修课程系统9)_第4页
课程设计任务书(学生选修课程系统9)_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、课 程 设 计 报 告课程名称 c语言课程设计 课题名称 学生选修课系统设计 专 业 班 级 学 号 姓 名 指导教师 2010年 12 月 27 日湖南工程学院课 程 设 计 任 务 书课程名称 c语言课程设计 课 题 学生选修课系统设计 专业班级 学生姓名 学 号 指导老师 审 批 任务书下达日期 2010 年 12 月 27 日任务完成日期 2011年 1 月 2日一、设计内容与设计要求1设计内容:通过该系统实现对学生选修课程信息进行录入、输出、修改、删除、插入、查询、保存等操作的管理。假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学

2、期等信息,学生可按要求(如总学分不得少于60)自由选课。设计一选修课程系统,使之能提供以下功能:1)、系统以菜单方式工作v2)、课程信息录入功能(课程信息用文件保存)3)、课程信息浏览功能4)、查询功能:(至少一种查询方式)按学分查询按课程性质查询学生选修课程(可选项)2设计要求:1)、设计正确,方案合理。2)、界面友好,使用方便。3)、程序精炼,结构清晰。4)、设计报告5000字以上,。5)、上机演示。二、进度安排第17周 星期一 布置任务,查找资料。 星期二 确定总体方案,进行详细设计。 星期三 编写程序,上机调试。 星期四 编写程序,上机调试。星期五 答辩,总结。星期六星期天 写课程设计

3、报告附:课程设计报告装订顺序:封面、任务书、目录、正文、附件、评分(a4大小的图纸及程序清单)。 正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。正文的内容:一、1、设计目的 2、总体设计(程序设计组成框图、流程图)3、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)4、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施 5、总结与体会:课程设计的心得与体会。附件:源程序清单,清单中应有足够的注释正文总字数要求在5000字以上(不含程序原代码)。目录第一部分:设计目的 1.1、设计内容、要求第二

4、部分:总体设计 2.1、总体说明 2.2、设计组成框图第三部分: 详细设计 3.1、函数功能模块图 3.2、函数功能模块说明及其流程图第四部分:调试与测试第五部分:总结与体会 5.1、对本程序的认识、优化设想 5.2、心得与体会附:源程序清单和执行结果第一部分:设计目的1.1、设计内容、要求通过该系统实现对学生选修课程信息进行录入、输出、修改、删除、插入、查询、保存等操作的管理。假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。设计一选修课程系统,使之能提供以下功能:1)、系统以菜单方式

5、工作v2)、课程信息录入功能(课程信息用文件保存)3)、课程信息浏览功能4)、查询功能:(至少一种查询方式)按学分查询按课程性质查询学生选修课程(可选项)我们知道在各行各业中离不开信息处理,这正是计算机被广泛应用于信息系统的环境。计算机的最到好处的于利用它能够进行信息管理,使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好学生选课信息而设计的。数据处理手工操作,工作量大,出错率高,出错后不易更改,造成了时间上的浪费。基于这个问

6、题,有必要建立一个学生选课系统,使学生选课信息管理工作规范化、系统化、程序化,避免学生选课管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改选课情况围绕着这样一个内容,我设计程序的目的主要是能够在用户系统菜单中完成对课程信息的录入(保存在文件内)、对已经录入的信息的浏览(即完成文件的输出)、能够按照学分查询结果。使程序可以很好的运行下去。第二部分:总体设计2.1、总体说明由于c语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。在编写本程序的过程中,首先借助指导材料,确定了目标程序运行的次序与界面,即本程序首先运行【用户系统】菜单界面,其次程序运行【用

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

8、能够稳定高效准确地完成对应功能。其中的数据结构可用结构体,包括授课和选课两个结构体,其中课程结构体成员包括编号,课程名称,课程性质,总学时,授课学时,实验或上机时间,学分,开课学期。学生结构体成员包括学号,课程编号,该结构体的建立主要是为了查询某门课程学生选修情况。最后是程序的总体调试及功能完善,此部分从学生选课的角度出发,考虑了更加人性化、更加合理、更加高效准确、更加智能化的设计。2.2设计的组成框图学生可选修课系统进行选课统计选课情况查找选课信息浏览课程信息插入课程信息学生可选修课系统学生端由于总的流程图结构过于庞大,我把流程图细化成了各部分小的流程图,对每一部分的运行都有详细的体现,在第

9、三部分详细设计里面有描述。 第三部分、详细设计3.1函数功能模块图insertmenu() browsersearch xuanke_information3.2、函数功能模块说明及其流程图函数模块 功 能 说 明 insert 插入课程信息 bowser 浏览课程信息 search 查找课程信息 xanke_information 进行选课统计 功能模块说明及其流程图(1)【插入信息功能】先检查文件是否为空,若为空,则显示cannot open file 若不为空,则屏幕显示 “the format is num name xingzhi time ttime etime mark term

10、::”及需要一次插入课程编号,课程名称,课程性质,总学时,授课时间,实验或上机学时,学分,开课学期的信息。填写完这些信息后,程序将关闭所写入文件,并跳入系统菜单进行其他功能的运行。【模块流程图】开 始 无文件 有文件 cannot open file输入顺序是:课程编号 课程名称 课程性质 总学时 授课学时 实验或上机学时 学分 开课学期系 统 菜 单(2)【浏览信息功能】 如果所浏览信息的文件为空文件,则屏幕显示“cannot open course !”否则会显示以前输入的课程信息(课程编号,课程名称,课程性质,总学时,授课时间,实验或上机学时,学分,开课学期)。执行完毕后,程序先关闭浏览

11、文件,再跳入主菜单,进行其他功能的运行。(3)【查找选课信息功能】 函数首先申明调用“struct course c ”,输出输入你要查找的学分:,即按学分查询所需课程的信息。若原函数没有文件,则输出“cannot open course ! ”,否则将输出所需课程的信息。接着关闭该文件,程序跳入主菜单进行其他功能的运行。 流程模块图:开 始无文件 有文件 显示所选课程信息time ttime etime mark term:cannot open course !系 统 菜 单(4)【统计选课人数功能】函数首先调用“struct student c”,输出“输入你要查找的课程编号:”若原函数

12、为空,则输出“cannot open student!”。否则将输出“选择课程%d 的人数是:%d!(及选择该门课程的同学有几人)。接着关闭函数,进入系统菜单。进行其他功能的运行。 (5)【选课功能】【设计思路简述】函数运行首先输出“请输入你的学生号以及你要查找的课程编号:”,如果用户输入的信息在原先输入的文件中不存在,则屏幕显示“cannot open student!”,否则就选课成功,关闭文件,跳入系统菜单进行其他功能的运行。(6)【void menu()功能】int n,w=0;printf(ntt please enter a number from 0 to 5!); printf

13、(nnnt*选课系统菜单*); printf(ntt 1 -插入信息); printf(ntt 2 -浏览信息); printf(ntt 3 -查找选课信息); printf(ntt 4 - 统计选课人数);printf(ntt 5- 选课); printf(ntt 0退出系统); printf(nnnt*);printf(nnnnnntt请选择(0-5)); 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;c

14、ase 2:browser();break;case 3:search();break;case 4:xuan_ke();break;case 5:xuanke_information();break;case 0:exit(0);及系统主菜单界面,依次表示插入课程信息,浏览课程信息,查找选课信息,统计选课情况,进行选课的功能。最后退出程序。第四部分:程序的调试与测试调试过程中遇到的问题主要中英文的交替问题,因为编写程序时为了统一,所以将程序全写成了英文,后来执行程序时并未遇到语法问题,算法也没有出现不适当的地方(当然可能有更加好的的算法)。但是,对于我们中国人来说,阅读起来很不方便,所以后来

15、综合考虑将英文全部换成了中文,主菜单界面也做了小的改变。为了使程序更加实用更加人性化,我在原来的程序中加入了统计学生选课人数这一功能,这样最后执行时,各步骤的界面极其操作如下:如某同学想进入选修课系统进行选课,登录后进入主菜单界面。程序主菜单界面如下:进入此界面后,选择1,程序进入插入学生课程信息界面,界面如下:学生需要一次性连续依次输入课程编号,课程名称,课程性质,总学时,授课时间,实验或上机时间,学分,开课学期的信息,如依次输入1 yuwen jichu 60 35 25 5 2界面显示如下:若用户要浏览选课信息,则输入2按回车键,界面显示如下:若用户要查找课程信息,输入3后按回车键,界面

16、显示如下:系统及依学分进行查询,输入5后按回车键后界面显示如下: 如果用户要选择选课功能,则输入5按回车键,界面显示如下:界面提示需要用户输入学生学号和课程号,比如输入2 5后按回车键,界面显示如下:此时,选课成功。系统以课程号进行查询,输入4,界面如下:如输入5按回车键界面显示如下:选课完毕,要退出程序,可直接输入0按回车键。第五部分:总结与体会5.1、对本程序的认识与总结、优化设想(1)【程序的优点】算法是程序的灵魂,程序的优点首先表现在算法上的优点,其次才是功能上的。算法上的优点:主要体现在以下二点:1. 程序采用模块化设计,程序的主体的功能大都由各功能模块完成。程序设计模块化有利于程序

17、的进一步改进及有助于程序执行效率的提高。2. 程序执行次序控制、for循环、功能模块函数的巧妙结合。例如插入课程信息界面结束,可返回系统菜单界面,主要是借助插入信息模块返回的值来实现的。另外,对结构体数组数据的修改采用了层次明显的程序步骤,有助于相应功能模块的准确高效运行。程序的源代码是在边看书、边查资料、询问、长期思考与设计、调试、试验的基础上参照资料编写出来的,在编写程序的过程中,得到了许多的锻炼,编程的思维也得以塑造。程序源代码经过数次精简,但仍然比较庞大,应是编程经验不足造成的,虽不能说本程序源代码比他人的类似代码运行效率更高,占有资源更少,但是程序执行的准确性还是能够保障的。功能上的

18、优点:主要体现在以下三点:1.简洁明了的程序菜单。程序主要采用了六组层次不同的菜单,相互独立又相互联系,巧妙相接,符合用户的使用习惯与思维。2.人性化的程序提示语言,程序提示语言较人性化,不仅大多为祈使语句、疑问句,而且提示明确,具有较强的明确的指导作用。程序提示不仅层次分明,提示方式多样,而且提示信息井然有序,更加有利于用户顺利、准确地进行程序的操作。3.智能化的模块设计。程序的智能化主要体现在减少了许多人工操作。如功能模块操作结束后,均会返回主菜单进行下一模板的运行,并提示是否再进行类似的操作,这样给用户带来了操作的方便,大大提高了学生选课的效率。本程序达到了c语言课程设计题目的所有要求。

19、能够按系统菜单方式工作。其次,有课程信息和学生选课信息录入功能(课程信息用文件保存输入),还有课程信息浏览功能输出,以及要求的查询功能(至少一种查询方式)算法;按学分查询;某门课程学生选修情况(可选项)的功能要求。与此同时,程序各模块开发设计依据了程序的具体实际的使用情景,而有所改进,使其更具有实用性。(2)【程序的缺点】主要表现在以下四点:1.程序虽然经过多次精简,但仅仅是形式上、小范围的精简,仍未得到本质上的精简,即未找到更加简单、更加高效、更加合理、更小占用的资源的算法。2.程序仍然存在不合理的地方,例如程序某些部分输入错误会导致程序中止或转向其他功能模块,即程序建议用户注意提示,进行合

20、理的准确的输入,这样更有利于管理工作。3.程序功能仍然不够完善。例如信息表达方式不丰富,比较单一,缺少图片、音乐等元化表达方式。(3)【优化设想】主要是针对上部分程序的优缺点提出程序的优化思路。针对第一点:程序算法精简问题:改进思路1.算法上除了采用结构体数组外,考虑在程序的算法设计上引入链表结构,考察这样对数据组织存贮效率上是否具有提高作用。2.就现有知识水平、经验来看,对我来说,本程序的算法设计上已经是最精简的了。语言知识博大精深,有必要对c语言的专著进行研究学习,多阅读别人的程序代码、多动手实践操作与设计,这样便对程序算法精简改进提供了可能。针对第二点:用户输入错误问题:改进思路:对每个

21、数据输入段代码进行更深的研究与分析,明确变量的类型、可能的数值,然后进行分类判断(if或switch语句),必要时借助for循环语句来控制程序进行,保障各模块运行相对独立,稳定准确执行各自功能。典型方法是如果输入数据错误,通过printf输出问题,并用for或(do)while构成循环,输入三次以上程序自动跳出主菜单或直到用户输入正确为止。针对第三点:程序功能完善问题:改进思路:插入课程信息模块设计思路:可另行设置独立模块,能一次性多输入选课用户,并将其分别存放在文件中,等待用户调用查看浏览和统计。 可增加选课信息修改的功能模块设计思路:首先系统应该正确录入用户多输入的课程信息,再独立设置校该

22、用户选课信息模块,当用户进入菜单后提示用户是否修改选课信息,确定后用户可另行选课,最后提示用户修改成功。 针对第四点:操作界面单调问题:改进思路:c语言是面向过程的语言,当今的主流语言是面向对象的语言,开发的平台大多为windows界面平台,开发的程序也主要是windows组件基础之上的图形界面程序,故可将程序要求移植到vc+之上,借助vc+强大的功能,编写windows界面程序,利用api接口函数方便调用各种windows强大功能,服务程序,使程序更加丰富、直观、高效,生动。5.2心得与体会 大的方面来讲,通过这一次的程序设计,强化了我对基本理论联系实际的能力,加深对c+程序结构和面向对象程

23、序设计思想的理解;通过程序中相关功能的实现,加强我们对c+程序设计的操控能力。在设计过程中以及程序的调试过程中遇到了许多问题,有不该犯的,习惯性的错误,也有因一些知识还未掌握而犯的错误,不过经过一次次的检查,修改,编译,以及问同学、老师一些我不懂的知识、问题。渐渐的错误也就少犯了,懂得知识也多了,同时也使自己更加细心和耐心。通过该系统的课程设计分析,掌握了模块化设计的方法,理解和运用了结构化程序设计的思想和方法,掌握和提高了运用c语言进行程序设计的能力。程序设计的过程,实际上是确定解决问题的详细步骤,而这个步骤通常叫做流程,在程序设计过程中理清楚整个问题的流程很重要,然后采取逐步细化的方法实现

24、整个程序。对于一个较大的应用程序,我们一般不可能一次就设计出一个很完善的系统。通常要先设计满足基本要求的系统,然后再测试或者在使用的过程中不断完善,慢慢地做成一个功能很完善选修课程管理系统。通过此次的程序设计我学到了许多。首先,在程序设计中的第一步是自己编写了一些功能较为单一的小程序,虽然是小程序,并且有时候还是错误的,但所用的知识却都是我们本学期学习的重点知识。在这个过程中让我也把这些知识复习了一遍,强化了知识! 其次,这次的程序设计给我们的将所学知识运用于解决实际问题的机会,不再只是单单死记硬背应付考试,从而让人更有激情,也让我感受到了编写软件程序的乐趣。但是不仅仅是如此,更为重要的是在运

25、用所学知识的过程中,记住这些知识,并能够广泛的运用!这一次课程设计让我感受到学程序可以锻炼缜密的思维了。因为平时练习题的都是小程序,所以句段比较少,一些错误都很容易被检查出来,但是这次的程序却是上百段的语句,难以检查,似乎也没有经验去怎么检查,那一刹那感觉到很急,但又不知如何是好,可是又不好轻易的向老师询问,因为好像蛮简单,相信自己能够检查出来,所以我一般都是独立思考的完成的,只有少部分是在和与同学讨论下完成的。在编写程序中,可以说是细节决定成败,因为不管程序的语句是多是少,但是只要有一条语句或语法不正确,就不能使程序得到所需要的结果。没能够使自己编写出来的程序等到想要的结果,意味着这是一个不

26、理想的程序,对于本次编写来说则是失败的。当然,在这次的程序设计过程中我也遇到了许多的问题,深感到自己的不足。通过这次实训,也使我们发现了许多问题。在程序设计中,我认识到自己还有很多的知识没学好,基础知识没理清,而且许多东西还要去翻书,去上网搜索。而且遇到一些小错误运行不出来,就会烦躁不安,觉得有些自暴自弃或者抱怨心态,以后要克服,尽量保持一颗良好的心态,学好c语言,也学好用c语言编写一个按要求的系统。我觉得我还有许多方面需要提高。首先我要继续学习好c语言的基础知识,然后能在电脑上熟练的运用。然后每天都能写一些程序,上网时候多看一些优秀的教程和优秀的代码。遇到问题时多和同学讨论,并且多弄出几套方

27、案,多锻炼自己结决问题的能力和与同学合作的能力。最后,通过这次为数不多的几天计算机课程设计实践,我领会了许多关于c语言的知识,理解巩固了我的c语言的理论知识,我相信这对我们将来到社会工作将会有莫大的帮助。同时它也让我知道,只要你努力,任何东西都不会太难 附:源程序清单#include #includestruct course int numchar name15;char xingzhi10;int time;int ttime;int etime;int term;struct studentint snum;int cnum;/*insert*/void insert() void me

28、nu(); file *fp; struct course c;if(fp=fopen(course.txt,a+)=null) printf(cannot open filen); printf(nt输入课程信息 :n); printf(t顺序是:课程编号 名称 性质 总学时 授课学时 实验或上机学时 学分 开课学期: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,

29、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.et

30、ime,&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(n输入你要查找的学分:);scanf(%d,&score);if(fp=fopen(course.txt,r)=null)printf(ncannot open course!n);

31、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(n输入你要查找的课程编号:); scanf(%d,&num);if(fp=fopen

温馨提示

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

评论

0/150

提交评论