大学生软件工程C++课程设计学生选课系统Word文件下载.docx

上传人:b****6 文档编号:19155726 上传时间:2023-01-04 格式:DOCX 页数:15 大小:91.42KB
下载 相关 举报
大学生软件工程C++课程设计学生选课系统Word文件下载.docx_第1页
第1页 / 共15页
大学生软件工程C++课程设计学生选课系统Word文件下载.docx_第2页
第2页 / 共15页
大学生软件工程C++课程设计学生选课系统Word文件下载.docx_第3页
第3页 / 共15页
大学生软件工程C++课程设计学生选课系统Word文件下载.docx_第4页
第4页 / 共15页
大学生软件工程C++课程设计学生选课系统Word文件下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

大学生软件工程C++课程设计学生选课系统Word文件下载.docx

《大学生软件工程C++课程设计学生选课系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《大学生软件工程C++课程设计学生选课系统Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。

大学生软件工程C++课程设计学生选课系统Word文件下载.docx

学生选课系统

假定有n门课程,每门课程有课程编号,课程名称,课程性质,学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于15)自由选课。

试设计一个选修

课程系统,使之能提供以下功能:

(1)系统以菜单方式工作

(2)课程信息和学生选课信息录入功能(课程信息用文件保存)

(3)课程信息浏览功能

(4)查询功能

(5)按学分查询

(6)某门课程学生选修情况(可选项)

3.课程设计说明书

⑴概要设计

一、模块说明

本系统是针对高校学生的选修课程而设计,通过本系统高校学生可以很方便地进行自由选课。

主要的功能要求是:

n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求自由选课。

主要要求实现的功能如下:

1课程信息录入功能:

能根据提示将各课程的相关信息进行输入并保存;

2课程信息浏览功能:

能将已经录入并保存的信息进行浏览;

3查询功能:

可根据不同的查询方式查询相应的课程信息。

其中查询方式有按学分查询和按课程性质查询两种;

由此思路,可设计出本系统主要由一个Class类及其五个成员函数组成。

课题所要求的功能由各个函数分别得以实现。

首先,在Class类内定义了一些成员变量,用来保存课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,还对它的成员变量进行了声明。

然后,在类外,通过作用域运算符将类内声明的成员函数定义,以及进行相应的操作,以实现相应的功能。

主要包括功能要求中的五大功能,即信息输入、信息浏览、按学分查询课程、按课程性质查询课程等。

最后,在主函数中设置目录显示。

用switch瓜分不同的功能选项。

系统根据用户输入的符号,调用相应的成员函数,完成功能的实现

、模块结构图

 

三、系统流程图

⑵详细设计

各功能模块设计思路及流程图:

各个功能函数的具体实现如下:

1.录入函数模块:

首先,创建一个文件输出流对象outfile,打开文件,判断文件是否存在。

通过while设一个无限循环,当给出指定条件时退出。

在循环中,调用cout函数来提示用户输入相应的信息,如课程

编号、名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期等等。

将需要的课程输入完毕之后,可根据提示再输入“t”,即可返回主菜单,重新进行功能的选择。

该流程图如下:

2.浏览函数模块:

该函数首先创建了输入流文件对象infile,使用语句infile.open(file),然后定义一个string类型的

二维数组,用来保存从文本内读取的信息,用for循环保证保存不止一门课程的信息。

最后,cout

输出显示所有保存的信息。

流程图如下:

3•查找功能,即按学分查找和按课程性质查找,具体的实现如下:

i.按课程性质查找:

创建输入流文件对象infile,然后定义一个string类型的二维数组,用来保存从文本内读取的信息,比较用户输入的字符和保存的信息中那些课程的性质相对应,将相应的课程信息进行输出显示,

ii.按课程学分查找:

如果用户输入的学分与所保存的信息想对应,则将对应的课程信息输出显示。

输入“0”可返回主菜。

4.课程设计成果

各部骤操作界面如下:

1.进入主菜单显示如下:

2.录入课程信息并保存界面如下:

Y:

10B1

^:

nath.fiTmust

64S^t:

60at:

4

30

豔饕开始信息录入i書辅入i轉呈编请输入课程笛

晴输入总竽时i霸

鶴入諭學期】2812-2813

程信息嗟权觀开始信息录入嚴忘退岀

