C++课程设计学生选课系统设计Word文档格式.docx
- 文档编号:16996976
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:15
- 大小:120.63KB
C++课程设计学生选课系统设计Word文档格式.docx
《C++课程设计学生选课系统设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《C++课程设计学生选课系统设计Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
首先,在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)按性质查询,显然是两个独立的函数,但其实现过程很像似。
(2)数据库概念结构设计(E-R图)
(3)数据库逻辑结构设计
(4)类层次图
4界面设计与各功能模块实现
(1)、功能实现的文件模块:
在主函数中设置目录显示。
设计一个友好、漂亮的界面,通过switch语句进行选择进入相应的功能模块,建立一个class类的对象a,用对象名调用class类的功能函数,恰当的使用清屏函数。
通过对象a调用相应的成员函数,如a.Input()、a.OutPut()、a.Search()等等,这些公有函数成员就是这个系统要求设计的功能模块。
各个功能函数的具体实现如下:
1、录入函数模块:
首先,创建一个文件输出流对象outfile,打开文件,判断文件是否存在。
通过while设一个无限循环,当给出指定条件时退出。
在循环中,调用cout函数来提示用户输入相应的信息,如课程编号、名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期等等。
将需要的课程输入完毕之后,可根据提示再输入“f”,即可返回主菜单,重新进行功能的选择。
该步骤界面设计操作图如下:
(输入“1”,根据提示输入课程信息:
)
显示(浏览)函数模块:
该函数首先创建了输入流文件对象infile,使用语句infile.open(file),然后定义一个string类型的二维数组,用来保存从文本内读取的信息,用for循环保证保存不止一门课程的信息。
最后,cout输出显示所有保存的信息。
操作界面图如下:
查找功能,即按学分查找和按课程性质查找,具体的实现如下:
按课程性质查找:
创建输入流文件对象infile,然后定义一个string类型的二维数组,用来保存从文本内读取的信息,比较用户输入的字符和保存的信息中那些课程的性质相对应,将相应的课程信息进行输出显示,界面设计操作图如下:
按课程学分查找:
原理同上,如果用户输入的学分与所保存的信息想对应,则将对应的课程信息输出显示。
输入“0”可返回主菜单。
具体程序见源程序清单。
该步骤界面显示如下:
5系统调试
(1)、在查找功能函数当中,刚开始我输入的课程性质用数字代替,而后面我的查找函数在进行输入比较时是用汉字进行比较的,这样就导致了查找错误,刚开始我找了好久也找不出来,后来还是在同学的帮助下终于找到了这个错误,并改正。
输出了正确的结果。
(2)、在class类当中我刚开始把成员变量如课程性质只简单的设置为字符型char,当在类外进行初始化时出现了错误,因为把要获得字符串的函数只简单的设置为字符型是不行的,它的返回得不到一个字符串,要把其设置string类型或者数组类型,这样就可以通过编译了。
(3)、进行程序调试时,事先函数中没有用到清屏,导致界面繁琐不清晰。
后来在头文件中加了#include<
windows.h>
,又在程序中适当地添加了system("
cls"
)语句,这才使得界面友好清晰。
6实验心得体会
心得
连续三天的课程设计终于要接近尾声了。
虽然接下来还要面临紧张的期末考试,但总算可以稍微松一口气。
说实话,每次做课程设计、写实验报告,我都好上火长痘好几天。
本来因为上学期的课程设计没有认真做,在网上下载了一篇类似的题目,自己作了一些修改,便跑去答辩,被老师当众批评,心里羞愧得要死!
心里暗下决心,这次试验报告一定要自己写,不管写得多差,只要自己很努力地认真在写就好了。
这次题目初看不是很难,一个类,一些成员变量,几个成员函数,将它们组合起来就OK了。
可是越写下去,便觉得处处是难题。
到最后感觉自己像处在一个大迷宫里,四周到处是出口,走近了一看,却发现那只是上面画着门的墙壁·
·
我只会定义一个类和它的成员变量以及成员函数,但要求是要有N门课程呢,还要能显示你所输入的课程信息,还要按要求将分类不同的信息挑选出来·
天哪,这可怎么办呢?
看来,要将自己输入的信息有记录地保存起来就好了。
可是老师没教这个呀(后来才知道相关内容在C语言教科书上有,上学期的课程设计也有涉及到,但由于上次的没有认真做,所以对该知识点没有印象)。
还跑去图书馆找资料,找到了相关内容,可是,答辩的时间也逼近了·
第三天上午进实验室,问同学,发现已经有人将这个题目完整地做了出来,我不得不感叹人家的才思敏捷。
也难怪哦,人家是脚踏实地,C语言的基础打得好,谁让我上学期玩去了呢?
呵·
老师在实验室里鼓励大家积极答辩,我盯着自己的作品,这个连“半成品”都谈不上的程序,这能去答辩吗?
老师也没要求必须答辩,要不,直接copy他们的程序写了实验报告交差完事了!
但这不跟上学期一样了么?
我这近三天的寝食难安不都白熬了么?
去答辩吧,就算给自己的付出一个结果吧·
老师很仁慈,我的那个程序对于题目要求根本没什么意义,也就是说我根本没完成任务。
估计老师是看我熬了这三天太可怜了,勉强让我过了。
实验做完了,心情还是有点沉重,但没上次那样难过了。
毕竟自己写的,通过思考,查资料,还是学到了不少东西的,对C语言也进行了巩固。
我要尽快将所缺的知识填补上来,然后再下次的课程设计中打个漂亮的胜仗!
7附:
源程序
#include<
conio.h>
stdlib.h>
iostream>
fstream>
string>
usingnamespacestd;
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中!
!
voidCourse:
:
CourseInfoInput()//课程信息的录入
ofstreamoutcoursefile;
//创建一个文件输出流对象
outcoursefile.open(coursefile);
//打开文件
if(!
outcoursefile)//判断文件是否存在
{
cout<
<
"
文件打开失败!
"
endl;
return;
}
while
(1)//无限循环,给出指定条件退出
***********************************课程信息***********************************\n"
按任意键开始信息录入\n"
输入q退出\n"
if(getch()=='
q'
{
break;
}
cout<
请输入课程编号:
cin>
>
courseNumber;
请输入课程名称:
courseName;
请输入课程性质:
courseKind;
请输入总学时:
coursePeriod;
请输入授课学时:
schoolPeriod;
请输入实验&
上机学时:
experimentPeriod;
请输入学分:
credithour;
cout<
请输入开课学期:
courseterm;
outcoursefile<
courseNumber<
courseName<
courseKind<
coursePeriod
<
schoolPeriod<
experimentPeriod<
credithour<
endl;
outcoursefile.close();
//关闭输出流文件
}
CourseInfoOutPut()//课程信息的浏览
ifstreamincoursefile;
//创建输入流文件对象
incoursefile.open(coursefile);
//打开
incoursefile)//判断文件存在
文件读取失败"
cout<
课程编号|课程名称|课程性质|总学时|授课学时|实验上机学时|学分|开课学期\n"
stringarrcourse[100][100];
//定义一个string类型的二维数组,用来保存从文本内读取的信息
intline=0;
memset(arrcourse,0,sizeof(arrcourse));
//将数组清空
while(!
incoursefile.eof())//文件不为空的条件设置
for(intj=0;
j<
7;
j++)
incoursefile>
arrcourse[line][j];
line++;
}
for(inti=0;
i<
line;
i++)
cout<
arrcourse[i][j]<
\t"
incoursefile.close();
SearchByCredithour(floattempch)
incoursefile>
arrcourse[line][0]>
arrcourse[line][1]>
arrcourse[line][2]>
arrcourse[line][3]
>
arrcourse[line][4]>
arrcourse[line][5]>
arrcourse[line][6];
//文件流读取数据
if(atof(arrcourse[i][6].c_str())==tempch)//比较
arrcourse[i][0]<
\t"
arrcourse[i][1]<
<
arrcourse[i][2]<
<
arrcourse[i][3]<
arrcourse[i][4]<
arrcourse[i][5]<
arrcourse[i][6]<
\n------------------------------------------------------------------------------"
\n\n"
SearchByCourseKind(stringstrtemp)///课程类型查询
incoursefile.eof())
if(arrcourse[i][2]==strtemp)
\t"
\t"
\n-----------------------------------------------------------------------------"
Search()
while
(1)
选择查询方式:
(1).按课程类型查询"
(2).按学分查询"
(0).返回"
inti;
i;
switch(i)
case1:
请输入课程类型:
\n"
charstrtmp[100];
cin>
strtmp;
SearchByCourseKind(strtmp);
case2:
请输入学分:
floatftemp;
ftemp;
SearchByCredithour(ftemp);
if(i==0)
intmain()
CourseExcourse;
***************************************************************************\n"
*学生选课系统*\n"
*请选择操作*\n"
*
(1).录入课程信息*\n"
*
(2).浏览课程信息*\n"
*(3).查询课程信息*\n"
*(0).退出系统*\n"
***************************************************************************"
Excourse.CourseInfoInput();
Excourse.CourseInfoOutPut();
case3:
Excourse.Search();
case0:
exit(0);
return1;
课程设计评分表
课题名称:
项目
评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日期:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计 学生 选课 系统 设计