学生选课管理系统

  • 格式:doc
  • 大小:694.56 KB
  • 文档页数:20

课程设计报告课程名称C++面向对象程序设计课题名称学生选修课程系统专业信息与计算科学班级学号姓名指导教师2011 年12 月25 日湖南工程学院课程设计任务书课程名称算法与程序设计课题学生选修课程系统专业班级学生姓名学号指导老师审批任务书下达日期2011 年12 月8日任务完成日期2012 年 1 月7日一、设计内容与设计要求1.设计内容:对课程《算法与程序设计》中的相关内容进行综合设计或应用(具体课题题目见后面的供选题目)。

题目1:学生选修课程系统(一、)课程设计题目:学生选修课程系统(二)、目的与要求:1、目的:(1)要求学生达到熟练掌握C++语言的基本知识和技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。

2、基本要求:(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;(2)要求在设计的过程中,建立清晰的类层次;(4)在系统的设计中,至少要用到面向对象的一种机制。

3、创新要求:在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。

4、写出设计说明书(三、)设计方法和基本原理:1、问题描述(功能要求):假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。

试设计一选修课程系统,使之能提供以下功能:(1)系统以菜单方式工作(2)课程信息录入功能(课程信息用文件保存)--输入(3)课程信息浏览功能--输出(4)查询功能:(至少一种查询方式)--算法ⅰ按学分查询ⅱ按课程性质查询(5)学生选修课程(可选项)2、问题的解决方案:根据系统功能要求,可以将问题解决分为以下步骤:(1)分析系统中的各个实体之间的关系及其属性和行为;(2)根据问题描述,设计系统的类层次;(3)完成类层次中各个类的描述(包括属性和方法);(4)完成类中各个成员函数的定义;(5)完成系统的应用模块;(6)功能调试;(7)完成系统总结报告以及系统使用说明书。

设计要求:课程设计报告正文内容(包括系统设计要求,设计思路,系统功能模块图,系统流程图,类的层次图(包括类成员列表),调试过程,关键程序代码,总结,参考书目等)。

(一)需求分析系统设计目的与意义系统功能需求(系统流程图);输入输出的要求;(二)总体设计系统功能分析;系统功能模块划分与设计(系统功能模块图)。

(三)详细设计数据库需求分析数据库概念结构设计(E-R图);数据库逻辑结构设计。

类层次图(四)界面设计与各功能模块实现(五)系统调试调试问题出现的主要问题:编译语法错误及修改,重点是运行逻辑问题修改和调整(六)使用说明及编程体会说明如何使用你编写的程序,详细列出每一步的操作步骤。

(七)关键源程序(带注释)●书写格式a.要求用A4纸打印成册b.正文格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。

c.正文的内容:正文总字数要求在3000字左右(不含程序原代码)。

d.封面格式如下页。

●考核方式指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,并按优秀、良好、中等、及格和不及格五个等级给出每位同学的课程设计成绩。

具体考核标准包含以下几个部分:a.平时出勤(占10%)b.系统需求分析、功能设计、数据结构设计及程序总体结构合理与否(占10%)c.程序能否完整、准确地运行,个人能否独立、熟练地调试程序(占40%)d.设计报告(占30%)注意:不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。

e.独立完成情况(占10%)。

●课程验收要求a.判定算法设计的合理性,运行相关程序,获得正确的数值结果。

b.回答有关问题。

c.提交课程设计报告。

d.提交软盘(源程序、设计报告文档)。

e.依内容的创新程度,完善程序情况及对程序讲解情况打分。

三、教材及参考书朱战立等著, C++面向对象程序设计,人民邮电出版社;郑莉著, C++ 语言程序设计(含实验指导书)。

清华大学出版社( 结构化程序设计部分 ) 钱能主编 ,C++ 程序设计教程,清华大学出版社, 2000.11戴锋编著, Visual C++ 程序设计基础 , 清华大学出版社 ,2001.4吕日著, C++ 程序设计教程,清华大学出版社,C++ 大学教程,美国 Harvey M.Deitel 等四、进度安排1、班级:信息与计算科学:1001、1002、10032、主讲教师:王祝君3、辅导教师:王祝君、聂存云4、时间安排:第 16-17 周星期二 8时:00分——11时:30分星期二 14时:00分——17时:30分星期六 8时:30分——11时:30分星期六 14时:30分——17时:30分目录1系统需求分析 ............................................... 2总体设计 ....................................................... 3详细设计 ....................................................... 4界面设计与各功能模块实现 .......................5 系统调试 ......................................................6 实验心得体会 .............................................. 7附:源程序 ...................................................1系统需求分析(1)、本系统是针对高校学生的选修课程而设计,通过本系统高校学生可以很方便地进行自由选课。

主要的问题描述是(功能要求):n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。

(2)、主要要求实现的功能如下:①课程信息录入功能:能根据提示将各课程的相关信息进行输入并保存;②课程信息浏览功能:能将已经录入并保存的信息进行浏览;③查询功能:可根据不同的查询方式查询相应的课程信息。

其中查询方式有按学分查询和按课程性质查询两种;(3)、输入输出要求:系统以菜单方式工作。

用户根据每一个功能模块输入相应内容,然后进行相应的操作。

如需进行其他操作,可返回主菜单。

输出的内容要有一个良好的界面,使用户看清楚明白。

2总体设计(1)、系统功能分析本系统主要由一个Class类及其五个成员函数组成。

课题所要求的功能由各个函数分别得以实现。

首先,在Class类内定义了一些成员变量,用来保存课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,还对它的成员变量进行了声明,如:然后,在类外,通过作用域运算符将类内声明的成员函数定义,以及进行相应的操作,以实现相应的功能。

主要包括功能要求中的五大功能,即信息输入、信息浏览、按学分查询课程、按课程性质查询课程等。

最后,在主函数中设置目录显示。

用switch瓜分不同的功能选项。

系统根据用户输入的符号,调用相应的成员函数,完成功能的实现。

(2)、各个模块之间的关系如下图:3详细设计(1) 数据库需求分析该程序主要包含一个Class 类和一个main()函数。

其中Class 类中有Input(),OutPut(),Search(),SearchByscore(float),SearchByKind(strin g)函数来实现各功能。

像在Input()信息输入函数中,ofstream outfile 创建一个文件输出流对象语句就要用到系统库函数fstream ,而conio.h 则是 Console (键盘和屏幕) 输出输入函数的头文件,con - Console ,io -- input,output 。

程序中各功能函数如SearchBy (float)按分数查询和 SearchByKind(string)按性质查询,显然是两个独立的函数,但其实现过程很像似。

学生选修课程系统设计Course 类Main 函数Input ()Output () SearchBysco re () SearchByKi nd ()(2) 类层次图课程 课程编号 课程名字 课程性质 总学时 授课学时实验或上机学时学分 开课学期课程信息录入功能 课程信息浏览功能查询功能 按学分查询 按课程性质查询 学生选修课程课程授课学时编号名称上机学时性质学分总学分开课学期输入输出 显示查找4界面设计与各功能模块实现(1)、功能实现的文件模块:在主函数中设置目录显示。

设计一个友好、漂亮的界面,通过switch语句进行选择进入相应的功能模块,建立一个class类的对象a,用对象名调用class类的功能函数,恰当的使用清屏函数。

通过对象a调用相应的成员函数,如a.Input()、a.OutPut()、a.Search()等等,这些公有函数成员就是这个系统要求设计的功能模块。

各个功能函数的具体实现如下:①、录入函数模块:首先,创建一个文件输出流对象outfile,打开文件,判断文件是否存在。

通过while设一个无限循环,当给出指定条件时退出。

在循环中,调用cout函数来提示用户输入相应的信息,如课程编号、名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期等等。

将需要的课程输入完毕之后,可根据提示再输入“q”,即可返回主菜单,重新进行功能的选择。

该步骤界面设计操作图如下:显示(浏览)函数模块:该函数首先创建了输入流文件对象infile,使用语句infile.open(file),然后定义一个string类型的二维数组,用来保存从文本内读取的信息,用for循环保证保存不止一门课程的信息。

最后,cout输出显示所有保存的信息。

操作界面图如下:查找功能,即按学分查找和按课程性质查找,具体的实现如下:按课程性质查找:创建输入流文件对象infile,然后定义一个string类型的二维数组,用来保存从文本内读取的信息,比较用户输入的字符和保存的信息中那些课程的性质相对应,将相应的课程信息进行输出显示,界面设计操作图如下:5 系统调试(1)在查找功能函数当中,我一直被循环语句所困扰,这一直是我的薄弱,但看了其他高手的程序后,才有所突破,可输出正确的结果。

(2)进行程序调试时,事先函数中没有用到清屏,导致界面繁琐不清晰。

后来在头文件中加了#include<windows.h>,又在程序中适当地添加了system("cls")语句,这才使得界面友好清晰。