C++程序设计学生选课系统设计.docx

上传人:b****1 文档编号:1163191 上传时间:2023-04-30 格式:DOCX 页数:21 大小:303.21KB
下载 相关 举报
C++程序设计学生选课系统设计.docx_第1页
第1页 / 共21页
C++程序设计学生选课系统设计.docx_第2页
第2页 / 共21页
C++程序设计学生选课系统设计.docx_第3页
第3页 / 共21页
C++程序设计学生选课系统设计.docx_第4页
第4页 / 共21页
C++程序设计学生选课系统设计.docx_第5页
第5页 / 共21页
C++程序设计学生选课系统设计.docx_第6页
第6页 / 共21页
C++程序设计学生选课系统设计.docx_第7页
第7页 / 共21页
C++程序设计学生选课系统设计.docx_第8页
第8页 / 共21页
C++程序设计学生选课系统设计.docx_第9页
第9页 / 共21页
C++程序设计学生选课系统设计.docx_第10页
第10页 / 共21页
C++程序设计学生选课系统设计.docx_第11页
第11页 / 共21页
C++程序设计学生选课系统设计.docx_第12页
第12页 / 共21页
C++程序设计学生选课系统设计.docx_第13页
第13页 / 共21页
C++程序设计学生选课系统设计.docx_第14页
第14页 / 共21页
C++程序设计学生选课系统设计.docx_第15页
第15页 / 共21页
C++程序设计学生选课系统设计.docx_第16页
第16页 / 共21页
C++程序设计学生选课系统设计.docx_第17页
第17页 / 共21页
C++程序设计学生选课系统设计.docx_第18页
第18页 / 共21页
C++程序设计学生选课系统设计.docx_第19页
第19页 / 共21页
C++程序设计学生选课系统设计.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++程序设计学生选课系统设计.docx

《C++程序设计学生选课系统设计.docx》由会员分享,可在线阅读,更多相关《C++程序设计学生选课系统设计.docx(21页珍藏版)》请在冰点文库上搜索。

C++程序设计学生选课系统设计.docx

C++程序设计学生选课系统设计

课程设计报告

 

课程设计题目:

学生选课系统

 

学号**********

姓名彭楚涵

专业软件工程(国际教育)

班级10211134

指导教师王志波

2011年12月1日

第一章:

面向对象程序设计课程设计目的

本课程设计是在学习面向对象基本理论之后的实践教学环节。

该实践教学是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。

要求学生在设计中逐步提高程序设计能力,培养科学的软件工作方法。

学生通过课程设计在下述各方面得到锻炼:

1.能根据实际问题的具体情况,结合面向对象的基本理论和基本技巧,正确分析问题,并能设计出解决问题的有效算法与程序。

2.提高程序设计和调试能力。

学生通过上机实习,验证自己设计的算法和程序的正确性。

学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改,进一步提高程序设计水平。

 

第二章:

算法分析

课程设计标题:

学生选课系统

要求:

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

试设计一选修课程系统,使之能提供以下功能:

1.系统以菜单方式工作;2.课程信息录入功能(课程信息用文件保存);3.课程信息浏览功能;4.查询功能(至少一种查询方式:

按学分查询、按课程性质查询);5.学生选修课程。

应用程序功能的详细说明:

1.首先根据设计要求,我定义了三个类:

Class类,Control类,Menu类。

Class类用来存放一系列课程的信息,以及一些获取信息的get函数;Control类是用来定义选课类的操作属性,从Control类里面来判断并实现用户所需要执行的动作;Menu类定义了菜单的操作,其中包括显示菜单,显示提示信息,获取用户从键盘初输入的信息并执行。

2.对Class类的定义,首先我定义了一系列的设置相关课程信息的公有函数,用来将输入的内容传给私有函数,还定义了一些常函数,旨在于防止数据被其它函数调用时发生改变,同时将学分定义为浮点型,范围在0~10之间。

3.对Menu类的定义,我定义了一个获取键盘输入的函数getInput(),用于获取数据,并且还定义了界面友好的显示目录函数,使得用户进行操作更加方便,以及定义了一系列的显示提示信息函数,之所以将这些函数独立分开,是为了在今后的修改中更加清楚。

4.对Control类的定义,因为其目的是用于判断并实现用户所要执行的操作,是学生系统的核心。

一切从start()函数开始,通过switch语句判断按下了哪个按键,然后执行对应的操作,在文件录入这一方面,我定义了一个initIalization()函数,首先建立一个输入流,打开文件,将用户录入的课程信息放入到变量中,再由变量放入文件中。

其中的公有函数即课程设计所要求的功能部分:

添加选课,浏览选课,查询选课,保存文件。

私有函数我用了链表,classList,用来一条一条记录课程信息,方便添加浏览以及查询。

两种查询方法都运用了迭代器的功能,迭代器的作用相当于指针,从链表的头部一个个指向链表的末尾,用于浏览以及查询部分。

最后把迭代器指向的对象每个字段写入文件中,文件名定义为classSave,保存到程序的当前目录下。

