1、5.学生选修课程。应用程序功能的详细说明:1.首先根据设计要求,我定义了三个类: Class类,Control类,Menu类。Class类用来存放一系列课程的信息,以及一些获取信息的get函数;Control类是用来定义选课类的操作属性,从Control类里面来判断并实现用户所需要执行的动作;Menu类定义了菜单的操作,其中包括显示菜单,显示提示信息,获取用户从键盘初输入的信息并执行。2.对Class类的定义,首先我定义了一系列的设置相关课程信息的公有函数,用来将输入的内容传给私有函数,还定义了一些常函数,旨在于防止数据被其它函数调用时发生改变,同时将学分定义为浮点型,范围在010之间。3.对
2、Menu类的定义,我定义了一个获取键盘输入的函数getInput(),用于获取数据,并且还定义了界面友好的显示目录函数,使得用户进行操作更加方便,以及定义了一系列的显示提示信息函数,之所以将这些函数独立分开,是为了在今后的修改中更加清楚。4.对Control类的定义,因为其目的是用于判断并实现用户所要执行的操作,是学生系统的核心。一切从start()函数开始,通过switch语句判断按下了哪个按键,然后执行对应的操作,在文件录入这一方面,我定义了一个initIalization()函数,首先建立一个输入流,打开文件,将用户录入的课程信息放入到变量中,再由变量放入文件中。其中的公有函数即课程设计
3、所要求的功能部分:添加选课,浏览选课,查询选课,保存文件。私有函数我用了链表,classList,用来一条一条记录课程信息,方便添加浏览以及查询。两种查询方法都运用了迭代器的功能,迭代器的作用相当于指针,从链表的头部一个个指向链表的末尾,用于浏览以及查询部分。最后把迭代器指向的对象每个字段写入文件中,文件名定义为classSave,保存到程序的当前目录下。5.最后主函数的实现,代码十分简单,先定义一个Control类的对象,ControlClass,再通过controlClass.start()启动整个程序。实现过程:1.菜单界面 如图1图12.课程信息录入界面 如图2图23.课程信息浏览界面
4、 如图3图34按学分查询课程界面 如图4图45.按课程性质查询课程界面 如图5图56存储信息界面 如图6图6流程图:主 菜 单课 程 信 息 录 入课 程 信 息 浏 览根 据 学 分 查 询根据 课程信息 查询存 储 文 件第三章:结束语通过本次面向对象程序设计周,我对C+这门语言有了更深的了解,也巩固了我的C+方面的知识。在课程设计题目拿到后,我做了一系列的知识储备,并且详细复习了课本,但是真正开始写代码却发现自己缺乏一个系统的知识框架,导致很多时候不知道从哪下手,如何实现课程设计要求的函数功能。从这里我深深的感受到,课本上所学到的知识只是基础中的基础,要真正意义上提升自己的水平,必须不断
5、地练习,所谓熟能生巧,在此次课程设计中,我运用了一些平时上课我忽略的一些知识,例如链表,并且在老师的指导下学会了使用迭代器,了解了其用处类似于指针。在这次课程设计中,我还深切感受到了要用面向对象的思想去分析需求,实现需求,还要设身处地贴近用户实际使用。同时,我能顺利完成这次课程设计,离不开老师的指导与同学的帮助。总之,我会在今后其他语言中的学习中,更加努力,在实践方面同样也会更加花功夫,以取得更好成绩。附:源代码#include liststringiteratoralgorithmfstreamusing namespace std;class Class /定义了课程类的一些属性publi
6、c: void setClassNum(string classNumTemp); void setClassName(string classNameTemp); void setClassProperties(string classPropertiesTemp); void setTotalClassNumber(int totalClassNumberTemp); void setCurrentClassNumber(int currentClassNumber); void setExpClassNumber(int expClassNumberTemp); void setCred
7、it(double credit); void setRightTerm(string rightTermTemp); string getClassNum() const; string getClassName() const; string getClassProperties() const; int getTotalClassNumber() const; int getCurrentClassNumber() const; int getExpClassNumber() const; double getCredit() const; string getRightTerm() c
8、onst;private: string classNum; string className; string classProperties; int totalClassNumber; int currentClassNumber; int expClassNumber; double credit; string rightTerm;void Class:setClassNum(string classNumTemp) this-classNum = classNumTemp;setClassName(string classNameTemp)className = classNameT
9、emp;setClassProperties(string classPropertiesTemp)classProperties = classPropertiesTemp;setTotalClassNumber(int totalClassNumberTemp)totalClassNumber = totalClassNumberTemp;setCurrentClassNumber(int currentClassNumber)currentClassNumber = currentClassNumber;setExpClassNumber(int expClassNumberTemp)e
10、xpClassNumber = expClassNumberTemp;setCredit(double credit)credit = credit;setRightTerm(string rightTermTemp)rightTerm = rightTermTemp;string Class:getClassNum() const/设置为常函数防止数据改变 return this-classNum;getClassName() constclassName;getClassProperties() constclassProperties;int Class:getTotalClassNum
11、ber() consttotalClassNumber;getCurrentClassNumber() constcurrentClassNumber;getExpClassNumber() constexpClassNumber;double Class:getCredit() constcredit;getRightTerm() constrightTerm;class Menu /定义了菜单类的操作 char static getInput() /获取输入函数 char key = cin.get(); return key; void static showMenu() cout 学生
12、选课管理系统 endl; * cout 1 课程信息录入 2 课程信息浏览功能 3 根据学分查询 4 按课程性质查询 5 存储信息 请输入操作对应的序号 void static clearScreen() system(cls); void static pauseScreen()pause void static showAddClass()请输入要添加的课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息 void static showBrowseClass()所有课程的信息为 void static showSearchByCredit()按照学分查询的
13、结果为: void static showSearchByClassProperties()按照课程性质查询的结果为: void static showAddClassNum()n请输入课程编号 void static showAddClassName()请输入课程名称 void static showAddClassProperties()请输入课程性质 void static showAddTotalClassNumber()请输入总学时 void static showAddCurrentClassNumber()请输入授课学时 void static showAddExpClassNu
14、mber()请输入实验或上机学时 void static showAddCredit()请输入学分 void static showAddRightTerm()请输入开课学期 void static showLoadingSaving()正在存储数据 void static showSuccessedSaving()数据存储完毕 void static showEachClassInfo(Class classTemp)课程编号 classTemp.getClassNum() ; 课程名称 classTemp.getClassName() ; 课程性质 classTemp.getClassPr
15、operties() ; 总学时 classTemp.getTotalClassNumber()endl ;授课学时 classTemp.getCurrentClassNumber() ; 实验或上机学时 classTemp.getExpClassNumber() ; 学分 classTemp.getCredit() ; 开课学期 classTemp.getRightTerm()addClass(); cin.get(); break;2showBrowseClass();showAllClass();pauseScreen();3searchByCredit();4searchByClass
16、Properties();5showLoadingSaving(); if (this-saveClass() Menu:showSuccessedSaving(); default: void initIalization() ifstream ifs;/文件输入流ifs 相当于建立一个文件 ifs.open(classSave.txt,ios_base:in); if (!ifs) return; Class classTemp;/class 类的一个对象 classTemp if (ifs.is_open()/系统内置函数 判断文件是否打开 string classNum(/初始化 st
17、ring className( string classProperties( int totalClassNumber(0); int currentClassNumber(0); int expClassNumber(0); double credit(0.0); string rightTerm( while(!ifs.eof() ifs classNum className classProperties totalClassNumber currentClassNumber expClassNumber credit rightTerm;/从文件读取的内容放到对应的变量里面 clas
18、sTemp.setClassNum(classNum); classTemp.setClassName(className); classTemp.setClassProperties(classProperties); classTemp.setTotalClassNumber(totalClassNumber); classTemp.setCurrentClassNumber(currentClassNumber); classTemp.setExpClassNumber(expClassNumber); classTemp.setCredit(credit); classTemp.set
19、RightTerm(rightTerm); classList.push_back(classTemp);/在末尾添加一个变量 ifs.close();void addClass() /添加例如选课等操作 string classNum( string className( string classProperties( int totalClassNumber(0); int currentClassNumber(0); int expClassNumber(0); double credit(0.0); string rightTerm( Menu:showAddClassNum(); c
20、in classNum; classTemp.setClassNum(classNum);showAddClassName(); className; classTemp.setClassName(className);showAddClassProperties(); classProperties; classTemp.setClassProperties(classProperties);showAddTotalClassNumber(); totalClassNumber; classTemp.setTotalClassNumber(totalClassNumber);showAddCurrentClassNumber(); currentClassNumber; classTemp.setCurrentClassNumber(currentClassNumber);showAddExpClassNumber(); expClassNumber; classTemp.setExpClassNumber(expClassNumber);showAddCredit(); credit; classTemp.setCredit(credit);showAddRightTerm(); classTemp.setRightTerm(rightTerm);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1