学生选修课程系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

学生选修课程系统目录1、系统需求分析...................................................................................81.1.系统设计目的与意义.............................................................81.2.主要要求实现的功能(系统流程图)...................................81.3.输入输出要求.........................................................................92、总体设计.....................................................................................102.1.系统功能分析......................................................................102.2.系统功能结构图...................................................................103、详细设计.....................................................................................113.1.数据库需求分析...................................................................113.2.数据库概念结构设计..............................................................114、界面设计与各功能模块的实现....................................................124.1.功能实现的文件模块...........................................................135、系统调试......................................................................................错误!未定义书签。6、使用说明及心得体会..................................................................错误!未定义书签。7、附件............................................................................................错误!未定义书签。1系统需求分析(1)、系统设计的目的与意义是针对高校学生的选修课程而设计,通过本系统高校学生可以很方便地进行自由选课。主要的问题描述是(功能要求):n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。(2)、主要要求实现的功能如下:①课程信息录入功能:能根据提示将各课程的相关信息进行输入并保存;②课程信息浏览功能:能将已经录入并保存的信息进行浏览;③查询功能:可根据不同的查询方式查询相应的课程信息。其中查询方式有按学分查询和按课程性质查询两种;系统流程图如下:(3)、输入输出要求:系统以菜单方式工作。用户根据每一个功能模块输入相应内容,然后进行相应的操作。如需进行其他操作,可返回主菜单。输出的内容要有一个良好的界面,使用户看清楚明白。2总体设计(1)、系统功能分析本系统主要由一个Class类及其五个成员函数组成。课题所要求的功能由各个函数分别得以实现。首先,在Class类内定义了一些成员变量,用来保存课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,还对它的成员变量进行了声明,然后,在类外,通过作用域运算符将类内声明的成员函数定义,以及进行相应的操作,以实现相应的功能。主要包括功能要求中的五大功能,即信息输入、信息浏览、按学分查询课程、按课程性质查询课程等。最后,在主函数中设置目录显示。用switch瓜分不同的功能选项。系统根据用户输入的符号,调用相应的成员函数,完成功能的实现。(2)、系统功能之间的结构如下图:学生选修课程系统设计Course类Main函数Input()Output()SearchByscore()SearchByKind()输入与功能对应的的数字判断有否开始执行相应功能结束是否3详细设计(1)数据库需求分析该程序主要包含一个Class类和一个main()函数。其中Class类中有Input(),OutPut(),Search(),SearchByscore(float),SearchByKind(string)函数来实现各功能。像在Input()信息输入函数中,ofstreamoutfile创建一个文件输出流对象语句就要用到系统库函数fstream,而conio.h则是Console(键盘和屏幕)输出输入函数的头文件,con-Console,io--input,output。程序中各功能函数如SearchBy(float)按分数查询和SearchByKind(string)按性质查询,显然是两个独立的函数,但其实现过程很像似。类Course数据成员intcourseNumber;//课程编号stringcourseName;//课程名称stringcourseKind;//课程性质intcoursePeriod;//总学时intschoolPeriod;//请输入授课学时intexperimentPeriod;//实验&上机学时floatcredithour;//课程学分stringcourseterm;//课程开课学期成员函数voidCourseInfoInput();//信息输入voidCourseInfoOutPut();//信息输出voidSearch();//查找信息voidSearchByCredithour(float);//按照学分查找voidSearchByCourseKind(string);//按照课程;类型查找classCourse{private:intcourseNumber;stringcourseName;stringcourseKind;intcoursePeriod;intschoolPeriod;intexperimentPeriod;floatcredithour;stringcourseterm;public:voidCourseInfoInput();//信息输入voidCourseInfoOutPut();//信息输出voidSearch();//查找信息voidSearchByCredithour(float);//按照学分查找voidSearchByCourseKind(string);//按照课程;类型查找};具体如图:Course+SearchByCourseKind(string)void+SearchByCredithour(float);void+Search()void+CourseInfoOutPut()void+CourseInfoInput()void#coursetermstring#credithourfloat(2)数据库概念结构设计(E-R图)4界面设计与各功能模块实现(1)、功能实现的文件模块:课程授课学时时编号名称上级学时性质学分时时总学分开课学期输入入输出显示查找在主函数中设置目录显示。设计一个友好、漂亮的界面,通过switch语句进行选择进入相应的功能模块,建立一个class类的对象a,用对象名调用class类的功能函数,恰当的使用清屏函数。通过对象a调用相应的成员函数,如a.Input()、a.OutPut()、a.Search()等等,这些公有函数成员就是这个系统要求设计的功能模块。各个功能函数的具体实现如下:①、录入函数模块:首先,创建一个文件输出流对象outfile,打开文件,判断文件是否存在。通过while设一个无限循环,当给出指定条件时退出。在循环中,调用cout函数来提示用户输入相应的信息,如课程编号、名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期等等。将需要的课程输入完毕之后,可根据提示再输入“f”,即可返回主菜单,重新进行功能的选择。该步骤界面设计操作图如下:(输入“1”,根据提示输入课程信息:)显示(浏览)函数模块:该函数首先创建了输入流文件对象infile,使用语句infile.open(file),然后定义一个string类型的二维数组,用来保存从文本内读取的信息,用for循环保证保存不止一门课程的信息。最后,cout输出显示所有保存的信息。操作界面图如下:5系统调试(1)、在查找功能函数当中,刚开始我输入的课程性质用数字代替,而后面我的查找函数在进行输入比较时是用汉字进行比较的,这样就导致了查找错误,刚开始我找了好久也找不出来,后来还是在同学的帮助下终于找到了这个错误,并改正。输出了正确的结果。(2)、在class类当中我刚开始把成员变量如课程性质只简单的设置为字符型char,当在类外进行初始化时出现了错误,因为把要获得字符串的函数只简单的设置为字符型是不行的,它的返回得不到一个字符串,要把其设置string类型或者数组类型,这样就可以通过编译了。(3)、进行程序调试时,事先函数中没有用到清屏,导致界面繁琐不清晰。后来在头文件中加了#includewindows.h,又在程序中适当地添加了system(cls)语句,这才使得界面友好清晰。6实验心得体会两天的课程设计终于要接近尾声了。虽然接下来还要面临紧张的期末考试,但总算可以稍微松一口气。这次题目初看不是很难,一个类,一些成员变量,几个成员函数,将它们组合起来就OK了。可是越写下去,便觉得处处是难题。到最后感觉自己像处在一个大迷宫里,四周到处是出口,走近了一看,却发现那只是上面画着门的墙壁······此次c++课程设计,在指导教师的精心教导下,我学会了如何用C++编写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。总得来说,通过本次C++课程设计,让我进步成长了很多,感谢学校给了我这样一个机会。7附:源程序#includeconio.h#includestdlib.h#includeiostream#includefstream#includestringusingnamespacestd;classCourse{private:intcourseNumber;stringcourseName;stringcourseKind;intcoursePeriod;intschoolPeriod;intexperimentPeriod;floatcredithour;stringcourseterm;public:voidCourseInfoInput();//信息输入voidCourseInfoOutPut();//信息输出voidSearch();//查找信息voidSearchByCredithour(float);//按照学分查找voidSearchByCourseKind(string);//按照课程;类型查找};constchar*coursefile=C:\\course.txt;//将课程信息定位到C盘下的course.txt中!!!!!!!

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功