




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
温馨提示温馨提示 程序语言 C C C Python 红色字体红色字体 表示本课设使用的程序设计程序设计 语言语言 图形功能选项 Win32 控制台程序 黑框 文本界面 控制台程序 黑框 文本界面 Win32 程序 MFC WinForm DirectX10 黑体标明黑体标明 表示本课设的程序图形类别程序图形类别 默认为 非图形界面非图形界面 Win32 控制台程序控制台程序 数据结构 基础类型 数组 链表链表 双向链表 搜索树 非平衡二叉树 平衡二叉树 链表与平衡二叉树相结合 堆栈 队列 串 图 黑体标明黑体标明 表示 本课设使用的数据结构数据结构 C 语言项 STL 库库 黑体标明黑体标明 表示使用 C 的 STL 库库 编译环境 Windows 7 64 位旗舰版 Linux 及其他环境及其他环境请谨慎下载请谨慎下载 集成开发环境 Visual C 6 0 DEVC CodeBlocks Visual Studio 2015 均可通过编译 浅蓝色字体 表示无法通过编译 分多头文件头文件编译 否否 所有代码基本都包含在一个文件内一个文件内 如需试验头文 件功能 请自行参考相关文献 内容说明 1 课设题目及预览内容课设题目及预览内容 将在第二页开始展示 2 代码行数 473 行 3 目录目录 所示内容 本文基本涵盖 如无内容 会在本页进行说明如无内容 会在本页进行说明 4 附录附录 绝对包含用户使用手册用户使用手册及程序完整源代码和详细注释程序完整源代码和详细注释 5 如需下载如需下载 其他 头文件 例如头文件 例如 DirectX 需另行配置 需另行配置 本文会在此 进行说明 6 本文撰写内容仅供学习参考本文撰写内容仅供学习参考 另外 由于本人水平有限 编写之处 难免存在错误和纰漏 恳请各位老师或同学批评指正 2 题目 题目 课程信息管理系统课程信息管理系统 详细的任务要求 请下滑查看 以下是程序截图 3 4 5 6 7 8 软件学院大作业任务书软件学院大作业任务书 题 目 课程信息管理系统 专 业 班 级 姓名 学 号 完成人数 起讫日期 任课教师 职称 部分管主任 完成时间 说说 明明 1 本任务书由任课教师填写后 下达到学生 2 任务完成后 任课教师需填写小结表 3 任务书 学生成绩与学生完成后的大作业 纸质和电子两种 一 并报送各教学研究部审核后转教务办 4 另附一份全班大作业总结 大作业的要求和内容 大作业的要求和内容 包括题目选择范围 技术要求 递交时间 考核方法等 包括题目选择范围 技术要求 递交时间 考核方法等 请根据本学期所学的 C 语言知识和面向对象的知识 以 VC6 0 或 Visual Studio 2010 为开发环境 独立完成一个 Windows 平台下的完整的 C 应用程序 大作业的内容和功能不做具体限定 每个小组需要根据自身的实际情况 通过小组讨论确定大作业选题 选题内容不能过于简单 且必须满足如下要求 1 采用面向对象程序设计面向对象程序设计 要运用类的继承 多态等机制 2 具备文件读写文件读写功能 程序中的数据要以文件方式保存 3 程序中要具备对 STL 容器容器的运用 4 程序中要求具备异常处理异常处理 5 要求具备菜单功能菜单功能 根据用户的输入 执行相应的操作 在菜单选菜单选 项项中 必须包含 关于 一项 该菜单项用来显示大作业的基本信息 包括程序名称 版本 完成时间 每位组员名字 班级 学号等信 息 6 程序要求做到界面友好 对于用户的输入操作要有明确的提示信息 并对输入的数据进行合法性和正确性的检查 7 做到工程名 类名 变量名 代码格式等合乎规范 代码中必须对 所设计的类的功能或函数功能进行规范的注解 最终提交的作业 除提交完整的程序工程代码外 还必须以大作业报告的形 式阐述整个程序的实现过程 要求报告内容中必须包括 需求分析需求分析 项目介绍 功能需求 系统分析与设计系统分析与设计 阐述项目中需解决的关键技术问题 同时要以类关系 图 程序流程图 功能模块示意图等辅助系统设计的描述 程序设计与实现程序设计与实现 其中内容不能只是粘贴全部代码不能只是粘贴全部代码 首先要描述代码工 程的文件组织结构 然后以文字的方式阐述代码中每个类的设计意图 主要功能 运用到的关键知识点 主要成员函数的设计意图及功能介绍 对于代码实现中有特色的算法或有创新的地方 可以着重描述 这将视 2 为大作业的加分点 如果必须给出实现代码才能更好地说明问题时 也必须先有相关的文字叙述 然后才是代码 代码只是作为例证 系统测试系统测试 该部分不能只简单展示几幅程序运行时的截图就完事 要设 计几组有代表性的数据来验证程序的各个功能是否达到设计需求 也就 是测试是否有不正确或者是遗漏了的功能 在接口上 输入能否正确的 接受 能否输出正确的结果 是否有数据结构错误或者外部信息访问错 误 性能上是否满足要求 是否有初始化或终止性错误等 建议以表格 的形式展示 具体请参考大作业模板的系统测试部分的描述 个人小结个人小结 该部分为个人开发小结 其中必须谈到开发过程中遇到的困 难以及如果克服困难 个人收获 得到的启示或教训等等 切忌空洞无 实际内容或前篇一律的敷衍文字 参考文献参考文献 该部分给出整个程序从选题 需求分析 系统设计到代码实 现过程中所参考的书籍 网上资料等 大作业的评分点涵盖大作业从选题 小组分工 小组讨论 需求分析 代 码实现到文档撰写全过程 具体评分点及各评分点的比重如下 选题 10 评分依据 选题的难度 创新度 工作量等 需求分析 10 评分依据 分析是否充分 表述是否明确 功能的实用价值等 交流日志 5 评分依据 是否有真实的交流过程 交流的次数等 文档撰写质量 35 评分依据 结构完整性 内容充实度 格式符合度 图表规范程度等 代码质量 40 评分依据 代码复杂度 功能完整性 是否运用了要求的知识点 设 计或算法是否有创新等 3 教师小结 成绩 教师 签名 系部负责人 学生 签名 NANCHANG UNIVERSITY C 程序设计课程设计报告程序设计课程设计报告 题题 目目 学学 院 院 专专 业 业 班班 级 级 完成人数 完成人数 起讫日期 起讫日期 任课教师 任课教师 职称 部分管主任 部分管主任 完成时间 完成时间 I 目录目录 一 一 项目需求分项目需求分析析 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 1 一 一 项目需求分析项目需求分析 1 1项目介绍项目介绍 课程信息管理系统是指具有录入 显示 保存 删除 修改和查询等一系 列功能高度集成的信息管理系统 这是为了方便高校管理课程信息而专门开发 的 提高管理课程的效率 降低人工管理成本等目的 1 2功能需求功能需求 随着高校规模逐渐扩大 学生数量增多 人为课程管理任务繁重 工作繁 多 课程管理系统成为学生以及老师和学校必备的系统 主要实现以下功能 1 课程基本信息录入 2 课程基本信息显示 3 课程基本信息保存 4 课程基本信息删除 5 课程基本信息修改 6 课程基本信息查询 按学分查询 7 关于 8 退出系统 二 二 系统分析与设计系统分析与设计 2 1本程序需解决的关键技术问题本程序需解决的关键技术问题 虚基类指针的操作 构成一个链表进行数据的录入 显示 保存 删除 修改 查询 使用链表结构可以克服数组链表需要预先知道数据大小的缺点 链表结构可以充分利用计算机内存空间 实现灵活的内存动态管理 但是链表 失去了数组随机读取的优点 同时链表由于增加了结点的指针域 空间开销比 较大 vector 容器操作操作虚基类的指针 作为辅助功能实现 vector 是 C 标 准模板库中的部分内容 中文偶尔译作 容器 但并不准确 它是一个多功能 的 能够操作多种数据结构和算法的模板类和函数库 vector 之所以被认为是 一个容器 是因为它能够像容器一样存放各种类型的对象 简单地说 vector 是一个能够存放任意类型的动态数组 能够增加和压缩数据 一连贯的文件读 2 入读出操作 将所有功能连贯在一起 2 2程序流程程序流程 2 3功能模块功能模块 程序开始 主菜单选择 课程基本信 息录入 课程基本信 息显示 课程基本信 息保存 课程基本信 息删除 课程基本信 息修改 课程基本信 息查询 录入课程编号 课程名称 课 程性质 学时 授课学时 实 验学时 学分 显示课程编号 课程名称 课 程性质 学时 授课学时 实 验学时 学分 保存课程编号 课程名称 课 程性质 学时 授课学时 实 验学时 学分 根据课程编号 课程名称删除 课程 根据课程编号 课程名称修改 课程信息 根据课学分 查询课程信 息 课程信息管理系统 课 程 基 本 信 息 录 入 课 程 基 本 信 息 显 示 课 程 基 本 信 息 显 示 课 程 基 本 信 息 显 示 课 程 基 本 信 息 显 示 课 程 基 本 信 息 显 示 3 2 4类的设计类的设计 LinkList 虚基类 virtual string getNum 0 virtual string getName 0 virtual string getNature 0 virtual int getPeriod 0 virtual int getTeachingHours 0 virtual int getExperimentalHours 0 virtual int getCredit 0 virtual void setNum const string n 0 virtual void setName const string n 0 virtual void setNature const string n 0 virtual void setPeriod const int p 0 virtual void setTeachingHours const int t 0 virtual void setExperimentalHours const int e 0 virtual void setCredit const int c 0 LinkList P string courseNum string courseName string courseNature int coursePeriod int courseTeachingHours int courseExperimentalHours int courseCredit Course 类继承自 LinkList 类 函数功能几乎一样 4 三 三 程序设计与实现程序设计与实现 工程的文件 main cpp LinkList 主要用来实现链表的功能 也就是说通过构造一个结点类来实现链 表 通过 Course 继承虚基类来实现 Course 的功能 class LinkList public virtual string getNum 0 virtual string getName 0 virtual string getNature 0 virtual int getPeriod 0 virtual int getTeachingHours 0 virtual int getExperimentalHours 0 virtual int getCredit 0 virtual void setNum const string n 0 virtual void setName const string n 0 virtual void setNature const string n 0 virtual void setPeriod const int p 0 virtual void setTeachingHours const int t 0 virtual void setExperimentalHours const int e 0 virtual void setCredit const int c 0 CIMS 类 CIMS CIMS char ShowMenu void Input void Print void Save void Delete void Revise void Find void Read LinkList h 头结点 LinkList node 中间结点 vector courseVector 5 LinkList P 指针 private string courseNum 课程编号 string courseName 课程名称 string courseNature 课程性质 int coursePeriod 学时 int courseTeachingHours 授课学时 int courseExperimentalHours 实验学时 int courseCredit 学分 Course 类继承自 LinkList 主要完成课程信息的记录 为课程类设计的蓝图 贯穿整个程序 为整个程序的主要数据结构 起到了核心作用 class Course public LinkList public Course courseNum courseName courseNature coursePeriod 0 cour seTeachingHours 0 courseExperimentalHours 0 courseCredit 0 Course string n string na string nat int p 0 int t 0 int e 0 int c 0 courseNum n courseName na courseNature nat coursePeriod p courseTeachingHours t courseExperimentalHours e courseCredit c string getNum return courseNum string getName return courseName string getNature return courseNature int getPeriod return coursePeriod int getTeachingHours return courseTeachingHours int getExperimentalHours return courseExperimentalHours int getCredit return courseCredit void setNum const string n courseNum n void setName const string n courseName n void setNature const string n courseNature n void setPeriod const int p coursePeriod p void setTeachingHours const int t courseTeachingHours t void setExperimentalHours const int e courseExperimentalHours e void setCredit const int c courseCredit c protected string courseNum 课程编号 6 string courseName 课程名称 string courseNature 课程性质 int coursePeriod 学时 int courseTeachingHours 授课学时 int courseExperimentalHours 实验学时 int courseCredit 学分 课程信息系统类 主要实现功能为管理信息的各大功能 方便日后维护代 码 class CIMS public CIMS h NULL node NULL CIMS char ShowMenu void Input void Print void Save void Delete void Revise void Find void Read private LinkList h 头结点 LinkList node 中间结点 vector courseVector 3 1工程文件组织结构工程文件组织结构 只有一个主文件 main cpp 3 2程序设计程序设计 运用到的关键知识 vector STL 容器 虚基类 继承 文件操作 指针链表 异常处理 多态 7 每个环节环环相扣 一个类接着一个类 指针链表操作不得出错 容器 STL 衔接使用 双重数据操作完美结合 3 3程序实现程序实现 由上往下 设计思路 这是一种自然直观的设计方法 首先确定用户级虚 拟机器的基本特征 数据类型和基本命令等 而后再逐级向下设计 直到硬件 执行或解释那级为止 当然每级设计过程中 既要考虑实现方法 也要考虑如 何使上一级能优化实现 从考虑如何满足应用要求开始设计 缺点是应用的改 变会带来系统效率的急剧下降 首先 考虑了用户需要储存的数据类型 其次 考虑了用户使用的需求功能 比如 录入 显示 删除等等功能 最后 逐步实现了这一一细分的功能模块 程序源码 include include include include include include using namespace std 虚基类 class LinkList public virtual string getNum 0 virtual string getName 0 virtual string getNature 0 virtual int getPeriod 0 virtual int getTeachingHours 0 virtual int getExperimentalHours 0 virtual int getCredit 0 virtual void setNum const string n 0 virtual void setName const string n 0 virtual void setNature const string n 0 virtual void setPeriod const int p 0 8 virtual void setTeachingHours const int t 0 virtual void setExperimentalHours const int e 0 virtual void setCredit const int c 0 LinkList P 指针 private string courseNum 课程编号 string courseName 课程名称 string courseNature 课程性质 int coursePeriod 学时 int courseTeachingHours 授课学时 int courseExperimentalHours 实验学时 int courseCredit 学分 Course 类 class Course public LinkList public Course courseNum courseName courseNature coursePeriod 0 courseTeachingHours 0 courseExperimentalHours 0 courseCredit 0 Course string n string na string nat int p 0 int t 0 int e 0 int c 0 courseNum n courseName na courseNature nat coursePeriod p courseTeachingHours t courseExperimentalHours e courseCredit c string getNum return courseNum string getName return courseName string getNature return courseNature int getPeriod return coursePeriod int getTeachingHours return courseTeachingHours int getExperimentalHours return courseExperimentalHours int getCredit return courseCredit void setNum const string n courseNum n void setName const string n courseName n void setNature const string n courseNature n void setPeriod const int p coursePeriod p void setTeachingHours const int t courseTeachingHours t void setExperimentalHours const int e courseExperimentalHours e void setCredit const int c courseCredit c 9 protected string courseNum 课程编号 string courseName 课程名称 string courseNature 课程性质 int coursePeriod 学时 int courseTeachingHours 授课学时 int courseExperimentalHours 实验学时 int courseCredit 学分 Course information management system class CIMS public CIMS h NULL node NULL CIMS char ShowMenu void Input void Print void Save void Delete void Revise void Find void Read void About private LinkList h 头结点 LinkList node 中间结点 vector courseVector CIMS CIMS for NULL h node h h h P delete node 显示菜单 10 char CIMS ShowMenu system cls cout endl endl cout t t t endl cout t t t 1 课程基本信息录入 endl cout t t t endl cout t t t 2 课程基本信息显示 endl cout t t t endl cout t t t 3 课程基本信息保存 endl cout t t t endl cout t t t 4 课程基本信息删除 endl cout t t t endl cout t t t 5 课程基本信息修改 endl cout t t t endl cout t t t 6 课程基本信息查询 endl cout t t t endl cout t t t 7 关于 endl cout t t t endl cout t t t 8 退出系统 endl cout t t t endl return getch 输入功能 void CIMS Input 11 string str 3 int ii 4 char ch 100 system cls cout 请输入课程编号 cin getline ch 100 str 0 ch cout 请输入课程名称 cin getline ch 100 str 1 ch cout 请输入课程性质 cin getline ch 100 str 2 ch cout 请输入学时 cin getline ch 100 ii 0 atoi ch cout 请输入授课学时 cin getline ch 100 ii 1 atoi ch ii 2 ii 0 ii 1 cout P NULL node h courseVector push back h else node P new Course str 0 str 1 str 2 ii 0 ii 1 ii 2 ii 3 node node P node P NULL courseVector push back node getch 显示功能 void CIMS Print node h 12 system cls for NULL node node node P cout 课程编号 getNum endl cout 课程名称 getName endl cout 课程性质 getNature endl cout 学时 getPeriod endl cout 授课学时 getTeachingHours endl cout 实验学时 getExperimentalHours endl cout 学分 getCredit endl endl if h cout 暂无数据 getch 保存功能 void CIMS Save ofstream out vector iterator It courseVector begin int sign 0 system cls try out open course txt ios out ios trunc if out throw 1 for It courseVector end It out It getNum endl out It getName endl out It getNature endl out It getPeriod endl out It getTeachingHours endl out It getExperimentalHours endl out It getCredit endl sign catch cout 数据保存失败 if sign cout 数据保存成功 endl out close getch 13 删除功能 void CIMS Delete string str char ch 100 int sign 0 LinkList t NULL vector iterator It courseVector begin node h system cls cout 请输入要删除的课程编号或者课程名称 cin getline ch 100 str ch for It courseVector end It if str It getNum str It getName courseVector erase It sign cout P node node P if node h 改变头指针 delete node break else if NULL node P P node P NULL delete t break else if str node P getNum str node P getName t node P node P node P P delete t break 14 if sign cout 删除失败 该数据不存在 getch 修改功能 void CIMS Revise vector iterator It courseVector begin string str 3 string str1 int ii 4 char ch 100 int sign 0 node h system cls cout 请输入需要修改的课程编号或课程名称 cin getline ch 100 str1 ch for It courseVector end It if str1 It getNum str1 It getName system cls cout 请输入课程编号 cin getline ch 100 str 0 ch cout 请输入课程名称 cin getline ch 100 str 1 ch cout 请输入课程性质 cin getline ch 100 str 2 ch cout 请输入学时 cin getline ch 100 ii 0 atoi ch cout 请输入授课学时 cin getline ch 100 ii 1 atoi ch ii 2 ii 0 ii 1 cout setNum str 0 It setName str 1 15 It setNature str 2 It setPeriod ii 0 It setTeachingHours ii 1 It setExperimentalHours ii 2 It setCredit ii 3 sign for NULL node node node P if sign break if str1 node getNum str1 node getName node setNum str 0 node setName str 1 node setNature str 2 node setPeriod ii 0 node setTeachingHours ii 1 node setExperimentalHours ii 2 node setCredit ii 3 if sign cout 修改成功 else cout 该数据不存在 getch 按学分查询功能 void CIMS Find vector iterator It courseVector begin int credit 0 char ch 100 int sign 0 system cls cout 请输入要查询的学分课程 cin getline ch 100 credit atoi ch for It courseVector end It if credit It getCredit cout 课程编号 getNum endl cout 课程名称 getName endl 16 cout 课程性质 g
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 入职感想课件
- 2025-2026学年高一上学期开学第一课生涯规划始业教育主题班会课件
- 倾听的魔力课件
- 铁路局员工管理办法
- 股骨颈骨折的治疗和护理
- 企业高管安全生产培训课件
- 税务风险管理办法试行
- 推动新质生产力加快发展的实践路径
- 新质生产力的代表性成果
- 畜牧兽医基础期末考试试题及答案
- 塔吊出租安全协议书范本
- 2025年国家统一司法考试真题及答案
- 绿色矿山培训课件
- 2025四川宜宾五粮液集团旗下环球集团招聘75人笔试参考题库附答案解析
- 纪念抗美援朝队会课件
- 2025-2026学年人教版(2024)小学数学三年级上册(全册)教学设计(附目录P296)
- 2025广东茂名市信宜市供销合作联社招聘基层供销社负责人2人笔试模拟试题及答案解析
- 医院护理人文关怀实践规范专家共识
- 成人反流误吸高危人群全身麻醉管理专家共识(2025版)解读
- 初二体育课程教学计划及实施
- 2025年山东省临沂市、枣庄市、聊城市、菏泽市、济宁市中考语文试题解读
评论
0/150
提交评论