完整word版C课程设计 学生选课系统设计_第1页
完整word版C课程设计 学生选课系统设计_第2页
完整word版C课程设计 学生选课系统设计_第3页
完整word版C课程设计 学生选课系统设计_第4页
完整word版C课程设计 学生选课系统设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、目录1 系统需求分析 2 总体设计 3 详细设计 4 界面设计与各功能模块实现5 系统调试 6 实验心得体会 7 附:源程序 1系统需求分析:n门课程,每门课程有 实验或上机学时,学分,60)自由选课。(1)、本系统是针对高校学生的选修课程而设计,通过本系统高校学生可以很 方便地进行自由选课。主要的问题描述是(功能要求) 课程编号,课程名称,课程性质,总学时,授课学时, 开课学期等信息,学生可按要求(如总学分不得少于(2)、主要要求实现的功能如下: 课程信息录入功能:能根据提示将各课程的相关信息进行输入并 保存; 课程信息浏览功能:能将已经录入并保存的信息进行浏览; 查询功能:可根据不同的查询

2、方式查询相应的课程信息。其中查询方式有按学分查询和按课程性质查询两种;系统流程图如下:(3)、输入输出要求:系统以菜单方式工作。用户根据每一个功能模块输入相应内容, 然后进 行相应的操作。如需进行其他操作,可返回主菜单。输出的内容要有一个良好的界面,使用户看清楚明白。2总体设计(1)、系统功能分析本系统主要由一个Class类及其五个成员函数组成。课题所要求的功能由各 个函数分别得以实现。首先,在 Class类内定义了一些成员变量,用来保存课程 编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课 学期等信息,还对它的成员变量进行了声明,如:然后,在类外,通过作用域运算符将类内

3、声明的成员函数定义,以及进行相应的操作,以实现相应的功能。主要包括功能要求中的五大功能,即信息输入、 信息浏览、按学分查询课程、按课程性质查询课程等。最后,在主函数中设置目录显示。用switch瓜分不同的功能选项。系统根据用户输入的符号,调用相应的成员函数,完成功能的实现。(2)、各个模块之间的关系如下图:学生选修课程系统设计TInput()TOut put()SearchBysco re()TSearchByKi nd()CourseMain类函数3详细设计(1)数据库需求分析该程序主要包含一个 Class类和一个main()函数。其中Class类中有Inp ut(),Out Put(),S

4、earch(),SearchByscore(float),SearchByKi nd(stri ng)函数来实现各功能。像在Input()信息输入函数中,ofstream outfile 创 建一个文件输出流对象语句就要用到系统库函数fstream,而conio.h则是Console (键盘和屏幕)输出输入函数的头文件,con - Console,io -input,output 。程序中 各功能 函数如 SearchBy (float) 按分数查询和 SearchByK in d(stri ng)按性质查询,显然是两个独立的函数,但其实现过程 很像似。(2)数据库概念结构设计(E R图)(3

5、) 数据库逻辑结构设计(4) 类层次图课程课程编号课程名字课程性质 总学时授课学时实验或上机学时 学分开课学期课程信息录入功能 课程信息浏览功能 查询功能 按学分查询 按课程性质查询 学生选修课程4界面设计与各功能模块实现(1)、功能实现的文件模块:在主函数中设置目录显示。设计一个友好、漂亮的界面,通过switch语句进行选择进入相应的功能模块,建立一个class类的对象a用对象名调用class类的 功能函数,恰当的使用清屏函数。通过对象a调用相应的成员函数,如a.Input()、 a.OutPut()、a.Search(等等,这些公有函数成员就是这个系统要求设计的功能模 块。各个功能函数的具

6、体实现如下:、录入函数模块:首先,创建一个文件输出流对象outfile ,打开文件,判断文件是否存在。通过while设一个无限循环,当给出指定条件时退出。在循环中,调用 cout函 数来提示用户输入相应的信息,如课程编号、名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期等等。将需要的课程输入完毕之后,可根 据提示再输入“ f”,即可返回主菜单,重新进行功能的选择。该步骤界面设计操 作图如下:(输入“ T,根据提示输入课程信息:) 删牛J也刚刖iLMMhUM凰ttjl!肚IIH粗上编名性3 :学 学课验竄 课课豐授睾开 用主何主诵主币玄冋圭冃主冃按任盟轉袴息录A 输入f退岀001

7、娜系统44学吋大二上学期课程信自* 按任意籬开始禱息录入 输入f退岀显示(浏览)函数模块:该函数首先创建了输入流文件对象in file,使用语句in file. open (file),然后定义 一个string类型的二维数组,用来保存从文本内读取的信息,用 for循环保证保 存不止一门课程的信息。最后,cout输出显示所有保存的信息。操作界面图如下:冋怛WCHTIb11 It M 十 IJIIll UN凶课程编号!课程名称!课程性质:总学时 期12Q2:授课学时!实验上机学时!学分;开课尋信号与系统艺术美术3高數4必修木二上学期 选修 大一上学职修6444352312231310必條dai/

8、iSB481012 3H-H-M 请选择操作:查找功能,即按学分查找和按课程性质查找,具体的实现如下:按课程性质查找:创建输入流文件对象in file,然后定义一个string类型的二 维数组,用来保存从文本内读取的信息,比较用户输入的字符和保存的信息中那 些课程的性质相对应,将相应的课程信息进行输出显示,界面设计操作图如下:廳入课程类型:8编号*课程名称I课程性质!总学时!授课学时1实验上机学时1学分:开曙信曹学期高数 day!必傷必修5864441Q20 选強r充息息息勞览询12 3-1请选择操作:SSSMi5系统调试(1) 、在查找功能函数当中,刚开始我输入的课程性质用数字代替,而后 面

9、我的查找函数在进行输入比较时是用汉字进行比较的,这样就导致了查找错 误,刚开始我找了好久也找不出来,后来还是在同学的帮助下终于找到了这个错 误,并改正。输出了正确的结果。(2) 、在class类当中我刚开始把成员变量如课程性质只简单的设置为字符型char,当在类外进行初始化时出现了错误,因为把要获得字符串的函数只简单的设置为字符型是不行的,它的返回得不到一个字符串,要把其设置string类型或者数组类型,这样就可以通过编译了。(3) 、进行程序调试时,事先函数中没有用到清屏,导致界面繁琐不清晰。后来在头文件中加了 #includevwindows.h,又在程序中适当地添加了 system(cl

10、s) 语句,这才使得界面友好清晰。6 实验心得体会心得连续三天的课程设计终于要接近尾声了。虽然接下来还要面临紧张的期末考 试,但总算可以稍微松一口气。说实话,每次做课程设计、写实验报告,我都好上火长痘好几天。本来因为 上学期的课程设计没有认真做, 在网上下载了一篇类似的题目, 自己作了一些修 改,便跑去答辩,被老师当众批评,心里羞愧得要死!心里暗下决心,这次试验 报告一定要自己写,不管写得多差,只要自己很努力地认真在写就好了。这次题目初看不是很难,一个类,一些成员变量,几个成员函数,将它们组 合起来就 OK 了。可是越写下去,便觉得处处是难题。到最后感觉自己像处在一 个大迷宫里,四周到处是出口

11、,走近了一看,却发现那只是上面画着门的墙 壁我只会定义一个类和它的成员变量以及成员函数, 但要求是要有 N 门课程呢, 还要能显示你所输 入 的课程 信 息,还 要按要求将 分类不 同的信息挑 选出 来天哪,这可怎么办呢?看来,要将自己输入的信息有记录地保存起来就好了。可是老师没教这个呀(后来才知道相关内容在 C 语言教科书上有,上 学期的课程设计也有涉及到, 但由于上次的没有认真做, 所以对该知识点没有印 象)。还跑去图书馆找资料,找到了相关内容,可是,答辩的时间也逼近了第三天上午进实验室,问同学,发现已经有人将这个题目完整地做了出来, 我不得不感叹人家的才思敏捷。也难怪哦,人家是脚踏实地,

12、 C 语言的基础打得好,谁让我上学期玩去了呢?呵老师在实验室里鼓励大家积极答辩,我盯着自己的作品,这个连“半成品” 都谈不上的程序,这能去答辩吗?老师也没要求必须答辩,要不,直接 copy 他 们的程序写了实验报告交差完事了! 但这不跟上学期一样了么?我这近三天的寝 食难安不都白熬了么?去答辩吧,就算给自己的付出一个结果吧老师很仁慈,我的那个程序对于题目要求根本没什么意义,也就是说我根本没完成任务。估计老师是看我熬了这三天太可怜了,勉强让我过了。 实验做完了,心情还是有点沉重,但没上次那样难过了。毕竟自己写的,通 过思考,查资料,还是学到了不少东西的,对 C 语言也进行了巩固。我要尽快 将所缺

13、的知识填补上来,然后再下次的课程设计中打个漂亮的胜仗!7 附:源程序#include#include#include#include #include using namespace std; class Course private: int courseNumber; string courseName; string courseKind; int coursePeriod; int schoolPeriod; int experimentPeriod; float credithour; string courseterm;/信息输入/信息输出/查找信息public: void Cou

14、rseInfoInput(); void CourseInfoOutPut(); void Search();void SearchByCredithour(float); / 按照学分查找 void SearchByCourseKind(string); / 按照课程;类型查找;const char* coursefile=C:course.txt; 中!I void Course:CourseInfoInput()ofstream outcoursefile;outcoursefile.open(coursefile); if(!outcoursefile)/将课 程信息 定位到 C 盘下

15、的/课程信息的录入/创建一个文件输出流对象/打开文件/判断文件是否存在course.txt endl;cout 文件打开失败! return ; while(1)cout */无限循环,给出指定条件退出课程信息*n;cout 按任意 键开始信息录入n;cout 输入 q 退 出n;if(getch()=q) break;coutcourseNumber;coutcourseName; coutcourseKind; coutcoursePeriod; coutschoolPeriod; coutexperimentPeriod; coutcredithour;coutcourseterm; o

16、utcoursefilecourseNumbercoursePeriodcourseNamecourseKind schoolPeriod experimentPeriod credithour endl;outcoursefile.close();/关闭输出流文件void Course:CourseInfoOutPut()ifstream incoursefile; incoursefile.open(coursefile); if(!incoursefile)/课程信息的浏览/创建输入流文件对象/打开/判断文件存在cout 文件读取失败 ; return ;cout 课程编号 | 课程名称

17、 分|开课学期 n;string arrcourse100100; 内读取的信息| 课程性质 | 总学时 | 授课学时 | 实验上机学时 | 学/ 定义一个 string 类型的二维数组 ,用来保存从文本int line=0;memset(arrcourse,0,sizeof(arrcourse); /将数组清空 while(!incoursefile.eof() / 文件不为空的条件设置 for(int j=0;jarrcourselinej;line+; for(int i=0;iline;i+)for(int j=0;j7;j+)cout arrcourseij t; cout endl

18、; incoursefile.close();void Course:SearchByCredithour(float tempch) /创建输入流文件对象/打开/判断文件存在ifstream incoursefile; incoursefile.open(coursefile); if(!incoursefile) cout arrcourseline0arrcourseline1arrcourseline2arrcourseline3 arrcourseline4arrcourseline5arrcourseline6; / 文件流读取数line+;cout 课程编号 | 课程名称 | 课

19、程性质 | 总学时 | 授课学时 | 实验上机学时 | 学 分|开课学期 n;for(int i=0;iline;i+) if(atof(arrcoursei6.c_str()=tempch)cout arrcoursei0 arrcoursei2 t arrcoursei3 t arrcoursei5arrcoursei6n cout nn; incoursefile.close();void Course:SearchByCourseKind(string strtemp)/ 课程类型查询 ifstream incoursefile; incoursefile.open(coursefil

20、e); if(!incoursefile) /比较t arrcoursei1 arrcoursei4t endl;t t/创建输入流文件对象/打开/判断文件存在cout arrcourseline0arrcourseline1arrcourseline2arrcourseline3 arrcourseline4arrcourseline5arrcourseline6;line+;cout 课程编号 | 课程名称 | 课程性质 | 总学时 | 授课学时 | 实验上机学时 分|开课学期 n;for(int i=0;iline;i+) if(arrcoursei2=strtemp) arrcoursei1 tcout arrcoursei0 tarrcourse

温馨提示

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

评论

0/150

提交评论