请选择操fl

**」—C—世■rZ*7^^^l:

FiE^*9r~3f-■IrlILJ.“ET■*_■=STU^nLJ--

FJ!

K|yJIZifiJKhJX-jI

统系吗F;

课选生作

1

兰R自也息澹一豆耳0_i>

4L/-1」j课撃

55^->

>

来选t2-A0-

4.查询课程信息界面如下:

辰输入学分:

3Q

编号I容称】性质】总学时】讲授课I实验课I学分丨开课学期

B1n&

thnust4302^12-2013

选抒査询方iV

详玻瞇类羞査询

2-学分查询

5.返回界面如下:

弹卷奠型蛍询蚩分矍询

誌息息

晖选「a-Afi-

源代码如下:

#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;

请输入开课学期:

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++)

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];

l++;

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]<

endl;

Find_by_Kind(stringtemp)

if(arr[i][2]==temp)

{cout<

endl;

Find()

选择查询方式:

1->

按课程类型查询"

2->

按学分查询"

0->

返回"

inti;

cin>

i;

switch(i)

case1:

请输入课程类型:

\n"

charkind[100];

kind;

Find_by_Kind(kind);

case2:

请输入学分:

floatc;

c;

Find_by_Credit(c);

if(i==0)

intmain()

CourseCOURSE;

欢迎来到学生选课系统

\n

请选择操作\n"

按1->

录入课程信息

按2->

浏览课程信息

按3->

查询课程信息

按0->

退出系统\n"

COURSE.Courselnput();

COURSE.CourseOutput();

case3:

COURSE.Find();

case0:

exit(0);

return0;

5.课程设计心得

这次第一次接触课程设计,最初看到题目时,感觉那五道题目都很难很难,比平时做的题目大多了,涉及的知识点一看就很多。

选题目时我选了第五道一一学生选课系统。

读了好几遍题目,才有了一点点轮廓和框架。

还有其中的用到文件操作的部分,感到是最难的。

刚开始时也在网上搜索过相关题目,但每个学校老师布置的课程设计题目毕竟有所不同,再者毫无思考的去照搬照抄别人的成果也对自己毫无益处。

最终我决定一定要自己亲手完成这次课程设计。

经过课程设计前两天的上机实践,对于这个题目我构建出了初步的程序框架。

大一后半学期都是在学习基于对象的程序设计思想,而这就是在培养我们面对陌生的全新的程序任务时,不必为它表面的复杂烦琐而胆怯,我们需要冷静思考出其中每一部分的构造组成及功能,然后分成模块一步步去细分,这样只需分开去钻研每一小部分的程序内容。

具体的对于我选的这道“学生选课系统”题目,我现在本子上列出来了程序需要完成的功能一

-

的设计。

然后根据“课程”的特点赋予它编号、名称、学分等性质,这就是需要在程序的类中所命名的私有成员数据。

类设计完之后,就等于说框架已经摆在面前,要对每一部分进行详细设计。

对于课程信息的录入和浏览,其实考察的是对文件的保存和打开的应用。

录入模块先创建一个文件输出流对象outfile,打开文件,判断文件是否存在。

通过while设一个无限循环,当给出指定条件时退出。

在循环中,调用cout函数来提示用户输入相应的信息,如课程编号、名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期等等。

二浏览模块与之类似,是创建的输入流对象infile;

在课程查询模块中,如按课程性质查询,先

创建输入流文件对象infile,然后定义一个string类型的二维数组,用来保存从文本内读取的信息,比较用户输入的字符和保存的信息中那些课程的性质相对应,将相应的课程信息进行输出显示。

按学分查询只需换一下比较对象即可。

一周多的课程设计完成了一道题目,这次体验收获颇丰。

这次题目的编写考察了我们对输出界面的设计、文件的打开与保存、类的创建等重点内容。

在编写过程中经历了十分难熬的阶段,因为对程序整体的控制力不是很好,特别是程序编写完成后第一次编译时间,遇到太多不知怎么修改的错误,而且仍有许多拼写错误,这是不应该的,也是以后应该注意改正的地方。

现在感觉这些题目太不简单,也许以后再回首这些题目会是基础的内容,所以从现在开始就应多练习一些类似的题目,把其它题目也尝试一下,我相信会对我们自身有很大的提高。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1