5.最后主函数的实现,代码十分简单,先定义一个Control类的对象,ControlClass,再通过controlClass.start()启动整个程序。

 

实现过程:

1.菜单界面如图1

图1

2.课程信息录入界面如图2

图2

 

3.课程信息浏览界面如图3

图3

4.按学分查询课程界面如图4

图4

 

5.按课程性质查询课程界面如图5

图5

6.存储信息界面如图6

图6

 

流程图:

 

第三章:

结束语

通过本次面向对象程序设计周,我对C++这门语言有了更深的了解,也巩固了我的C++方面的知识。

在课程设计题目拿到后,我做了一系列的知识储备,并且详细复习了课本,但是真正开始写代码却发现自己缺乏一个系统的知识框架,导致很多时候不知道从哪下手,如何实现课程设计要求的函数功能。

从这里我深深的感受到,课本上所学到的知识只是基础中的基础,要真正意义上提升自己的水平,必须不断地练习,所谓熟能生巧,在此次课程设计中,我运用了一些平时上课我忽略的一些知识,例如链表,并且在老师的指导下学会了使用迭代器,了解了其用处类似于指针。

在这次课程设计中,我还深切感受到了要用面向对象的思想去分析需求,实现需求,还要设身处地贴近用户实际使用。

同时,我能顺利完成这次课程设计,离不开老师的指导与同学的帮助。

总之,我会在今后其他语言中的学习中,更加努力,在实践方面同样也会更加花功夫,以取得更好成绩。

 

附:

源代码

#include

#include

#include

#include

#include

#include

usingnamespacestd;

 

classClass{

//定义了课程类的一些属性

public:

voidsetClassNum(stringclassNumTemp);

voidsetClassName(stringclassNameTemp);

voidsetClassProperties(stringclassPropertiesTemp);

voidsetTotalClassNumber(inttotalClassNumberTemp);

voidsetCurrentClassNumber(intcurrentClassNumber);

voidsetExpClassNumber(intexpClassNumberTemp);

voidsetCredit(doublecredit);

voidsetRightTerm(stringrightTermTemp);

stringgetClassNum()const;

stringgetClassName()const;

stringgetClassProperties()const;

intgetTotalClassNumber()const;

intgetCurrentClassNumber()const;

intgetExpClassNumber()const;

doublegetCredit()const;

stringgetRightTerm()const;

 

private:

stringclassNum;

stringclassName;

stringclassProperties;

inttotalClassNumber;

intcurrentClassNumber;

intexpClassNumber;

doublecredit;

stringrightTerm;

};

voidClass:

:

setClassNum(stringclassNumTemp){

this->classNum=classNumTemp;

}

voidClass:

:

setClassName(stringclassNameTemp){

this->className=classNameTemp;

}

voidClass:

:

setClassProperties(stringclassPropertiesTemp){

this->classProperties=classPropertiesTemp;

}

voidClass:

:

setTotalClassNumber(inttotalClassNumberTemp){

this->totalClassNumber=totalClassNumberTemp;

}

voidClass:

:

setCurrentClassNumber(intcurrentClassNumber){

this->currentClassNumber=currentClassNumber;

}

voidClass:

:

setExpClassNumber(intexpClassNumberTemp){

this->expClassNumber=expClassNumberTemp;

}

voidClass:

:

setCredit(doublecredit){

this->credit=credit;

}

voidClass:

:

setRightTerm(stringrightTermTemp){

this->rightTerm=rightTermTemp;

}

stringClass:

:

getClassNum()const{//设置为常函数防止数据改变

returnthis->classNum;

}

 

stringClass:

:

getClassName()const{

returnthis->className;

}

 

stringClass:

:

getClassProperties()const{

returnthis->classProperties;

}

 

intClass:

:

getTotalClassNumber()const{

returnthis->totalClassNumber;

}

 

intClass:

:

getCurrentClassNumber()const{

returnthis->currentClassNumber;

}

 

intClass:

:

getExpClassNumber()const{

returnthis->expClassNumber;

}

 

doubleClass:

:

getCredit()const{

returnthis->credit;

}

 

stringClass:

:

getRightTerm()const{

returnthis->rightTerm;

}

 

