版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C 课程设计学生选课系统设计目录1 系统需求分析 22 总体设计 33 详细设计 44 界面设计与各功能模块实现 6.5 系统调试 106 实验心得体会 107 附:源程序 13C 课程设计学生选课系统设计1 系统需求分析(1)、本系统是针对高校学生的选修课程而设计,通过本系统高校学生 可以很方便地进行自由选课。主要的问题描述是(功能要求): n 门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或 上机学时,学分,开课学期等信息, 学生可按要求 (如总学分不得少于 60) 自由选课。(2)、主要要求实现的功能如下: 课程信息录入功能:能根据提示将各课程的相关信息进行输 入
2、并保存; 课程信息浏览功能:能将已经录入并保存的信息进行浏览; 查询功能:可根据不同的查询方式查询相应的课程信息。其中 查询方式有按学分查询和按课程性质查询两种;系统流程图如下:(3 )、输入输出要求:系统以菜单方式工作。用户根据每一个功能模块输入相应内容, 然后进行相应的操作。如需进行其他操作,可返回主菜单。输出的内容要 有一个良好的界面,使用户看清楚明白。2总体设计(1 )、系统功能分析本系统主要由一个 Class类与其五个成员函数组成。课题所要求的功 能由各个函数分别得以实现。首先,在Class类内定义了一些成员变量,用来保存课程编号,课程名称,课程性质,总学时,授课学时,实验或上 机学
3、时,学分,幵课学期等信息,还对它的成员变量进行了声明,如:然后,在类外,通过作用域运算符将类内声明的成员函数定义,以与 进行相应的操作,以实现相应的功能。主要包括功能要求中的五大功能, 即信息输入、信息浏览、按学分查询课程、按课程性质查询课程等。最后,在主函数中设置目录显示。用switch瓜分不同的功能选项。系统根据用户输入的符号,调用相应的成员函数,完成功能的实现。(2 )、各个模块之间的关系如下图:3详细设计(1)数据库需求分析该程序主要包含一个Class类和一个main()函数。其中Class 类In put(),OutPut(),Search(),SearchByscore(float
4、),SearchByK in d(string)函数来实现各功能。像在Input()信息输入函数中,ofstreamoutfile 创建一个文件输出流对象语句就要用到系统库函数fstream ,而con io.h则是Con sole (键盘和屏幕)输出输入函数的头文件,con -Con sole , io - i nput,output 。程序中各功能函数如 SearchBy (float) 按分数查询和 SearchByKi nd(stri ng) 按性质查询,显然是两个独立的 函数,但其实现过程很像似。(2)数据库概念结构设计(E R图)(3)数据库逻辑结构设计(4) 类层次图课程课程编号
5、课程名字课程性质 总学时授课学时实验或上机学时 学分开课学期课程信息录入功能 课程信息浏览功能查询功能 按学分查询按课程性质查询学生选修课程4界面设计与各功能模块实现(1 )、功能实现的文件模块:在主函数中设置目录显示。设计一个友好、漂亮的界面,通过switch语句进行选择进入相应的功能模块,建立一个class类的对象a,用对象名调用class类的功能函数,恰当的使用清屏函数。通过对象a调用相应的成员函数,如 a.Input()、a.OutPut()、a.Search()等等,这些公有函数成 员就是这个系统要求设计的功能模块。各个功能函数的具体实现如下:、录入函数模块:首先,创建一个文件输出流
6、对象outfile,打开文件,判断文件是否存在。通过while设一个无限循环,当给出指定条件时退出。在循环中, 调用cout函数来提示用户输入相应的信息,如课程编号、名称、课程性 质、总学时、授课学时、实验或上机学时、学分、开课学期等等。将需要的课程输入完毕之后,可根据提示再输入“ f”,即可返回主菜单,重新进 行功能的选择。该步骤界面设计操作图如下:轻开始信息录入(|4*«1输入E退出(输入“ 1 ”,根据提示输入课程信息:)_! x:D0CUMEnT5 AIMO 5ETTIN右虫KD孰莫面山亡hu"inlp:6时期 编名性吋学fiJ;学 谍心授蓋亍开 入入入入入入入1A
7、 主启溝青主呈IR靑主IR青 TL- - IL- p TJ > tl- > r Tt Tt > IL-任 按意 任 按统 系 与U1号修0倩必44学-» 4 - H 一 4显示(浏览)函数模块:该函数首先创建了输入流文件对象 infile,使用语句in (file),然后定义一 个string类型的二维数组,用来保存从文本内读取的信息,用for循环保证保存不止一门课程的信息。最后,cout输出显示所有保存的信息。操作 界面图如下:查找功能,即按学分查找和按课程性质查找,具体的实现如下:按课程性质查找:创建输入流文件对象in file,然后定义一个stri ng类 型
8、的二维数组,用来保存从文本内读取的信息,比较用户输入的字符和保存的信息中那些课程的性质相对应,将相应的课程信息进行输出显示,界面 设计操作图如下:叭"匸:D0匸LJMEIN巧AND肛TTING5诣帕黨面Debu叭谭皐举飜人课程类型鲁蜃编号!课程名称:课程性质丨总学时!授课学时!实验上机学时!学分I开谱1信号与系统 大二上学期高数必修4458狗拼音半按课程学分查找:原理同上,如果用户输入的学分与所保存的信息想对 应,则将对应的课程信息输出显示。输入“0”可返回主菜单。具体程序见源程序清单。该步骤界面显示如下:SB口| x|翼型入课程类型:B讎编号!谍程名称:课程性质:总学时:捺课学时:
9、实验上机学吋:学分:开课电 期2艺术选修3523122大一上学期美才选修2313103询:型询 桑查 方宾'J1 询课学回 杳®® 择n m 诜<1<2<0-K董学生选课杀统开wM匚查询请劉M请选择操乍,'狗扌幵音半5 系统调试(1)、 在查找功能函数当中,刚开始我输入的课程性质用数字代替,而后面我的查找函数在进行输入比较时是用汉字进行比较的,这样就导致了查找错误,刚开始我找了好久也找不出来,后来还是在同学的帮助下终 于找到了这个错误,并改正。输出了正确的结果。(2)、在 class 类当中我刚开始把成员变量如课程性质只简单的设置 为字符型
10、 char ,当在类外进行初始化时出现了错误, 因为把要获得字符串 的函数只简单的设置为字符型是不行的,它的返回得不到一个字符串,要 把其设置 string 类型或者数组类型,这样就可以通过编译了。( 3)、进行程序调试时, 事先函数中没有用到清屏, 导致界面繁琐不 清晰。后来在头文件中加了 #include<windows.h> ,又在程序中适当地 添加了 system("cls") 语句,这才使得界面友好清晰。6 实验心得体会心得连续三天的课程设计终于要接近尾声了。虽然接下来还要面临紧张的 期末考试,但总算可以稍微松一口气。说实话,每次做课程设计、写实验报告
11、,我都好上火长痘好几天。本来 因为上学期的课程设计没有认真做,在网上下载了一篇类似的题目,自己 作了一些修改,便跑去答辩,被老师当众批评,心里羞愧得要死!心里暗 下决心,这次试验报告一定要自己写,不管写得多差,只要自己很努力地 认真在写就好了。这次题目初看不是很难,一个类,一些成员变量,几个成员函数,将它们组合起来就 OK 了。可是越写下去,便觉得处处是难题。到最后感觉自己像处在一个大迷宫里,四周到处是出口,走近了一看,却发现那只是上面画着门的墙壁我只会定义一个类和它的成员变量以与成员函数,但要求是要有 N 门 课程呢,还要能显示你所输入的课程信息,还要按要求将分类不同的信息 挑选出来天哪,这
12、可怎么办呢?看来,要将自己输入的信息有记录地保存 起来就好了。可是老师没教这个呀(后来才知道相关内容在 C 语言教科书 上有,上学期的课程设计也有涉与到,但由于上次的没有认真做,所以对 该知识点没有印象) 。还跑去图书馆找资料,找到了相关内容,可是,答 辩的时间也逼近了第三天上午进实验室, 问同学, 发现已经有人将这个题目完整地做了出来,我不得不感叹人家的才思敏捷。也难怪哦,人家是脚踏实地,C 语言的基础打得好,谁让我上学期玩去了呢?呵老师在实验室里鼓励大家积极答辩, 我盯着自己的作品, 这个连 “半成 品”都谈不上的程序,这能去答辩吗?老师也没要求必须答辩,要不,直 接 copy 他们的程序
13、写了实验报告交差完事了!但这不跟上学期一样了 么?我这近三天的寝食难安不都白熬了么?去答辩吧,就算给自己的付出 一个结果吧老师很仁慈, 我的那个程序对于题目要求根本没什么意义, 也就是说我 根本没完成任务。估计老师是看我熬了这三天太可怜了,勉强让我过了。实验做完了, 心情还是有点沉重, 但没上次那样难过了。 毕竟自己写的, 通过思考,查资料,还是学到了不少东西的,对 C 语言也进行了巩固。我 要尽快将所缺的知识填补上来,然后再下次的课程设计中打个漂亮的胜仗!7 附:源程序#include<conio.h> #include<stdlib.h> #include<i
14、ostream> #include<fstream> #include<string> using namespace std; class Courseprivate:int courseNumber;string courseName;string courseKind;int coursePeriod;int schoolPeriod;int experimentPeriod;float credithour;string courseterm;public:void CourseInfoInput();/ 信息输入void CourseInfoOutPut
15、();/ 信息输出void Search(); / 查找信息void SearchByCredithour(float); / 按照学分查找void SearchByCourseKind(string); / 按照课程;类型查找 ;const char* coursefile="C:course.txt" / 将课程信息定位到 C 盘下的 course.txt 中!void Course:CourseInfoInput() / 课程信息的录入ofstream outcoursefile; / 创建一个文件输出流对象 outcourse(coursefile); / 打开文件
16、if(!outcoursefile) / 判断文件是否存在cout << " 文件打开失败! "<< endl;return ;while(1) / 无限循环,给出指定条件退 出cout <<H*课程信息*n"录入cout <<按任意键开始信息n"cout <<输入 q 退出n"if(getch()='q')break;cout<<" 请输入课程编号 : " cin>>courseNumber;cout<<&quo
17、t; 请输入课程名称 :" cin>>courseName;cout<<" 请输入课程性质 :" cin>>courseKind;cout<<" 请输入总学时 :" cin>>coursePeriod;cout<<" 请输入授课学时 :"cin>>schoolPeriod;cout<<" 请输入实验 & 上机学时 :" cin>>experimentPeriod;cout<<&q
18、uot; 请输入学分: "cin>>credithour;cout<<" 请输入开课学期: "cin>>courseterm;outcoursefile<<courseNumber<<" "<<courseName<<""<<courseKind<<" "<<coursePeriod<<" "<<schoolPeriod<<&quo
19、t; "<<experimentPeriod<<""<<credithour<<" "<<endl;outcourse(); / 关闭输出流文件void Course:CourseInfoOutPut()ifstream incoursefile;incourse(coursefile);if(!incoursefile)cout << " 文件读取失败 "return ;cout << " 课程编号 | 课程名称 实验上机学时 |
20、 学分 |开课学期 n"string arrcourse100100; 数组,用来保存从文本内读取的信息int line=0;/ 打开/ 课程信息的浏览/ 创建输入流文件对象/ 判断文件存在| 课程性质 | 总学时 | 授课学时 |/ 定义一个 string 类型的二维memset(arrcourse,0,sizeof(arrcourse); / 将数组清空while(!incourse() / 文件不为空的条件设置 for(int j=0;j<7;j+)incoursefile>>arrcourselinej;line+;for(int i=0;i<line
21、;i+)for(int j=0;j<7;j+)cout << arrcourseij <<"t"cout << endl;incourse();void Course:SearchByCredithour(float tempch)ifstream incoursefile;/ 创建输入流文件对象incourse(coursefile); / 打开if(!incoursefile) / 判断文件存在cout << " 文件读取失败 "return ;string arrcourse100100; /
22、定义一个 string 类型的二维 数组,用来保存从文本内读取的信息int line=0;memset(arrcourse,0,sizeof(arrcourse); / 将数组清空while(!incourse() / 文件不为空的条件设置incoursefile>>arrcourseline0>>arrcourseline1>>arrcours eline2>>arrcourseline3>>arrcourseline4>>arrcourseline5>>arrcourseline6;/ 文件流读取数据lin
23、e+;cout << " 课程编号 | 课程名称 | 课程性质 | 总学时 | 授课学时 | 实验上机学时 | 学分 |开课学期 n"for(int i=0;i<line;i+)t课程类型查询ifstream incoursefile;/ 创建输入流文件对象incourse(coursefile);/ 打开if(atof(arrcoursei6.c_str()=tempch) / 比较cout << arrcoursei0 <<" t "<< arrcoursei1<<" t &
24、quot; << arrcoursei2<<" t "<< arrcoursei3<<" t" << arrcoursei4<<"t "<<arrcoursei5<<""<<arrcoursei6<<"n"<< endl;cout << "nn"incourse();void Course:SearchByCourseKind(str
25、ing strtemp)/cout << " 文件读取失败 "return ;string arrcourse100100;int line=0;memset(arrcourse,0,sizeof(arrcourse);while(!incourse()incoursefile>>arrcourseline0>>arrcourseline1>>arrcours eline2>>arrcourseline3>>arrcourseline4>>arrcourseline5>>arrc
26、ourseline6;line+;cout << " 课程编号 | 课程名称 | 课程性质 | 总学时 | 授课学时 | 实验上机学时 | 学分 |开课学期 n"for(int i=0;i<line;i+)if(arrcoursei2=strtemp)cout << arrcoursei0 <<" t"<< arrcoursei1<<"<< arrcoursei3<<" t" << arrcoursei4<<" tII<<arrcoursei5<<"t"<<arrcoursei6<<"n"<< endl;cout << "nn"void Course:Search()while(1)cout << " 选择查询方式 :" << endl; cout << "(1). 按课程类型查询 " << endl; cou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 剖宫产术后饮食禁忌与建议
- 护理课件制作软件下载
- 护理服务中的护理信息化建设
- 剖宫产术后产后恢复运动
- 危重症患者的机械通气管理
- 护理礼仪概述与重要性
- 快手算法工程师面试要点详解
- 基于绿色建筑理念的人才公寓物业服务
- 列车长安全管理制度
- 快消品仓库主管面题与解析
- 购买羊合同协议
- 2025年江苏省南京市联合体中考语文模拟试卷(一)
- SJG 46 – 2023《建设工程安全文明施工标准》
- 船舶危险源 甲板风险源清单
- 人工智能在绩效评价中的应用-全面剖析
- 部编版小学语文六年级下册必读书阅读训练试题及答案(全册)
- 《机电设备维修与维护(第2版)》高职全套教学课件
- 化工企业职业健康培训课件
- 初中数学新课程标准(2024年版)
- 中药灌肠疗法课件
- 市政绿化养护及市政设施养护服务方案(技术方案)
评论
0/150
提交评论