完整word版大学生软件工程C++课程设计学生选课系统Word格式文档下载.docx
- 文档编号:4536184
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:18
- 大小:378.42KB
完整word版大学生软件工程C++课程设计学生选课系统Word格式文档下载.docx
《完整word版大学生软件工程C++课程设计学生选课系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《完整word版大学生软件工程C++课程设计学生选课系统Word格式文档下载.docx(18页珍藏版)》请在冰点文库上搜索。
5)总结:
调试分析过程描述:
包括测试数据、测试输出结果以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等)包括课程设计过程中的学习体会与收获、对C++和本次课程设计的认识等内容.;
任务:
学生选课系统
假定有n门课程,每门课程有课程编号,课程名称,课程性质,学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于15)自由选课。
试设计一个选修课程系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)课程信息和学生选课信息录入功能(课程信息用文件保存)
(3)课程信息浏览功能
(4)查询功能
(5)按学分查询
(6)某门课程学生选修情况(可选项)
3.课程设计说明书
概要设计
一、模块说明
本系统是针对高校学生的选修课程而设计,通过本系统高校学生可以很方便地进行自由选课。
主要的功能要求是:
n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求自由选课。
主要要求实现的功能如下:
①
课程信息录入功能:
能根据提示将各课程的相关信息进行输入并保存;
②课程信息浏览功能:
能将已经录入并保存的信息进行浏览;
③
查询功能:
可根据不同的查询方式查询相应的课程信息。
其中查询方式有按学分查询和按课程性质查询两种;
由此思路,可设计出本系统主要由一个Class类及其五个成员函数组成。
课题所要求的功能由各个函数分别得以实现。
首先,在Class类内定义了一些成员变量,用来保存课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,还对它的成员变量进行了声明。
然后,在类外,通过作用域运算符将类内声明的成员函数定义,以及进行相应的操作,以实现相应的功能。
主要包括功能要求中的五大功能,即信息输入、信息浏览、按学分查询课程、按课程性质查询课程等。
最后,在主函数中设置目录显示。
用switch瓜分不同的功能选项。
系统根据用户输入的符号,调用相应的成员函数,完成功能的实现。
二、模块结构图
三、系统流程图
详细设计
各功能模块设计思路及流程图:
各个功能函数的具体实现如下:
1.录入函数模块:
首先,创建一个文件输出流对象outfile,打开文件,判断文件是否存在。
通过while设一个无限循环,当给出指定条件时退出。
在循环中,调用cout函数来提示用户输入相应的信息,如课程编号、名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期等等。
将需要的课程输入完毕之后,可根据提示再输入“t”,即可返回主菜单,重新进行功能的选择。
该流程图如下:
2.浏览函数模块:
该函数首先创建了输入流文件对象infile,使用语句infile.open(file),然后定义一个string类型的二维数组,用来保存从文本内读取的信息,用for循环保证保存不止一门课程的信息。
最后,cout输出显示所有保存的信息。
流程图如下:
3.查找功能,即按学分查找和按课程性质查找,具体的实现如下:
.按课程性质查找:
创建输入流文件对象infile,然后定义一个string类型的二维数组,用来保存从文本内读取的信息,比较用户输入的字符和保存的信息中那些课程的性质相对应,将相应的课程信息进行输出显示,
.按课程学分查找:
如果用户输入的学分与所保存的信息想对应,则将对应的课程信息输出显示。
输入“0”可返回主菜。
4.课程设计成果
各部骤操作界面如下:
1.进入主菜单显示如下:
2.录入课程信息并保存界面如下:
4.查询课程信息界面如下:
5.返回界面如下:
源代码如下:
#include<
conio.h>
iostream>
fstream>
string>
usingnamespacestd;
classCourse
{
public:
voidCourseInput();
voidCourseOutput();
voidFind();
voidFind_by_Credit(float);
voidFind_by_Kind(string);
private:
intcoursenum;
stringcoursename;
stringcoursekind;
intcoursehour;
intteachhour;
intexperimenthour;
floatcredit;
stringcourseterm;
};
voidCourse:
:
CourseInput()
ofstreamoutfile("
D:
\\f1.txt"
ios:
out);
if(!
outfile)
{
cerr<
<
"
openerror!
endl;
exit
(1);
}
while
(1)
cout<
"
课程信息\n"
;
按任意键开始信息录入\n"
输入t退出\n"
if(getch()=='
t'
)
{
break;
}
cout<
请输入课程编号:
cin>
>
coursenum;
请输入课程名称:
coursename;
请输入课程性质:
coursekind;
请输入总学时:
coursehour;
请输入授课学时:
teachhour;
请输入上机学时:
experimenthour;
请输入学分:
credit;
cout<
请输入开课学期:
courseterm;
outfile<
coursenum<
coursename<
coursekind<
coursehour
<
teachhour<
experimenthour<
credit<
courseterm<
endl;
outfile.close();
}
CourseOutput()
ifstreaminfile("
in);
infile)
编号|名称|性质|总学时|讲授课|实验课|学分|开课学期\n"
stringarr[80][8];
intl=0;
while(!
infile.eof())
for(intj=0;
j<
8;
j++)
infile>
arr[l][j];
l++;
}
for(inti=0;
i<
l;
i++)
cout<
arr[i][j]<
\t"
infile.close();
Find_by_Credit(floattemp)
infile>
arr[l][0]>
arr[l][1]>
arr[l][2]>
arr[l][3]>
arr[l][4]>
arr[l][5]>
arr[l][6]>
arr[l][7];
if(atof(arr[i][6].c_str())==temp)
arr[i][0]<
arr[i][1]<
<
arr[i][2]<
<
arr[i][3]<
arr[i][4]<
arr[i][5]<
arr[i][6]<
arr[i][7]<
Find_by_Kind(stringtemp)
exit
(1);
infile.eof())
if(arr[i][2]==temp)
Find()
while
(1)
选择查询方式:
1->
按课程类型查询"
2->
按学分查询"
0->
返回"
inti;
cin>
i;
switch(i)
case1:
请输入课程类型:
\n"
charkind[100];
cin>
kind;
Find_by_Kind(kind);
case2:
请输入学分:
floatc;
c;
Find_by_Credit(c);
if(i==0)
intmain()
CourseCOURSE;
欢迎来到学生选课系统\n"
请选择操作\n"
按1->
录入课程信息\n"
按2->
浏览课程信息\n"
按3->
查询课程信息\n"
按0->
退出系统\n"
COURSE.CourseInput();
COURSE.CourseOutput();
case3:
COURSE.Find();
case0:
exit(0);
return0;
5.课程设计心得
这次第一次接触课程设计,最初看到题目时,感觉那五道题目都很难很难,比平时做的题目大多了,涉及的知识点一看就很多。
选题目时我选了第五道——学生选课系统。
读了好几遍题目,才有了一点点轮廓和框架。
还有其中的用到文件操作的部分,感到是最难的。
刚开始时也在网上搜索过相关题目,但每个学校老师布置的课程设计题目毕竟有所不同,再者毫无思考的去照搬照抄别人的成果也对自己毫无益处。
最终我决定一定要自己亲手完成这次课程设计。
经过课程设计前两天的上机实践,对于这个题目我构建出了初步的程序框架。
大一后半学期都是在学习基于对象的程序设计思想,而这就是在培养我们面对陌生的全新的程序任务时,不必为它表面的复杂烦琐而胆怯,我们需要冷静思考出其中每一部分的构造组成及功能,然后分成模块一步步去细分,这样只需分开去钻研每一小部分的程序内容。
具体的对于我选的这道“学生选课系统”题目,我现在本子上列出来了程序需要完成的功能——学生课程信息的录入、浏览、查询等功能以及系统界面的设计,而这决定着程序中共有成员函数的设计。
然后根据“课程”的特点赋予它编号、名称、学分等性质,这就是需要在程序的类中所命名的私有成员数据。
类设计完之后,就等于说框架已经摆在面前,要对每一部分进行详细设计。
对于课程信息的录入和浏览,其实考察的是对文件的保存和打开的应用。
录入模块先创建一个文件输出流对象outfile,打开文件,判断文件是否存在。
二浏览模块与之类似,是创建的输入流对象infile;
在课程查询模块中,如按课程性质查询,先创建输入流文件对象infile,然后定义一个string类型的二维数组,用来保存从文本内读取的信息,比较用户输入的字符和保存的信息中那些课程的性质相对应,将相应的课程信息进行输出显示。
按学分查询只需换一下比较对象即可。
一周多的课程设计完成了一道题目,这次体验收获颇丰。
这次题目的编写考察了我们对输出界面的设计、文件的打开与保存、类的创建等重点内容。
在编写过程中经历了十分难熬的阶段,因为对程序整体的控制力不是很好,特别是程序编写完成后第一次编译时间,遇到太多不知怎么修改的错误,而且仍有许多拼写错误,这是不应该的,也是以后应该注意改正的地方。
现在感觉这些题目太不简单,也许以后再回首这些题目会是基础的内容,所以从现在开始就应多练习一些类似的题目,把其它题目也尝试一下,我相信会对我们自身有很大的提高。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word 大学生 软件工程 C+ 课程设计 学生 选课 系统