C++程序设计学生选课系统设计资料.doc

上传人:小飞机 文档编号:4263234 上传时间:2023-04-12 格式:DOC 页数:19 大小:421.50KB
返回 下载 相关 举报
C++程序设计学生选课系统设计资料.doc_第1页
第1页 / 共19页
C++程序设计学生选课系统设计资料.doc_第2页
第2页 / 共19页
C++程序设计学生选课系统设计资料.doc_第3页
第3页 / 共19页
C++程序设计学生选课系统设计资料.doc_第4页
第4页 / 共19页
C++程序设计学生选课系统设计资料.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《C++程序设计学生选课系统设计资料.doc》由会员分享,可在线阅读,更多相关《C++程序设计学生选课系统设计资料.doc(19页珍藏版)》请在三一办公上搜索。

1、课程设计报告课程设计题目:学生选课系统 学 号 1021113423姓 名 彭楚涵专 业 软件工程(国际教育)班 级 10211134 指导教师 王志波 2011年 12 月 1 日目 录第一章:面向对象程序设计课程设计目的2第二章:算法分析3第三章:结束语8附:源代码9第一章:面向对象程序设计课程设计目的本课程设计是在学习面向对象基本理论之后的实践教学环节。该实践教学是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。要求学生在设计中逐步提高程序设计能力,培养科学的软件工作方法。学生通过课程设计在下述各方面得到锻炼:1能根据实际问题的具体情况,结合面向对象

2、的基本理论和基本技巧,正确分析问题,并能设计出解决问题的有效算法与程序。2提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法和程序的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改,进一步提高程序设计水平。第二章:算法分析课程设计标题:学生选课系统要求:假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于10)自由选课。试设计一选修课程系统,使之能提供以下功能:1.系统以菜单方式工作;2.课程信息录入功能(课程信息用文件保存);3.课程信息浏览功能;4.查询功能(至少一种查询方

3、式:按学分查询、按课程性质查询);5.学生选修课程。应用程序功能的详细说明:1. 首先根据设计要求,我定义了三个类: Class类,Control类,Menu类。Class类用来存放一系列课程的信息,以及一些获取信息的get函数;Control类是用来定义选课类的操作属性,从Control类里面来判断并实现用户所需要执行的动作;Menu类定义了菜单的操作,其中包括显示菜单,显示提示信息,获取用户从键盘初输入的信息并执行。2. 对Class类的定义,首先我定义了一系列的设置相关课程信息的公有函数,用来将输入的内容传给私有函数,还定义了一些常函数,旨在于防止数据被其它函数调用时发生改变,同时将学分

4、定义为浮点型,范围在010之间。3. 对Menu类的定义,我定义了一个获取键盘输入的函数getInput(),用于获取数据,并且还定义了界面友好的显示目录函数,使得用户进行操作更加方便,以及定义了一系列的显示提示信息函数,之所以将这些函数独立分开,是为了在今后的修改中更加清楚。4. 对Control类的定义,因为其目的是用于判断并实现用户所要执行的操作,是学生系统的核心。一切从start()函数开始,通过switch语句判断按下了哪个按键,然后执行对应的操作,在文件录入这一方面,我定义了一个initIalization()函数,首先建立一个输入流,打开文件,将用户录入的课程信息放入到变量中,再

5、由变量放入文件中。其中的公有函数即课程设计所要求的功能部分:添加选课,浏览选课,查询选课,保存文件。私有函数我用了链表,classList,用来一条一条记录课程信息,方便添加浏览以及查询。两种查询方法都运用了迭代器的功能,迭代器的作用相当于指针,从链表的头部一个个指向链表的末尾,用于浏览以及查询部分。最后把迭代器指向的对象每个字段写入文件中,文件名定义为classSave,保存到程序的当前目录下。5. 最后主函数的实现,代码十分简单,先定义一个Control类的对象,ControlClass,再通过controlClass.start()启动整个程序。实现过程:1.菜单界面 如图1图12.课程

6、信息录入界面 如图2图23.课程信息浏览界面 如图3图34按学分查询课程界面 如图4图45.按课程性质查询课程界面 如图5图56存储信息界面 如图6图6流程图:主 菜 单课 程 信 息 录 入课 程 信 息 浏 览根 据 学 分 查 询根据 课程信息 查询存 储 文 件第三章:结束语通过本次面向对象程序设计周,我对C+这门语言有了更深的了解,也巩固了我的C+方面的知识。在课程设计题目拿到后,我做了一系列的知识储备,并且详细复习了课本,但是真正开始写代码却发现自己缺乏一个系统的知识框架,导致很多时候不知道从哪下手,如何实现课程设计要求的函数功能。从这里我深深的感受到,课本上所学到的知识只是基础中

