




免费预览已结束,剩余26页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
封封 皮皮 按学校要求手工填写 按学校要求手工填写 成绩评定表成绩评定表 学生姓名 班级学号 专 业 通信工程课程设计题目 项目管理系统 评 语 组长签字 成绩 日期 年 月 日 课课 程程 设设 计计 任任 务务 书书 学院信息科学与工程学院专业通信工程 学生姓名学号 设计题目项目管理系统 内容及要求 该系统处理项目的相关信息 项目信息主要包括 项目编号 项目名称 等级 负责人等内容 要求实现以下功能 1 建立项目类 2 项目信息初始化 3 项目信息的添加 修改 删除 查找 4 项目信息的输出 5 在项目信息中按项目编号 项目名称排序 进度安排 第 17 周 分析题目 查阅课题相关资料 进行类设计 算法设计 第 18 周 程序的设计 调试与实现 第 19 周 程序测试与分析 撰写课程设计报告 进行答辩验收 指导教师 签字 年 月 日 学院院长 签字 年 月 日 目目 录录 1 需求分析 1 2 算法基本原理 1 3 类设计 2 4 详细设计 3 4 1 类的接口设计 3 4 2 类的实现 6 4 3 主函数设计 12 5 DOS 界面程序运行结果及分析 13 5 1 程序运行结果 13 5 2 运行结果分析 16 6 基于 MFC 的图形界面程序开发 17 6 1 基于 MFC 的图形界面程序设计 17 6 2 程序测试 23 6 3 MFC 程序编写总结 26 7 参考文献 27 1 1 1 需求分析需求分析 该系统处理项目的相关信息 项目信息主要包括 项目编号 项目名称 等级 负责人等内容 要求实现以下功能 1 建立项目类 2 项目信息初始化 3 项目信息的添加 修改 删除 查找 4 项目信息的输出 5 在项目信息中按项目编号 项目名称排序 随着信息化的普及一个企业按传统做法 设定一个项目后 参与的会有很 多部门 彼此信息统计需要太多时间影响效率 项目管理系统可对项目的全部 工作进行高效的管理 便于项目经理对项目信息进行临时调整和修改 转入转 出资料 制作报表 计算预算值并对时间利用 成本 人员分配 质量 风险 的多种因素进行综合考虑 制定计划从而充分的实现高运营效率 项目管理系 统还可同时处理多个子项目 对项目实施跟踪和监督针 对各种情况做出假设 制定应对策略且文件项目的保密程度高 实用型高 2 2 算法基本原理算法基本原理 设有 4 个项目分别是 1 项目编号 8 项目名称 a 项目等级 4 级 负责人 john 2 项目编号 9 项目名称 b 项目等级 3 级 负责人 lin 3 项目编号 7 项目名称 c 项目等级 6 级 负责人 sheng 4 项目编号 4 项目名称 d 项目等级 7 级 负责人 hong 此时需要的操作为 1 加入项目 编号 3 名称 e 等级 2 负责人 ming 2 修改 修改项目 4 3 查找等级为 2 级的项目 4 删除项目 7 5 按编号和名称排序 2 第一步 添加过程 运行添加程序 输入 编号 3 名称 e 等级 2 负责人 ming 会将项目 3 加入列表 此时共有五个项目 第二步 修改过程 运行修改程序 输入项目编号 如 4 之后输入新的 4 号项目的名称 等 级 负责人等信息 第三步 查找过程 运行查找程序 输入按等级查找 查找等级为 2 的项目 输出结果为 3 号 项目 第四步 删除过程 运行删除程序 输入删除项目的编号 如输入 7 会将 7 号项目删除此时 剩余 4 个项目 第五步 排序过程 选择按编号排序 则输出次序为 3 号 4 号 8 号 9 号 选择按名称排序 则输出次序为 a 项目 b 项目 d 项目 e 项目 3 3 类设计类设计 从算法分析可以看出 本设计面临的关键问题是对各个项目信息的输入 删除 修改 查找 可定义一个项目类 project 一个新数据类 Rdata 作为基 类 然后由项目类继承出提取名称 getname 提取项目总数 gettag 提取 编号 getnumber 提取负责人 getcharge 提取等级 getlevel 输入名称 和负责人 setname 输入编号和等级 setnum 删除类 del 派生出虚函 数添加项目类 addproject 和输出类 output 新数据类 Rdata 声明其构造函 数 输出函数 output 排序函数 sort 操作函数 projectdate 重新定义 项目添加函数 addproject 和析构函数 RData 定义初始化函数 clear 按编号查找函数 equal 其中 项目类 project 中的 getname gettag getnumber getcharge getlevel setname setnum 负责输入和提取信息 del 负责删除信息 派生出的虚函数 output 负责对项目信息的输出 addproject 负责新项目的添加 新数据类 Rdata 类中的 output 负责最终信息 的输出 sort 负责对项目信息的按名称排序和按序号排序 projectdate 负责 对项目信息进行添加 删除 修改 查找等操作 clear 负责清空当前的所有 3 信息 equal 负责按编号查找项目 被重新定义的 addproject 负责添加项目信 息 析构函数用来释放内存 4 4 详细设计详细设计 整个程序分为三个独立的文档 project 文件中包括 addproject del getcharge getleval getname getnumber gettag out put project setname setnum 的声明 RData 文件中包括 addproject clear equal output projectdate RData RData sort 函 数的声明用于具体步骤的实现 Globals 文件包括程序的主函数 4 1 类的接口设计 include include include using namespace std define m 100 define M 10 class project 基类 project 的声明 private int tag 项目总数 int number 编号 char name 15 名称 int leval 等级 char charge 15 负责人 public 外部接口 project 构造函数 char getname 提取名称函数定义 return name int gettag 提取项目总数函数定义 4 return tag int getnumber 提取编号名称函数定义 return number char getcharge 提取负责人函数定义 return charge int getleval 提取等级函数定义 return leval void setname char na char nb 输入名称和负责人函数定义 strcpy name na strcpy charge nb void setnum int a int b 输入编号和等级函数定义 number a leval b void del 删除函数定义 tag 1 virtual void addproject int n char na int nn char nb 虚函数用于添加项目信息 virtual void output 读取项目信息 class RData 基类 Rdata 声明 5 private int top 项目记录指针 project pro m public 外部接口 RData 构造函数 void clear 清除函数定义 top 1 int addproject int n char na int nn char nb 项目信息 添加 虚函数重新定义 project equal int projectid 按编号查找 for int i 0 i top i if pro i getnumber projectid return return NULL void output 输出函数 void projectdate 操作函数 void sort project b int c 排序函数 RData 析构函数 通过公有派生 project 类和 Rdata 类派生出除构造函数 析构函数和虚 函数之外的全部成员 由于基类的成员是公有和私有类型 因此在派生类中的 成员函数中 从自己基类继承来的成员全部可以访问 而对于建立 project 类 和 Rdata 类对象的外部模块来讲 基类的保护和私有的成员是无法访问的 通 过保护访问类型和公有的继承方式 实现了基类 project 和 Rdata 的数据的可 靠保护 在程序中 项目所需的编号 名称 负责人和等级采用动态分配内存 这些工作都是在基类 派生类的构造函数中完成 它们的清理工作在析构函数 中完成 其余的派生函数负责项目的输入输出 提取 清除等工作 6 4 2 类的实现 project 类的实现 void project output 读出项目信息 cout 编号 输出编号 cout number endl cout 名称 输出名称 cout name endl cout 等级 输出等级 cout leval endl cout 负责人 输出负责人 cout charge endl void project addproject int n char na int nn char nb 项目信息添加 虚函数 tag 0 number n strcpy name na 调用 strcpy 函数 输入名称 leval nn strcpy charge nb 调用 strcpy 函数 输入负责人 Rdata 类的实现 RData RData 析构函数 fstream file project dat ios out for int i 0 i top i if pro i gettag 0 释放内存 file write char file close void RData output 读出项目信息 for int i 0 i top i 输出每一条项目信息 7 pro i output int RData addproject int n char na int nn char nb 项目信息添加 虚函数重 新定义 project p equal n 查找是否存在 if p NULL top pro top addproject n na nn nb 通过指针进行添加项目信息 return 1 return 0 RData RData 构造函数 project s top 1 清空所有项目信息 fstream file project dat ios in 打开一个输入文件 while 1 file read char if file break top pro top s file close void RData sort project b int c 对排序函数的声明 int i j project temp int choose 输入的选项 cout 1 按项目编号排序 n 8 cout 2 按项目名称排序 n cout 请输入要进行的操作 choose if choose 1 冒泡排序法对项目按编号排序 for j 0 jb i getnumber temp b i b i b j b j temp for i 0 i c i b i output if choose 2 冒泡排序法对项目按名称排序 for i 0 i c 1 i for j j 1 j 0 temp b i b i b j b j temp for i 0 i c i 9 cout 项目名称 cout b i getname endl cout 项目编号 cout b i getnumber endl cout 项目等级 cout b i getleval endl cout 项目负责人 cout b i getcharge endl cout endl void RData projectdate 操作函数的定义 char choice 1 char rname 100 RData 函数中的名称 int projectid RData 函数中的编号 int lev RData 函数中的等级 char charg 100 RData 函数中的负责人 project r while choice 0 cout 1 添加 n cout 2 修改 n cout 3 删除 n cout 4 查找 n cout choice switch choice case 1 执行添加操作 system cls cout projectid cout rname cout lev cout charg addproject projectid rname lev charg break case 2 执行修改操作 system cls cout projectid r equal projectid if r NULL cout 该项目不存在 break cout projectid cout rname cout lev cout charg r setnum projectid lev r setname rname charg break case 3 执行删除操作 system cls cout projectid 11 r equal projectid if r NULL cout 该项目不存在 del cout 删除成功 break case 4 执行查找操作 system cls cout projectid r equal projectid if r NULL cout 该项目不存在 output break case 5 cout 退出 谢谢使用 exit 0 default cout 退出 n system cls 在类实现的过程中 对基类 project 类和 RData 类中声明的函数做了定义 定义 output 函数用于输出项目信息 虚函数 addproject 用于项目信息的添加 多次重新定义 析构函数定义释放内存 各自基类中声明的数据成员经过公有 派生以被保护的形式出现 派生函数可自由进行访问 12 4 3 主函数设计 void main 主函数 char choice 选项 RData projectdb while choice 0 cout C 课程设计 n cout 项目管理系统 n cout 1403060325 n cout 请选择操作 n cout 1 项目操作 n cout choice switch choice case 1 system cls projectdb projectdate 调用操作函数 case 0 exit 0 输入错误直接退出 break default cout 退出 n 在程序的主函数部分 给出两个选项直接输入 1 开始程序的调试 输入 0 则被认为是输入错误 直接结束程序 之后出现主界面 选择对应数字进行操 作 每一步操作完成后都会回到主界面等待下一个命令 直至输入数字 5 执行 退出程序 13 5 5 DOSDOS 界面程序运行结果及分析界面程序运行结果及分析 5 1 程序运行结果 1 1 程序运行结果如图 1 所示 图 1 程序运行结果 14 图 2 程序运行结果 图 1 为程序开始运行的初始界面 选择 1 则进行下一步操作 选择 0 退出 图 2 为选择 1 后执行操作函数的界面 选择不同的数字执行不同的操作 2 2 选择 1 添加程序运行的结果如图 3 所示 图 3 程序运行结果 图 3 为选择添加程序之后的输入结果 需要调用 output 函数 添加完成后 回到主界面 3 3 选择 2 修改程序运行的结果如图 4 所示 15 图 4 程序运行结果 图 4 为选择修改程序之后的输入结果 需要先查找之后进行修改 完成修 改后返回主界面 4 4 选择 3 删除程序运行的结果如图 5 所示 图 5 程序运行结果 图 5 为选择删除程序之后的运行结果 输入项目编号后可完成对应的项目 删除 完成后返回主界面 16 5 5 选择 4 查找程序运行的结果如图 6 所示 图 6 程序运行结果 图 6 为选择查找程序之后的运行结果 输入项目编号后可完成对应的 项目查找并将找到的项目输出 完成后返回主界面 5 2 运行结果分析 整个程序中的项目存储采用的是动态内存分配的方式 基类用于数据输入提取 公有派生类 output 用于项目信息的输出 虚函数 addproject 用于项目信息的添加 除了继承基类的基本特征之外 结合问题的 实际需要 增加按编号查找的指针 equal 使基类进一步具体化 实用化 使 项目信息进行各种处理时更方便快捷 程序的访问控制也是根据问题的需要而设计的 基类 project 的数据成员 的存储 维护着项目信息 这些都是在进行查找 删除等一系列操作所必须访 问和使用的 利用保护成员特征 将基类数据成员的访问控制属性设置为保护 型 对于其派生类可以自由调用 而对于类外的其余模块 这些数据无法访问 这样 不影响整个程序对数据的实用又能很好的保护项目的信息 在派生过程中 基类的构造函数和析构函数无法继承下来 因此在派生类 中需要添加构造函数 析构函数来完成派生类的初始化和最后清理工作 派生 类的构造函数通过调用基类的构造函数来对基类数据进行初始化 17 6 6 基于基于 MFCMFC 的图形界面程序开发的图形界面程序开发 MFC 的图形界面程序设计可在上述类设计的基础上进行改造 MFC 的图形界 面程序与 DOS 界面程序的主要不同点是 MFC 图形界面程序与 DOS 界面程序的 输入输出方式不同 DOS 界面程序采用字符交互式实现数据输入输出 主要通 过 cin cout 等 I O 流实现 而 MFC 的图形程序界面采用标准 Windows 窗口和 控件实现输入输出 因此必须在 MFC 类的框架下加入上面所设计的矩阵和方程 组类 并通过图形界面的输入输出改造来完成 6 1 基于 MFC 的图形界面程序设计 1 1 界面设计 界面设计 首先在 VC 中建立 MFC AppWizard exe 工程 名称为 MFC 界面 并在向导 的 Step1 中选择 Dialog based 即建立基于对话框的应用程序 如下图 7 图 8 所示 图 7 建立 MFC AppWizard exe 工程 18 图 8 建立基于对话框的应用程序 将对话框资源中的默认对话框利用工具箱改造成如下界面 如图 9 所示 图 9 项目信息操作程序界面设计 图 9 所示的界面中包含了 16 个 Static Text 控件 5 个 Button 控件 和 16 个 Edit Box 控件 控件的基本信息列表如下表 1 所示 19 表 1 控件基本信息 控件类别控件 ID控件 Caption说明 项目名称 项目编号 项目等级 项目负责人 添加操作使用 需要输入的项目 编号 项目名称 项目编号 项目等级 项目负责人 修改操作使用 需要输入的项目 编号 删除是否成功 删除操作使用 需要输入的项目 编号 项目名称 项目编号 项目等级 Static TextIDC STATIC 项目负责人 查找操作使用 IDC tianjia执行添加操作 IDC xiugai执行修改操作 IDC shanchu 执行删除操作 IDC chazhao执行查找操作 Botton IDC tuichu执行退出操作 IDC TJname名称 IDC TJnumber编号 IDC TJlevel等级 IDC TJcharge负责人 添加使用 IDC XGINnumber输入编号 IDC XGname名称 IDC XGnumber编号 Edit Box IDC XGlevel等级 修改使用 20 IDC XGcharge负责人 IDC SCINnumber输入编号 IDC SCYON是否成功 删除使用 IDC CZINnumber出入编号 IDC CZname名称 IDC CZnumber编号 IDC CZlevel等级 IDC CZcharge负责人 查找使用 2 2 代码设计 代码设计 为了能够将对话框界面上的控件能够与代码联系起来 需要为 16 个 Edit Box 控件建立 Member Variables 按 Ctrl w 键进入 MFC ClassWizard 界面 选 择 Member Variables 选项卡 可显示成员变量设置界面 如图 10 图 11 所示 图 10 成员变量设置界面 21 图 11 成员变量设置界面 通过该界面设置与 16 个 Edit Box 控件对应的成员变量 具体如表 2 所示 表 2 控件基本信息 控件 ID成员变量类型成员变量名称 IDC TJnameCStringm TJname IDC TJnumberIntm TJnumber IDC TJlevelintIDC TJlevel IDC TJchargeCStringm TJcharge IDC XGINnumberIntm XGINnumber IDC XGnameCStringm XGname IDC XGnumbeIntm XGnumbe IDC XGlevelIntm XGlevel IDC XGchargeCStringm XGcharge IDC SCINnumberIntm SCINnumber IDC SCYONCStringm SCYON IDC CZINnumberIntm CZINnumber IDC CZnameCStringm CZname IDC CZnumberIntm CZnumber IDC CZlevelIntm CZlevel 22 IDC CZchargeCStringm CZcharge 下面是编写代码的重要阶段 由于自身水平所限 无法应用类 所以选择 直接通过按钮实施各项操作 下面是各个按钮的编写代码 void CMy2020Dlg Ontianjia 添加函数按钮代码 UpdateData true m TJname m TJname m TJnumber m TJnumber m TJlevel m TJlevel m TJcharge m TJcharge UpdateData false TODO Add your control notification handler code here void CMy2020Dlg Onxiugai 修改函数按钮代码 UpdateData true if m XGINnumber m TJnumber m TJname m XGname m TJlevel m XGlevel m TJcharge m XGcharge else m XGname a m XGlevel 0 m XGcharge b UpdateData false TODO Add your control notification handler code here void CMy2020Dlg Onshanchu 删除按钮的代码 UpdateData true if m SCINnumber m TJnumber 判断是否删除成功 m SCYON Y else m SCYON N 23 UpdateData false TODO Add your control notification handler code here void CMy2020Dlg Onchazhao 查找函数的代码 UpdateData true if m CZINnumber m TJnumber m CZnumber m TJnumber m CZname m TJname m CZlevel m TJlevel m CZcharge m TJcharge else m CZnumber 0 m CZname c m CZlevel 0 m CZcharge d Upd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电工考试题卡图片及答案
- 《电梯结构与原理》期末考试卷2
- 西方诗歌的题库及答案
- 生态讲座题目及答案
- 2025年超声综合试题及答案
- 2025房地产中介合同
- 往年四级真题及答案
- 机械技师题库及答案
- 教师招聘之《小学教师招聘》练习题库及参考答案详解(满分必刷)
- 2025年培训笔试题及答案
- 2025年国际贸易业务员招聘考试试题集及答案
- 2025年建筑涂料采购专项合同
- 2025-2026学年人教版(2024)小学美术二年级上册(全册)教学设计(附目录P144)
- 高考化学一轮复习:硫及其化合物(好题冲关)原卷版
- 2025年城市环境监测评估标准评估方案
- 2025年水面渔业养殖承包合同范本:水产养殖合作协议
- 水厂反恐知识培训内容课件
- 供应链金融操作指南
- 部编版语文六年级上册3《古诗词三首》(同步练习)(含答案)
- 2025-2026学年湘教版(2024)初中地理七年级上册教学计划及进度表
- 2025年重庆八中宏帆中学小升初自主招生数学试题(含答案详解)
评论
0/150
提交评论