C++程序设计学生选课系统设计Word下载.docx
《C++程序设计学生选课系统设计Word下载.docx》由会员分享,可在线阅读,更多相关《C++程序设计学生选课系统设计Word下载.docx(21页珍藏版)》请在冰点文库上搜索。
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,再通过()启动整个程序。
实现过程:
1.菜单界面如图1
图1
2.课程信息录入界面如图2
图2
3.课程信息浏览界面如图3
图3
4.按学分查询课程界面如图4
图4
5.按课程性质查询课程界面如图5
图5
6.存储信息界面如图6
图6
流程图:
第三章:
结束语
通过本次面向对象程序设计周,我对C++这门语言有了更深的了解,也巩固了我的C++方面的知识。
在课程设计题目拿到后,我做了一系列的知识储备,并且详细复习了课本,但是真正开始写代码却发现自己缺乏一个系统的知识框架,导致很多时候不知道从哪下手,如何实现课程设计要求的函数功能。
从这里我深深的感受到,课本上所学到的知识只是基础中的基础,要真正意义上提升自己的水平,必须不断地练习,所谓熟能生巧,在此次课程设计中,我运用了一些平时上课我忽略的一些知识,例如链表,并且在老师的指导下学会了使用迭代器,了解了其用处类似于指针。
在这次课程设计中,我还深切感受到了要用面向对象的思想去分析需求,实现需求,还要设身处地贴近用户实际使用。
同时,我能顺利完成这次课程设计,离不开老师的指导与同学的帮助。
总之,我会在今后其他语言中的学习中,更加努力,在实践方面同样也会更加花功夫,以取得更好成绩。
附:
源代码
#include<
iostream>
list>
string>
iterator>
algorithm>
fstream>
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;
}
setClassName(stringclassNameTemp){
className=classNameTemp;
setClassProperties(stringclassPropertiesTemp){
classProperties=classPropertiesTemp;
setTotalClassNumber(inttotalClassNumberTemp){
totalClassNumber=totalClassNumberTemp;
setCurrentClassNumber(intcurrentClassNumber){
currentClassNumber=currentClassNumber;
setExpClassNumber(intexpClassNumberTemp){
expClassNumber=expClassNumberTemp;
setCredit(doublecredit){
credit=credit;
setRightTerm(stringrightTermTemp){
rightTerm=rightTermTemp;
stringClass:
getClassNum()const{//设置为常函数防止数据改变
returnthis->
classNum;
getClassName()const{
className;
getClassProperties()const{
classProperties;
intClass:
getTotalClassNumber()const{
totalClassNumber;
getCurrentClassNumber()const{
currentClassNumber;
getExpClassNumber()const{
expClassNumber;
doubleClass:
getCredit()const{
credit;
getRightTerm()const{
rightTerm;
classMenu{
//定义了菜单类的操作
charstaticgetInput(){//获取输入函数
charkey=();
returnkey;
}
voidstaticshowMenu(){
cout<
<
"
学生选课管理系统"
<
endl;
***************************************"
cout<
"
1课程信息录入"
2课程信息浏览功能"
3根据学分查询"
4按课程性质查询"
5存储信息"
请输入操作对应的序号"
voidstaticclearScreen(){
system("
cls"
);
voidstaticpauseScreen(){
pause"
voidstaticshowAddClass(){
请输入要添加的课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息"
voidstaticshowBrowseClass(){
所有课程的信息为"
voidstaticshowSearchByCredit(){
按照学分查询的结果为:
"
voidstaticshowSearchByClassProperties(){
按照课程性质查询的结果为:
voidstaticshowAddClassNum(){
\n请输入课程编号"
voidstaticshowAddClassName(){
请输入课程名称"
voidstaticshowAddClassProperties(){
请输入课程性质"
voidstaticshowAddTotalClassNumber(){
请输入总学时"
voidstaticshowAddCurrentClassNumber(){
请输入授课学时"
voidstaticshowAddExpClassNumber(){
请输入实验或上机学时"
voidstaticshowAddCredit(){
请输入学分"
voidstaticshowAddRightTerm(){
请输入开课学期"
voidstaticshowLoadingSaving(){
正在存储数据"
voidstaticshowSuccessedSaving(){
数据存储完毕"
voidstaticshowEachClassInfo(ClassclassTemp){
课程编号"
();
课程名称"
课程性质"
总学时"
()<
endl;
授课学时"
实验或上机学时"
学分"
开课学期"
endl;
classControl{
//定义了选课类的操作属性
Control(){
voidstart(){//start里面要做的事情就是初始化界面,等待用户输入,判断输入调用
initIalization();
while
(1){
Menu:
clearScreen();
showMenu();
//显示了界面
charkey=Menu:
getInput();
switch(key){
case'
1'
//判断是按下了哪个按键,然后执行什么对应的操作
Menu:
showAddClass();
this->
addClass();
();
break;
2'
showBrowseClass();
showAllClass();
pauseScreen();
3'
searchByCredit();
4'
searchByClassProperties();
5'
showLoadingSaving();
if(this->
saveClass()){
Menu:
showSuccessedSaving();
}
default:
}
}
voidinitIalization(){
ifstreamifs;
//文件输入流ifs相当于建立一个文件
("
ios_base:
in);
if(!
ifs){
return;
ClassclassTemp;
//class类的一个对象classTemp
if()){//系统内置函数判断文件是否打开
stringclassNum("
//初始化
stringclassName("
stringclassProperties("
inttotalClassNumber(0);
intcurrentClassNumber(0);
intexpClassNumber(0);
doublecredit;
stringrightTerm("
while(!
()){
ifs>
>
classNum>
className>
classProperties>
totalClassNumber
>
currentClassNumber>
expClassNumber>
credit>
rightTerm;
//从文件读取的内容放到对应的变量里面
(classNum);
(className);
(classProperties);
(totalClassNumber);
(currentClassNumber);
(expClassNumber);
(credit);
(rightTerm);
(classTemp);
//在末尾添加一个变量
();
voidaddClass(){//添加例如选课等操作
stringclassNum("
stringclassName("
stringclassProperties("
inttotalClassNumber(0);
intcurrentClassNumber(0);
intexpClassNumber(0);
doublecredit;
stringrightTerm("
Menu:
showAddClassNum();
cin>
classNum;
(classNum);
showAddClassName();
className;
(className);
showAddClassProperties();
classProperties;
(classProperties);
showAddTotalClassNumber();
totalClassNumber;
(totalClassNumber);
showAddCurrentClassNumber();
currentClassNumber;
(currentClassNumber);
showAddExpClassNumber();
expClassNumber;
(expClassNumber);
showAddCredit();
credit;
(credit);
showAddRightTerm();
(rightTerm);
(classTemp);
voidshowAllClass(){
/*一个迭代器从List的头部遍历到List的末尾*/
for(list<
Class>
iteratoriter=();
iter!
=();
++iter){
showEachClassInfo(*iter);
voidsearchByCredit(){
list<
iteratoriter=();
doublecredit(0);
showSearchByCredit();
for(iter;
iter!
iter++){
if(credit==iter->
getCredit()){
Menu:
voidsearchByClassProperties(){
showSearchByClassProperties();
if(classProperties==iter->
getClassProperties()){
boolsaveClass(){
ofstream