7、的基础,要真正意义上提升自己的水平,必须不断地练习,所谓熟能生巧,在此次课程设计中,我运用了一些平时上课我忽略的一些知识,例如链表,并且在老师的指导下学会了使用迭代器,了解了其用处类似于指针。在这次课程设计中,我还深切感受到了要用面向对象的思想去分析需求,实现需求,还要设身处地贴近用户实际使用。同时,我能顺利完成这次课程设计,离不开老师的指导与同学的帮助。总之,我会在今后其他语言中的学习中,更加努力,在实践方面同样也会更加花功夫,以取得更好成绩。附:源代码#include #include #include #include #include #include using namespace

8、std;class Class/定义了课程类的一些属性public:void setClassNum(string classNumTemp);void setClassName(string classNameTemp);void setClassProperties(string classPropertiesTemp);void setTotalClassNumber(int totalClassNumberTemp);void setCurrentClassNumber(int currentClassNumber);void setExpClassNumber(int expClas

9、sNumberTemp);void setCredit(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

10、getRightTerm() const;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;void Class:setClassName(string classNameTemp)this

11、-className = classNameTemp;void Class:setClassProperties(string classPropertiesTemp)this-classProperties = classPropertiesTemp;void Class:setTotalClassNumber(int totalClassNumberTemp)this-totalClassNumber = totalClassNumberTemp;void Class:setCurrentClassNumber(int currentClassNumber)this-currentClas

12、sNumber = currentClassNumber;void Class:setExpClassNumber(int expClassNumberTemp)this-expClassNumber = expClassNumberTemp;void Class:setCredit(double credit)this-credit = credit;void Class:setRightTerm(string rightTermTemp)this-rightTerm = rightTermTemp;string Class:getClassNum() const/设置为常函数防止数据改变r

13、eturn this-classNum;string Class:getClassName() constreturn this-className;string Class:getClassProperties() constreturn this-classProperties;int Class:getTotalClassNumber() constreturn this-totalClassNumber;int Class:getCurrentClassNumber() constreturn this-currentClassNumber;int Class:getExpClassN

14、umber() constreturn this-expClassNumber;double Class:getCredit() constreturn this-credit;string Class:getRightTerm() constreturn this-rightTerm;class Menu/定义了菜单类的操作public:char static getInput() /获取输入函数char key = cin.get();return key;void static showMenu() cout 学生选课管理系统 endl; cout * endl;cout endl;co

15、ut 1 课程信息录入 endl; cout 2 课程信息浏览功能 endl;cout 3 根据学分查询 endl;cout 4 按课程性质查询 endl;cout 5 存储信息 endl;cout endl;cout 请输入操作对应的序号 endl;cout * endl;void static clearScreen()system(cls);void static pauseScreen()system(pause);void static showAddClass()cout 请输入要添加的课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息 endl;

16、 void static showBrowseClass()cout 所有课程的信息为 endl;void static showSearchByCredit()cout 按照学分查询的结果为: endl;void static showSearchByClassProperties()cout 按照课程性质查询的结果为: endl;void static showAddClassNum()cout n请输入课程编号 endl;void static showAddClassName()cout 请输入课程名称 endl;void static showAddClassProperties()

17、cout 请输入课程性质 endl;void static showAddTotalClassNumber()cout 请输入总学时 endl;void static showAddCurrentClassNumber()cout 请输入授课学时 endl;void static showAddExpClassNumber()cout 请输入实验或上机学时 endl;void static showAddCredit()cout 请输入学分 endl;void static showAddRightTerm()cout 请输入开课学期 endl;void static showLoadingS

18、aving()cout 正在存储数据 endl;void static showSuccessedSaving()cout 数据存储完毕 endl;void static showEachClassInfo(Class classTemp)cout 课程编号 classTemp.getClassNum() ;cout 课程名称 classTemp.getClassName() ;cout 课程性质 classTemp.getClassProperties() ;cout 总学时 classTemp.getTotalClassNumber()endl ;cout 授课学时 classTemp.g

19、etCurrentClassNumber() ;cout 实验或上机学时 classTemp.getExpClassNumber() ;cout 学分 classTemp.getCredit() ;cout 开课学期 classTemp.getRightTerm()endl; cout addClass();cin.get();cin.get();break;case 2:Menu:clearScreen();Menu:showBrowseClass();this-showAllClass();Menu:pauseScreen();break;case 3:Menu:clearScreen()

20、;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;void initIalization()ifstream ifs;/文件输入

21、流ifs 相当于建立一个文件ifs.open(classSave.txt,ios_base:in);if (!ifs)Menu:pauseScreen();return;Class classTemp;/class 类的一个对象 classTempif (ifs.is_open()/系统内置函数 判断文件是否打开string classNum();/初始化string className();string classProperties();int totalClassNumber(0);int currentClassNumber(0);int expClassNumber(0);doubl

22、e credit(0.0);string rightTerm();while(!ifs.eof()ifs classNum className classProperties totalClassNumber currentClassNumber expClassNumber credit rightTerm;/从文件读取的内容放到对应的变量里面classTemp.setClassNum(classNum);classTemp.setClassName(className);classTemp.setClassProperties(classProperties);classTemp.setT

23、otalClassNumber(totalClassNumber);classTemp.setCurrentClassNumber(currentClassNumber);classTemp.setExpClassNumber(expClassNumber);classTemp.setCredit(credit);classTemp.setRightTerm(rightTerm);classList.push_back(classTemp);/在末尾添加一个变量ifs.close();void addClass()/添加例如选课等操作Class classTemp;string classNu

24、m();string className();string classProperties();int totalClassNumber(0);int currentClassNumber(0);int expClassNumber(0);double credit(0.0);string rightTerm();Menu:showAddClassNum();cin classNum;classTemp.setClassNum(classNum);Menu:showAddClassName();cin className;classTemp.setClassName(className);Me

25、nu:showAddClassProperties();cin classProperties;classTemp.setClassProperties(classProperties);Menu:showAddTotalClassNumber();cin totalClassNumber;classTemp.setTotalClassNumber(totalClassNumber);Menu:showAddCurrentClassNumber();cin currentClassNumber;classTemp.setCurrentClassNumber(currentClassNumber

26、);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);void showAllClass()/*一个迭代器从List的头部遍历到List的末

27、尾*/for (list:iterator iter = classList.begin();iter != classList.end(); +iter)Menu:showEachClassInfo(*iter);void searchByCredit()list:iterator iter= classList.begin();double credit(0);Menu:showAddCredit();cin credit;Menu:showSearchByCredit();for (iter; iter != classList.end(); iter+)if (credit = ite

28、r-getCredit()Menu:showEachClassInfo(*iter);void searchByClassProperties()list:iterator iter= classList.begin();string classProperties();Menu:showAddClassProperties();cin classProperties;Menu:showSearchByClassProperties();for (iter; iter != classList.end(); iter+)if (classProperties = iter-getClassPr

29、operties()Menu:showEachClassInfo(*iter);bool saveClass()ofstream ofs(classSave.txt,ios_base:out);在我们学校大约有4000多名学生,其中女生约占90%以上。按每十人一件饰品计算,大概需要360多件。这对于开设饰品市场是很有利的。女生成为消费人群的主体。if (!ofs)3、消费“多样化”(四)大学生对手工艺制品消费的要求return false;据介绍,经常光顾“碧芝”的都是些希望得到世界上“独一无二”饰品的年轻人,他们在琳琅满目的货架上挑选,然后亲手串连,他们就是偏爱这种的方式,完全自助。list

30、:iterator iter= classList.begin();while(iter != classList.end()300元以下918%ofs getClassNum() getClassName() 关于DIY手工艺制品的消费调查getClassProperties() getTotalClassNumber() (二)对“碧芝”自制饰品店的分析getCurrentClassNumber() getExpClassNumber() getCredit() getRightTerm() endl;/把迭代器指向的对象每个字段写入文件iter+;ofs endl;因此不难看出,自制饰品

31、在校园里也大有市场所在。对于那些走在流行前端的女生来说,捕捉新事物便捕捉到了时尚与个性。ofs.flush(); /清空缓存函数ofs.close();return true;创新是时下非常流行的一个词,确实创新能力是相当重要的特别是对我们这种经营时尚饰品的小店,更应该勇于创新。在这方面我们是很欠缺的,故我们在小店经营的时候会遇到些困难,不过我们会克服困难,努力创新,把我们的小店经营好。private:list classList;情感性手工艺品。不少人把自制的手机挂坠作为礼物送给亲人朋友,不仅特别,还很有心思。每逢情人节、母亲节等节假日,顾客特别多。;void main()Control controlClass;controlClass.start();

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号