欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    C++设计学生选修课程系统设计.doc

    • 资源ID:865397       资源大小:306.46KB        全文页数:29页
    • 资源格式: DOC        下载积分:10积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要10积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C++设计学生选修课程系统设计.doc

    1、河南城建学院C程序设计课程设计报告目 录1、课题目标11.1设计要求11.2 选题背景11.3 课题意义11.4功能需求分析21.5系统功能分析22、程序具体实现原理32.1 总体方案32.1.1开发平台32.1.2基本原理42.1.3数据结构42.1.4类的UML图52.1.5模块说明62.2 程序各个功能说明72.2.1 程序结构72.2.2 课程设计要求的实现93、调试报告143.1遇到的问题及解决办法143.2程序调试及运行结果154、总结195、参考文献19附录201、课题目标1.1设计要求 假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学

    2、分,开课学期等信息,学生可按要求(如总学分不得少于10)自由选课。试设计一个选修课程系统,使之能提供以下功能:1.系统以菜单方式工作;2.课程信息录入功能(课程信息用文件保存);3.课程信息浏览功能;4.查询功能(至少一种查询方式:按学分查询、按课程性质查询);5.学生选修课程。1.2 选题背景当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最到好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的

    3、开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好学生选课信息而设计的。随着高校的多样全面发展,学生的人数和课程的种类急速增加,传统的选课管理模式已经无法满足当前的实际需求,学生选课作为一种信息资源的集散地,包含很多的信息数据的管理。由于数据繁多,容易丢失,且不易查找。并且数据处理手工操作工作量大,出错率高,出错后不易更改,造成各种不便,总的来说,缺乏系统,规范的信息管理手段。尽管有的学校有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是学生选课管理信息系统的开发基本环境背景。1.3 课题意义基于以上问题,我们认为有必要建立一个学生选课管理信息系统,使学生选

    4、课信息管理工作规范化、系统化、程序化,以避免学生选课管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改选课情况。系统实现后,极大的方便对学生进行选课和选课后班级的安排管理工作,学生选课信息的管理。避免在安排课程信息的滞后,减少信息交流的繁琐过程及其带来的额外开销。促进高校教育的计算机信息化进程,提高高校的工作效率。并且对于系统本身而言,具有更高的使用性、安全性。能够满足学生选课,以及学生对选课信息的管理。同时,通过该课程设计,我们可以达到把C+程序设计理论知识更加的巩固加深,加强动手操作能力与实践能力,学以致用,与现实生活中的应用充分的结合起来,也实现了知识的活学活用。

    5、 1.4功能需求分析一个完善的学生选课管理信息系统能够极大的提高学生选课信息的管理效率,具有检索迅速,查找方便,可靠性高,存储量大,更新快,寿命长,成本低等优点。本系统主要可以实现以下任务目标:1、系统可以准确的记录和查询学生、老师以及所开设的课程的基本信息2、学生登录系统后可以根据本专业制定的教学计划进行选课操作,可以查询个人的基本信息性能需求:本学生信息管理系统要能够抵御用户可能的各种操作,包括修改、更新、删除等操作,以保证软件的可行性、稳定性、健壮性,同时要对数据进行检验,保证数据有效性,可操作性,安全性。同时普通用户登录只有浏览的权限。系统的非功能性需求:实用性:系统以用户需求为目标,

    6、以方便用户为原则。根据用户实际的 需求情况,度身订造一套先进的局域网数据传输,从用户角度出发尽可能的方便用户使用,满足基本的用户需要,成为学校等通用的网络软件。高可靠性:一个实用的系统同时必须是可靠的,本设计通过合理而先进的网络设计以及软、硬件的优化选型,可保证系统数据传输的正确性。高安全性:在设计中,将充分利用网络软、硬件提供的各种安全措施,既可以保证用户共享资源,同时也可保证关键数据的安全性。可扩展性及灵活性:系统的设计以方便未来业务的扩展和系统扩充为目标,系统要求能够方便的升级,充分保护系统的投资。智能型:系统在设计时,充分考虑系统运行的智能性,在使用系统一段时间后,系统可以适应于任何局

    7、域网。1.5系统功能分析 根据设计要求,我们认为该系统应该包括:(1)课程信息输入功能;(2)课程信息浏览功能;(3)按学分查询功能;(4)按课程性质查询功能;(5)数据保存功能;(6)正确退出系统功能。其中对于课程信息输入功能可以有两个实现途径:直接在系统中根据提示输入;根据系统的功能在相应文件下建立text文件直接输入课程信息。对于其余四个功能则主要是供学生选课使用。本程序将课程性质统一规定为考试和考查两种;数据保存功能是为了保证在系统中直接输入的课程信息顺利保存到text文件。2、程序具体实现原理2.1 总体方案首先根据设计要求,我们定义了三个类: Class类,Control类,Men

    8、u类。Class类用来存放一系列课程的信息,以及一些获取信息的get函数;Control类是用来定义选课类的操作属性,从Control类里面来判断并实现用户所需要执行的动作;Menu类定义了菜单的操作,其中包括显示菜单,显示提示信息,获取用户从键盘输入的信息并执行。针对Class类的定义,首先我们定义了一系列的设置相关课程信息的公有函数,用来将输入的内容传给私有函数,其次定义了常函数,目的是为了防止数据被其它函数调用时发生改变,同时将学分定义为浮点型,范围在010之间。针对Menu类的定义,我们先定义了一个获取键盘输入的函数getInput(),用于获取数据,接着定义了界面友好的显示目录函数,

    9、使得用户进行操作更加方便,最后定义了一系列的显示提示信息函数。为了使得在今后的修改中更加清楚方便,我们将这些函数独立分开。针对Control类的定义,因为它的目的是用于判断并实现用户所要执行的操作,是学生选课系统的核心。一切从start()函数开始,通过switch语句判断按下了哪个数字键,然后执行对应的操作,在文件录入这一方面,我定义了一个initIalization()函数,首先建立一个输入流,打开文件,将用户录入的课程信息放入到变量中,再由变量放入文件中。其中的公有函数即课程设计所要求的功能部分:添加选课,浏览选课,查询选课,保存文件。私有函数我们用了链表,classList,用来一条一

    10、条记录课程信息,方便添加浏览以及查询。两种查询方法都运用了迭代器的功能,迭代器的作用相当于指针,从链表的头部一个个指向链表的末尾,用于浏览以及查询部分。最后把迭代器指向的对象每个字段写入文件中,文件名定义为classSave,保存到程序的当前目录下。最后主函数的实现,代码十分简单,先定义一个Control类的对象,ControlClass,再通过controlClass.start()启动整个程序。2.1.1开发平台操作系统:Win7 开发软件:Mirosoft Visual C+ 6.02.1.2基本原理开始进入系统界面进入主菜单课程信息浏览按学分查询退出课程信息录入信息存储结束按课程性质查

    11、询2.1.3数据结构表1 数据结构表数据名称数据类型解释classNumstring课程编号classNamestring课程名称classPropertiesstring课程性质totalClassNumberInt总课时currentClassNumberInt授课学时expClassNumberInt上级或实验学时creditDouble学分rightTermstring开课学期2.1.4类的UML图表2 Class类的UML图Class-ClassNum: string-ClassName: string-ClassProperties: string-TotalClassNumber

    12、: int-currentClassNumber: int-ExpClassNumber: int-credit: double-rightTerm: string+setClassNum(classNumTemp: string)+setClassName(classNameTemp: string)+setClassProperties(classPropertiesTemp: string)+setTotalClassNumber(totalClassNumberTemp: int)+setCurrentClassNumber(currentClassNumber: int)+setEx

    13、pClassNumber(expClassNumberTemp: int)+setCredit(credit: double)+setRightTerm(rightTermTemp: string)+getClassNum():string+getClassName():string+getClassProperties():string+getTotalClassNumber():int+getCurrentClassNumber():int+getExpClassNumber():int+getCredit() :double+getRightTerm() :string表3 Menue类

    14、的UML图Menue+getInput():char+showMenu():void+clearScreen():void+pauseScreen():void+showAddClass():void+showBrowseClass():void+showSearchByCredit():void+showSearchByClassProperties():void+showAddClassNum():void+showAddClassName():void+showAddClassProperties():void+showAddCurrentClassNumber():void+showA

    15、ddExpClassNumber():void+showLoadingSaving():void+showSuccessedSaving():void+showEachClassInfo(Class classTemp) :void+quit():void表4 Control类的UML图Control-classList: list+Control()+Start():void+initIalization():void+addClass():void+quit():void+showAllClass():void+searchByCredit():void+searchByClassProp

    16、erties():void+saveClass():bool2.1.5模块说明(1)课程信息录入。课程信息录入应包括:课程编号、课程名称、课程性质、总学时、授课学时、实验学时、学分、开课信息八个成员,为录入以上信息,首先使用setClassNum、setClassName、setClassProperties、setTotalClassNumber、setCurrentClassNumber、setExpClassNumber、setCredit、setRightTerm输出提示信息,其次使用addClass函数添加课程信息。(2)课程信息浏览。该功能主要是读取所有的课程信息,在程序中首先通过

    17、getClassNum、getClassName、getClassProperties、getTotalClassNumber、getCurrentClassNumber、getExpClassNumber、getCredit、getRightTerm八个函数读取课程信息的相关信息,设置为静态成员函数,防止已录入的数据被篡改;其次使用showclass、showeachclassinfo函数显示全部课程信息。 (3)按学分查询。首先使用getCredit函数得到课程的学分信息,其次使用searchByCredit 函数输出 “按学分查询”的提示信息;接着使用showAddCredit函数输出“

    18、请输入学分”的提示信息;最后使用showSearchByCredit函数将查询结果输出。(4)按课程性质查询。按照课程性质的查询实现了根据课程的性质对课程的查询,程序主要通过、showAddClassProperties、setClassProperties、getClassProperties、searchByClassProperties、showSearchByClassProperties、 来实现对课程的查询,同样全部设置为静态成员函数,已经录入的数据部能被篡改,根据提示输入就能得到想要查询的内容。(5)存储信息。选择存储信息选项之后用showLoadingSaving函数进行数据的

    19、存储,显示正在存储数据。数据存储完毕后用showSuccessedSaving函数显示输出数据存储完毕。(6)退出系统。一个完整的系统应该包括退出系统,在程序中使用quit函数,在按数字键6后给出提示信息:“press any key to continue”提示使用者按任意键退出系统。2.2 程序各个功能说明2.2.1 程序结构将class类的属性和行为进行封装:1.Class的封装class Class/定义了课程类的一些属性public:void setClassNum(string classNumTemp);/课程编号void setClassName(string classNam

    20、eTemp);/课程名称void setClassProperties(string classPropertiesTemp);/课程性质void setTotalClassNumber(int totalClassNumberTemp);/总学时void setCurrentClassNumber(int currentClassNumber);/授课学时void setExpClassNumber(int expClassNumberTemp);/实验或上机学时void setCredit(double credit);/学分void setRightTerm(string rightTe

    21、rmTemp);/开课信息/ 录入函数设为常量函数防止信息被篡改string getClassNum() const;/ 课程编号录入string getClassName() const;/课程名称录入string getClassProperties() const;/课程性质录入int getTotalClassNumber() const;/总学时录入int getCurrentClassNumber() const;/授课学时录入int getExpClassNumber() const;/实验或上机学时录入double getCredit() const;/学分录入string g

    22、etRightTerm() const;/开课信息录入/ class类的私有成员private:string classNum;/课程编号string className;/课程名称string classProperties;/课程性质int totalClassNumber;/总学时int currentClassNumber;/授课学时int expClassNumber;/上级或实验学时double credit;/学分string rightTerm;/开课学期;2.Menu类的封装/menu类主要实现系统的主界面class Menupublic:char static getInp

    23、ut();void static showMenu();/显示菜单 void static clearScreen();/清屏void static pauseScreen();/暂停void static showAddClass();/显示添加课程信息的提示语void static showBrowseClass();/void static showSearchByCredit();/显示按学分查询的提示语void static showSearchByClassProperties();显示按课程性质查询的提示语void static showAddClassNum();/显示输入课程

    24、编号的的提示语void static showAddClassName();/显示增加课程名称的提示语void static showAddClassProperties();/显示输入课程性质的提示语void static showAddTotalClassNumber();/显示输入总学时的提示语void static showAddCurrentClassNumber();/显示授课学时的提示语void static showAddExpClassNumber();/显示输入实验学时的提示语void static showAddCredit();/显示输入学分的提示语void stati

    25、c showAddRightTerm();/显示开课学期的提示语void static showLoadingSaving();/显示正在存储信息的提示语 void static showSuccessedSaving();/显示信息已成功存储void static quit();/退出系统函数void static showEachClassInfo(Class classTemp);/调用class类中的对象显示信息;3 .Control类的封装class Control/定义了选课类的操作属性public:Control()void start();void initIalization

    26、(); void addClass(); void quit() ; /退出函数 void showAllClass();void searchByCredit();void searchByClassProperties();bool saveClass();private:list classList;2.2.2 课程设计要求的实现/Class类中各成员函数的实现void Class:setClassNum(string classNumTemp)this-classNum = classNumTemp;/ 设置课程编号的实现void Class:setClassName(string c

    27、lassNameTemp)this-className = classNameTemp;/设置课程名称的实现void Class:setClassProperties(string classPropertiesTemp)this-classProperties = classPropertiesTemp;/设置课程性质的实现void Class:setTotalClassNumber(int totalClassNumberTemp)this-totalClassNumber = totalClassNumberTemp;/设置总学时的实现void Class:setCurrentClass

    28、Number(int currentClassNumber)this-currentClassNumber = currentClassNumber;/设置授课学时的实现void Class:setExpClassNumber(int expClassNumberTemp)this-expClassNumber = expClassNumberTemp;/设置上机或实验学时的实现void Class:setCredit(double credit)this-credit = credit;/设置课程学分的实现void Class:setRightTerm(string rightTermTem

    29、p)this-rightTerm = rightTermTemp;/设置开课学期的实现string Class:getClassNum() const/设置为常函数防止数据改变return this-classNum;string Class:getClassName() constreturn this-className;string Class:getClassProperties() constreturn this-classProperties;int Class:getTotalClassNumber() constreturn this-totalClassNumber;int

    30、 Class:getCurrentClassNumber() constreturn this-currentClassNumber;int Class:getExpClassNumber() constreturn this-expClassNumber;double Class:getCredit() constreturn this-credit;string Class:getRightTerm() constreturn this-rightTerm;/Menu类各成员函数的实现char Menu: getInput() /获取输入函数金融数学考试大三下char key = cin.

    31、get();return key; void Menu: showMenu() cout 欢迎您进入学生选课管理系统 endl; cout * endl;cout endl;cout 1 课程信息录入 endl; cout 2 课程信息浏览功能 endl;cout 3 根据学分查询 endl;cout 4 按课程性质查询 endl;cout 5 存储信息 endl; cout 6 退出系统 endl;cout endl;cout 请输入操作对应的序号 endl;cout * endl;void Menu: clearScreen()system(cls);void Menu: pauseScr

    32、een() /暂停system(pause);void Menu: showAddClass() / 显示增添课程信息cout 请输入要添加的课程编号,课程名称,课程性质,总 学 时,授课学时,实验学时,学分,开课学期等信息 endl; void Menu: showBrowseClass()cout 所有课程的信息为 endl;void Menu: showSearchByCredit()cout 按照学分查询的结果为: endl;void Menu: showSearchByClassProperties()cout 按照课程性质查询的结果为: endl;void Menu: showAd

    33、dClassNum()cout n请输入课程编号 endl;void Menu: showAddClassName()cout 请输入课程名称 endl;void Menu: showAddClassProperties()cout 请输入课程性质 endl;void Menu: showAddTotalClassNumber()cout 请输入总学时 endl;void Menu: showAddCurrentClassNumber()cout 请输入授课学时 endl;void Menu: showAddExpClassNumber()cout 请输入实验或上机学时 endl;void M

    34、enu: showAddCredit()cout 请输入学分 endl;void Menu: showAddRightTerm()cout 请输入开课学期 endl;void Menu: showLoadingSaving()cout 正在存储数据 endl; void Menu: showSuccessedSaving()cout 数据存储完毕 endl;void Menu: quit()coutpress any key to continue;void Menu: showEachClassInfo(Class classTemp)cout 课程编号: classTemp.getClas

    35、sNum() ;cout 课程名称: classTemp.getClassName();cout 课程性质: classTemp.getClassProperties() ;cout 总学时: classTemp.getTotalClassNumber();cout 授课学时: classTemp.getCurrentClassNumber() ;cout 实验学时: classTemp.getExpClassNumber();cout 课程学分: classTemp.getCredit();cout 开课学期: classTemp.getRightTerm(); cout endl;cout

    36、 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 6:Menu:c

    37、learScreen();this-quit();Menu:pauseScreen();break; case 5:Menu:showLoadingSaving();if (this-saveClass()Menu:showSuccessedSaving();Menu:pauseScreen();Menu:pauseScreen();default:break;void Control: initIalization()ifstream ifs;/文件输入流ifs 相当于建立一个文件ifs.open(classSave.txt,ios_base:in);if (!ifs)Menu:pauseS

    38、creen();return;Class classTemp;/class 类的一个对象 classTempif (ifs.is_open()/系统内置函数 判断文件是否打开string classNum( );/初始化string className( );string classProperties( );int totalClassNumber(0);int currentClassNumber(0);int expClassNumber(0);double credit(0.0);string rightTerm( );while(!ifs.eof()ifs classNum clas

    39、sName classProperties totalClassNumber currentClassNumber expClassNumber credit rightTerm;/从文件读取的内容放到对应的变量里面classTemp.setClassNum(classNum);classTemp.setClassName(className);classTemp.setClassProperties(classProperties);classTemp.setTotalClassNumber(totalClassNumber);classTemp.setCurrentClassNumber(

    40、currentClassNumber);classTemp.setExpClassNumber(expClassNumber);classTemp.setCredit(credit);classTemp.setRightTerm(rightTerm);classList.push_back(classTemp);/在末尾添加一个变量ifs.close();void Control: addClass()/添加例如选课等操作Class classTemp;string classNum();string className();string classProperties();int totalClassNumber(0);int currentClass


    注意事项

    本文(C++设计学生选修课程系统设计.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922