学生选修课程系统 开发.docx

上传人:b****6 文档编号:4016554 上传时间:2022-11-27 格式:DOCX 页数:15 大小:177.44KB
下载 相关 举报
学生选修课程系统 开发.docx_第1页
第1页 / 共15页
学生选修课程系统 开发.docx_第2页
第2页 / 共15页
学生选修课程系统 开发.docx_第3页
第3页 / 共15页
学生选修课程系统 开发.docx_第4页
第4页 / 共15页
学生选修课程系统 开发.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

学生选修课程系统 开发.docx

《学生选修课程系统 开发.docx》由会员分享,可在线阅读,更多相关《学生选修课程系统 开发.docx(15页珍藏版)》请在冰豆网上搜索。

学生选修课程系统 开发.docx

学生选修课程系统开发

 

计算机程序设计课程实践

课题名称 学生选修课程系统 

专业

学号

姓名

指导教师

2013年09月 18日

 

目录

1系统需求分析3

2总体设计4

3详细设计5

4界面设计与各功能模块实现6

5系统调试9

6后记10

7附:

源程序11

 

1系统需求分析

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

主要的问题描述是(功能要求):

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

(2)、主要要求实现的功能如下:

① 课程信息录入功能:

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

②课程信息浏览功能:

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

③ 查询功能:

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

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

系统流程图如下:

 

 

(3)、输入输出要求:

系统以菜单方式工作。

用户根据每一个功能模块输入相应内容,然后进行相应的操作。

如需进行其他操作,可返回主菜单。

输出的内容要有一个良好的界面,使用户看清楚明白。

2总体设计

(1)、系统功能分析

本系统主要由一个Class类及其五个成员函数组成。

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

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

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

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

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

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

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

(2)、各个模块之间的关系如下图:

 

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)、在class类当中我刚开始把成员变量如课程性质只简单的设置为字符型char,当在类外进行初始化时出现了错误,因为把要获得字符串的函数只简单的设置为字符型是不行的,它的返回得不到一个字符串,要把其设置string类型或者数组类型,这样就可以通过编译了。

(2)、进行程序调试时,事先函数中没有用到清屏,导致界面繁琐不清晰。

后来在头文件中加了#include,又在程序中适当地添加了system("cls")语句,这才使得界面友好清晰。

6后记

两周的课程设计终于要接近尾声了。

这次题目初看不是很难,一个类,一些成员变量,几个成员函数,将它们组合起来就ok了。

可是越写下去,便觉得处处是难题。

我只会定义一个类和它的成员变量以及成员函数,但要求是要有n门课程,还要能显示你所输入的课程信息,还要按要求将分类不同的信息挑选出来······实在有些头晕。

看来,要将自己输入的信息有记录地保存起来。

实践做完了,通过思考,查资料,还是学到了不少东西的,对知识也进行了巩固。

我要尽快将不足的知识填补上来,以便以后的设计能做好。

 

7附:

源程序

#include

#include

#include

#include

#include

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<<"文件打开失败!

"<

return;

}

while

(1)//无限循环,给出指定条件退出

{

cout<<"***********************************课程信息***********************************\n";

cout<<"按任意键开始信息录入\n";

cout<<"输入q退出\n";

if(getch()=='q')

{

break;

}

cout<<"请输入课程编号:

";

cin>>courseNumber;

cout<<"请输入课程名称:

";

cin>>courseName;

cout<<"请输入课程性质:

";

cin>>courseKind;

cout<<"请输入总学时:

";

cin>>coursePeriod;

cout<<"请输入授课学时:

";

cin>>schoolPeriod;

cout<<"请输入实验&上机学时:

";

cin>>experimentPeriod;

cout<<"请输入学分:

";

cin>>credithour;

cout<<"请输入开课学期:

";

cin>>courseterm;

outcoursefile<

<<""<

}

outcoursefile.close();//关闭输出流文件

}

voidCourse:

:

CourseInfoOutPut()//课程信息的浏览

{

ifstreamincoursefile;//创建输入流文件对象

incoursefile.open(coursefile);//打开

if(!

incoursefile)//判断文件存在

{

cout<<"文件读取失败";

return;

}

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

{

for(intj=0;j<7;j++)

{

cout<

}

cout<

}

incoursefile.close();

}

voidCourse:

:

SearchByCredithour(floattempch)

{

ifstreamincoursefile;//创建输入流文件对象

incoursefile.open(coursefile);//打开

if(!

incoursefile)//判断文件存在

{

cout<<"文件读取失败";

return;

}

stringarrcourse[100][100];//定义一个string类型的二维数组,用来保存从文本内读取的信息

intline=0;

memset(arrcourse,0,sizeof(arrcourse));//将数组清空

while(!

incoursefile.eof())//文件不为空的条件设置

{

incoursefile>>arrcourse[line][0]>>arrcourse[line][1]>>arrcourse[line][2]>>arrcourse[line][3]

>>arrcourse[line][4]>>arrcourse[line][5]>>arrcourse[line][6];//文件流读取数据

line++;

}

cout<<"课程编号|课程名称|课程性质|总学时|授课学时|实验上机学时|学分|开课学期\n";

for(inti=0;i

{

if(atof(arrcourse[i][6].c_str())==tempch)//比较

{

cout<

<

<

}

}

cout<<"\n\n";

incoursefile.close();

}

voidCourse:

:

SearchByCourseKind(stringstrtemp)///课程类型查询

{

ifstreamincoursefile;//创建输入流文件对象

incoursefile.open(coursefile);//打开

if(!

incoursefile)//判断文件存在

{

cout<<"文件读取失败";

return;

}

stringarrcourse[100][100];

intline=0;

memset(arrcourse,0,sizeof(arrcourse));

while(!

incoursefile.eof())

{

incoursefile>>arrcourse[line][0]>>arrcourse[line][1]>>arrcourse[line][2]>>arrcourse[line][3]

>>arrcourse[line][4]>>arrcourse[line][5]>>arrcourse[line][6];

line++;

}

cout<<"课程编号|课程名称|课程性质|总学时|授课学时|实验上机学时|学分|开课学期\n";

for(inti=0;i

{

if(arrcourse[i][2]==strtemp)

{

cout<

<

<

}

}

cout<<"\n\n";

}

voidCourse:

:

Search()

{

while

(1)

{

cout<<"选择查询方式:

"<

cout<<"

(1).按课程类型查询"<

cout<<"

(2).按学分查询"<

cout<<"(0).返回"<

inti;

cin>>i;

switch(i)

{

case1:

cout<<"请输入课程类型:

\n";

charstrtmp[100];

cin>>strtmp;

SearchByCourseKind(strtmp);

break;

case2:

cout<<"请输入学分:

\n";

floatftemp;

cin>>ftemp;

SearchByCredithour(ftemp);

break;

}

if(i==0)

{

break;

}

}

}

intmain()

{

CourseExcourse;

while

(1)

{

cout<<"***************************************************************************\n";

cout<<"*学生选课系统*\n";

cout<<"*请选择操作*\n";

cout<<"*

(1).录入课程信息*\n";

cout<<"*

(2).浏览课程信息*\n";

cout<<"*(3).查询课程信息*\n";

cout<<"*(0).退出系统*\n";

cout<<"***************************************************************************";

cout<

inti;

cin>>i;

switch(i)

{

case1:

Excourse.CourseInfoInput();

break;

case2:

Excourse.CourseInfoOutPut();

break;

case3:

Excourse.Search();

break;

case0:

exit(0);

}

}

return1;

}

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

当前位置:首页 > 初中教育 > 政史地

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

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