classMenu{

//定义了菜单类的操作

public:

charstaticgetInput(){//获取输入函数

charkey=cin.get();

returnkey;

}

voidstaticshowMenu(){

cout<<"学生选课管理系统"<

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

cout<<""<

cout<<"1课程信息录入"<

cout<<"2课程信息浏览功能"<

cout<<"3根据学分查询"<

cout<<"4按课程性质查询"<

cout<<"5存储信息"<

cout<<""<

cout<<"请输入操作对应的序号"<

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

}

voidstaticclearScreen(){

system("cls");

}

voidstaticpauseScreen(){

system("pause");

}

voidstaticshowAddClass(){

cout<<"请输入要添加的课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息"<

}

voidstaticshowBrowseClass(){

cout<<"所有课程的信息为"<

}

voidstaticshowSearchByCredit(){

cout<<"按照学分查询的结果为:

"<

}

voidstaticshowSearchByClassProperties(){

cout<<"按照课程性质查询的结果为:

"<

}

voidstaticshowAddClassNum(){

cout<<"\n请输入课程编号"<

}

voidstaticshowAddClassName(){

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

}

voidstaticshowAddClassProperties(){

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

}

voidstaticshowAddTotalClassNumber(){

cout<<"请输入总学时"<

}

voidstaticshowAddCurrentClassNumber(){

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

}

voidstaticshowAddExpClassNumber(){

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

}

voidstaticshowAddCredit(){

cout<<"请输入学分"<

}

voidstaticshowAddRightTerm(){

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

}

voidstaticshowLoadingSaving(){

cout<<"正在存储数据"<

}

voidstaticshowSuccessedSaving(){

cout<<"数据存储完毕"<

}

voidstaticshowEachClassInfo(ClassclassTemp){

cout<<"课程编号"<

cout<<"课程名称"<

cout<<"课程性质"<

cout<<"总学时"<

cout<<"授课学时"<

cout<<"实验或上机学时"<

cout<<"学分"<

cout<<"开课学期"<

cout<<""<

}

};

 

classControl{

//定义了选课类的操作属性

public:

Control(){

}

voidstart(){//start里面要做的事情就是初始化界面,等待用户输入,判断输入调用

initIalization();

while

(1){

Menu:

:

clearScreen();

Menu:

:

showMenu();//显示了界面

charkey=Menu:

:

getInput();

switch(key){

case'1':

//判断是按下了哪个按键,然后执行什么对应的操作

Menu:

:

clearScreen();

Menu:

:

showAddClass();

this->addClass();

cin.get();

cin.get();

break;

case'2':

Menu:

:

clearScreen();

Menu:

:

showBrowseClass();

this->showAllClass();

Menu:

:

pauseScreen();

break;

case'3':

Menu:

:

clearScreen();

this->searchByCredit();

Menu:

:

pauseScreen();

break;

case'4':

Menu:

:

clearScreen();

this->searchByClassProperties();

Menu:

:

pauseScreen();

break;

case'5':

Menu:

:

showLoadingSaving();

if(this->saveClass()){

Menu:

:

showSuccessedSaving();

}

Menu:

:

pauseScreen();

Menu:

:

pauseScreen();

default:

break;

}

}

}

voidinitIalization(){

ifstreamifs;//文件输入流ifs相当于建立一个文件

ifs.open("classSave.txt",ios_base:

:

in);

if(!

ifs){

Menu:

:

pauseScreen();

return;

}

ClassclassTemp;//class类的一个对象classTemp

if(ifs.is_open()){//系统内置函数判断文件是否打开

stringclassNum("");//初始化

stringclassName("");

stringclassProperties("");

inttotalClassNumber(0);

intcurrentClassNumber(0);

intexpClassNumber(0);

doublecredit(0.0);

stringrightTerm("");

while(!

ifs.eof()){

ifs>>classNum>>className>>classProperties>>totalClassNumber

>>currentClassNumber>>expClassNumber>>credit>>rightTerm;//从文件读取的内容放到对应的变量里面

classTemp.setClassNum(classNum);

classTemp.setClassName(className);

classTemp.setClassProperties(classProperties);

classTemp.setTotalClassNumber(totalClassNumber);

classTemp.setCurrentClassNumber(currentClassNumber);

classTemp.setExpClassNumber(expClassNumber);

classTemp.setCredit(credit);

classTemp.setRightTerm(rightTerm);

classList.push_back(classTemp);//在末尾添加一个变量

}

ifs.close();

}

}

voidaddClass(){//添加例如选课等操作

ClassclassTemp;

stringclassNum("");

stringclassName("");

stringclassProperties("");

inttotalClassNumber(0);

intcurrentClassNumber(0);

intexpClassNumber(0);

doublecredit(0.0);

stringrightTerm("");

 

Menu:

:

showAddClassNum();

cin>>classNum;

classTemp.setClassNum(classNum);

 

Menu:

:

showAddClassName();

cin>>className;

classTemp.setClassName(className);

 

Menu:

:

showAddClassProperties();

cin>>classProperties;

classTemp.setClassProperties(classProperties);

 

Menu:

:

showAddTotalClassNumber();

cin>>totalClassNumber;

classTemp.setTotalClassNumber(totalClassNumber);

Menu:

:

showAddCurrentClassNumber();

cin>>currentClassNumber;

classTemp.setCurrentClassNumber(currentClassNumber);

Menu:

:

showAddExpClassNumber();

cin>>expClassNumber;

classTemp.setExpClassNumber(expClassNumber);

Menu:

:

showAddCredit();

cin>>credit;

classTemp.setCredit(credit);

Menu:

:

showAddRightTerm();

cin>>rightTerm;

classTemp.setRightTerm(rightTerm);

classList.push_back(classTemp);

}

voidshowAllClass(){

/*一个迭代器从List的头部遍历到List的末尾*/

for(list:

:

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2