C++课程信息管理系统链表STL版43536Word格式.docx
- 文档编号:5778849
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:50
- 大小:30.54KB
C++课程信息管理系统链表STL版43536Word格式.docx
《C++课程信息管理系统链表STL版43536Word格式.docx》由会员分享,可在线阅读,更多相关《C++课程信息管理系统链表STL版43536Word格式.docx(50页珍藏版)》请在冰点文库上搜索。
题目:
课程信息管理系统
专业:
班级:
姓名:
学号:
完成人数:
起讫日期:
任课教师:
职称:
部分管主任:
完成时间:
8
说明
1.本任务书由任课教师填写后,下达到学生。
2.任务完成后,任课教师需填写小结表。
3.任务书、学生成绩与学生完成后的大作业(纸质和电子两种)一并报送各教学研究部审核后转教务办。
4.另附一份全班大作业总结
大作业的要求和内容:
(包括题目选择范围、技术要求、递交时间、考核方法等)
请根据本学期所学的C++语言知识和面向对象的知识,以VC6.0或Visual
Studio2010为开发环境,独立完成一个Windows平台下的完整的C++应用程序。
大作业的内容和功能不做具体限定,每个小组需要根据自身的实际情况,通过小组讨论确定大作业选题。
选题内容不能过于简单,且必须满足如下要求:
1.采用面向对象程序设计,要运用类的继承、多态等机制;
2.具备文件读写功能,程序中的数据要以文件方式保存;
3.程序中要具备对STL容器的运用;
4.程序中要求具备异常处理;
5.要求具备菜单功能,根据用户的输入,执行相应的操作。
在菜单选项中,必须包含“关于”一项,该菜单项用来显示大作业的基本信息,包括程序名称、版本、完成时间,每位组员名字、班级、学号等信息;
6.程序要求做到界面友好,对于用户的输入操作要有明确的提示信息,并对输入的数据进行合法性和正确性的检查;
7.做到工程名、类名、变量名、代码格式等合乎规范,代码中必须对所设计的类的功能或函数功能进行规范的注解。
最终提交的作业,除提交完整的程序工程代码外,还必须以大作业报告的形式阐述整个程序的实现过程,要求报告内容中必须包括:
需求分析(项目介绍、功能需求);
系统分析与设计(阐述项目中需解决的关键技术问题,同时要以类关系图、程序流程图、功能模块示意图等辅助系统设计的描述);
程序设计与实现(其中内容不能只是粘贴全部代码,首先要描述代码工
程的文件组织结构,然后以文字的方式阐述代码中每个类的设计意图、
主要功能、运用到的关键知识点,主要成员函数的设计意图及功能介绍,
对于代码实现中有特色的算法或有创新的地方,可以着重描述(这将视
为大作业的加分点)。
如果必须给出实现代码才能更好地说明问题时,
也必须先有相关的文字叙述,然后才是代码,代码只是作为例证。
);
系统测试(该部分不能只简单展示几幅程序运行时的截图就完事!
要设
计几组有代表性的数据来验证程序的各个功能是否达到设计需求。
也就是测试是否有不正确或者是遗漏了的功能,在接口上,输入能否正确的接受,能否输出正确的结果;
是否有数据结构错误或者外部信息访问错误;
性能上是否满足要求;
是否有初始化或终止性错误等。
建议以表格的形式展示,具体请参考大作业模板的系统测试部分的描述);
个人小结(该部分为个人开发小结,其中必须谈到开发过程中遇到的困难以及如果克服困难、个人收获、得到的启示或教训等等,切忌空洞无实际内容或前篇一律的敷衍文字。
参考文献(该部分给出整个程序从选题、需求分析、系统设计到代码实现过程中所参考的书籍、网上资料等。
)。
大作业的评分点涵盖大作业从选题、小组分工、小组讨论、需求分析、代码实现到文档撰写全过程。
具体评分点及各评分点的比重如下:
选题
10%
评分依据:
选题的难度、创新度、工作量等
需求分析
分析是否充分、表述是否明确、功能的实用价值等
交流日志
5%
是否有真实的交流过程、交流的次数等
文档撰写质量35%
结构完整性、内容充实度、格式符合度、图表规范程度等
代码质量
40%
代码复杂度、功能完整性、是否运用了要求的知识点、设计或算法是否有创新等
教师小结:
成绩:
教师签名:
系部负责人:
学生签名:
NANCHANGUNIVERSITY
C++程序设计课程设计报告
题目:
学院:
一、项目需求分析1
1.1项目介绍1
1.2功能需求1
二、系统分析与设计1
2.1本程序需解决的关键技术问题1
2.2程序流程2
2.3功能模块2
2.4类的设计3
三、程序设计与实现4
3.1工程文件组织结构6
3.2程序设计6
3.3程序实现7
四、系统测试19
4.1测试概要19
4.2测试环境与配置19
4.3测试方法和工具19
4.4系统功能分解19
4.5测试内容20
五、个人小结21
六、参考文献22
附录22
I
一、项目需求分析
1.1项目介绍
课程信息管理系统是指具有录入、显示、保存、删除、修改和查询等一系列
功能高度集成的信息管理系统。
这是为了方便高校管理课程信息而专门开发的,提高管理课程的效率,降低人工管理成本等目的。
1.2功能需求
随着高校规模逐渐扩大,学生数量增多,人为课程管理任务繁重,工作繁多。
课程管理系统成为学生以及老师和学校必备的系统,主要实现以下功能:
1.课程基本信息录入
2.课程基本信息显示
3.课程基本信息保存
4.课程基本信息删除
5.课程基本信息修改
6.课程基本信息查询(按学分查询)
7.关于
8.退出系统
二、系统分析与设计
2.1本程序需解决的关键技术问题
虚基类指针的操作,构成一个链表进行数据的录入、显示、保存、删除、修
改、查询;
使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表
结构可以充分利用计算机内存空间,实现灵活的内存动态管理。
但是链表失去了
数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。
vector容器操作操作虚基类的指针,作为辅助功能实现;
vector是C++标准模板
库中的部分内容,中文偶尔译作“容器”,但并不准确。
它是一个多功能的,能够
操作多种数据结构和算法的模板类和函数库。
vector之所以被认为是一个容器,
是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存
放任意类型的动态数组,能够增加和压缩数据。
一连贯的文件读入读出操作;
将
1
所有功能连贯在一起。
2.2程序流程
程序开始
主菜单选择
课程基本信课程基本信课程基本信课程基本信课程基本信课程基本信
息录入息显示息保存息删除息修改息查询
录入课程编
显示课程编
保存课程编
根据课程编
根据课学分
号、课程名称、
号、课程名称
查询课程信
课程性质、学
删除课程
修改课程信息
息
时、授课学时、
实验学时、学
分
2.3功能模块
课
程
基
本
信
录
显
入
示
2.4类的设计
LinkList
虚基类
virtual
string
getNum()=0;
getName()=0;
getNature()=0;
int
getPeriod()=0;
getTeachingHours()=0;
getExperimentalHours()=0;
getCredit()=0;
void
setNum(const
n)=0;
setName(
const
setNature(
setPeriod(
p)=0;
setTeachingHours(
t)=0;
setExperimentalHours(
inte)=0;
setCredit(
c)=0;
*P;
stringcourseNum;
stringcourseName;
stringcourseNature;
intcoursePeriod;
intcourseTeachingHours;
intcourseExperimentalHours;
intcourseCredit;
Course类继承自LinkList类
函数功能几乎一样
CIMS类
CIMS();
~CIMS();
charShowMenu();
voidInput();
voidPrint();
voidSave();
voidDelete();
voidRevise();
voidFind();
voidRead();
LinkList*h;
//头结点
LinkList*node;
//中间结点
vector<
LinkList*>
courseVector;
三、程序设计与实现
工程的文件:
main.cpp
LinkList主要用来实现链表的功能,也就是说通过构造一个结点类来实现链表,通过Course继承虚基类来实现Course的功能。
class
{
public
:
setNum(
conststring
LinkList*P;
//指针
private:
//课程编号
//课程名称
//课程性质
coursePeriod;
//学时
courseTeachingHours;
//授课学时
courseExperimentalHours;
//实验学时
courseCredit;
//学分
};
Course类继承自LinkList,主要完成课程信息的记录,为课程类设计的蓝图,贯穿整个程序,为整个程序的主要数据结构,起到了核心作用。
classCourse:
publicLinkList
public:
Course():
courseNum("
"
),courseName("
),courseNature("
),coursePeriod(0),cour
seTeachingHours(0),courseExperimentalHours(0),courseCredit(0){}
Course(stringn,stringna,stringnat,intp=0,intt=0,inte=0,int
c=0):
courseNum(n),courseName(na),courseNature(nat),coursePeriod(p),
courseTeachingHours(t),courseExperimentalHours(e),courseCredit(c){}
stringgetNum(){returncourseNum;
}
stringgetName(){returncourseName;
}
stringgetNature(){returncourseNature;
getPeriod(){
return
getTeachingHours(){
returncourseTeachingHours;
getExperimentalHours(){
returncourseExperimentalHours;
getCredit(){
setNum(conststring
n){courseNum
=
n;
n){courseName
=n;
n){courseNature
=n;
p){coursePeriod=
p;
t){courseTeachingHours=
t;
inte){courseExperimentalHours=
e;
c){courseCredit=
c;
protected
courseNum;
//课程编号
courseName;
//课程名称
courseNature;
//课程性质
课程信息系统类,主要实现功能为管理信息的各大功能,方便日后维护代码。
CIMS
CIMS():
h(
NULL),node(NULL){}
char
ShowMenu();
Input();
Print();
Save();
Delete();
Revise();
Find();
Read();
private
*h;
*node;
//中间结点
*>
3.1工程文件组织结构
只有一个主文件:
main.cpp。
3.2程序设计
运用到的关键知识:
vectorSTL容器,虚基类,继承,文件操作,指针链表,
异常处理,多态。
每个环节环环相扣,一个类接着一个类,指针链表操作不得出错,容器STL
衔接使用,双重数据操作完美结合。
3.3程序实现
“由上往下”设计思路:
这是一种自然直观的设计方法。
首先确定用户级虚拟机器的基本特征、数据类型和基本命令等,而后再逐级向下设计,直到硬件执行或解释那级为止。
当然每级设计过程中,既要考虑实现方法,也要考虑如何使上一级能优化实现。
从考虑如何满足应用要求开始设计。
缺点是应用的改变会带来系统效率的急剧下降。
首先,考虑了用户需要储存的数据类型。
其次,考虑了用户使用的需求功能,比如:
录入、显示、删除等等功能。
最后,逐步实现了这一一细分的功能模块。
程序源码:
#include<
iostream>
conio.h>
stdlib.h>
string>
fstream>
vector>
usingnamespacestd;
//---------------------------------------
//---------------
虚基类----------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程 信息管理 系统 STL 43536