




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 湖南第一师范学院信息科学与工程学院课程设计报告所属 专 业:计算机科学与技术课程 名 称:c+课程设计课程设计名称:客户信息管理系统学号: _姓名:李碧秋指 导教 师:杨恒伏伍智平2015 年12 月2 湖南第一师范学院课程设计任务书2015 -2016 学年第 1 学期院(部)信息科学与工程学院专业计算机科学与技术班级14 计科 1 班课程名称:c+课程设计设计题目:客户信息管理系统完成期限:自2015 年12 月28 日至2016 年 1 月8 日共2 周目的及任务1. 掌握面向对象程序设计语言2. c+的基本语法3. 掌握 c+面向对象设计的思想4. 掌握
2、 vc+6.0 与 dev c+ 开发工具的使用5. 运用标准c+规范设计应用程序6. 遵循软件过程的各个环节进行系统分析、设计、 实现、集成、 测试,并相应给出软件规格说明书等文档。进度安排起止日期工作内容2015.12.28 选题,系统背景调查与文献资料收集,实验平台构建2015.12.292015.12.31 系统需求分析、系统概要设计、类的设计2016.1.12016.1.4 系统详细设计与编码实现2016.1.52016.1.8 系统测试与完善、文档整理与课程设计报告撰写主要参考资料1郑莉 , 董渊 , 何江舟著 . c+语言程序设计(第4 版) (清华大学出版社, 2010.7 2
3、(美)梅因等著, 金名等译 . 数据结构与面向对象程序设计(c+版)(第 4版) . 清华大学出版社, 2012.5 3梅险 , 曲蔚 , 孙建业编 . c/c+程序设计案例教程实验与实训指导. 高等教育出版社, 2014.3 指导教师(签字) :年月日教研室主任(签字) :年月日3 目录1. 客户信息系统概述 . 41.1 基本要求 . 41.2 主要功能 . 41.3 设计方法 . 51.4 系统开发的目的 . 52. 总体设计 . 52.1 系统功能模块 . 52.2 系统总体框架 . 62.3 类的分类表 . 72.4 系统关键算法流程图 . 83. 系统运行报告.134. 系统评价
4、. 13 4.1 系统的特点 . 15 4.2 系统的缺点 . 15 4.3 将来可能提出的要求 . 15 5. 系统调试出现的问题 . 15 6. 总结. 16 7致谢.168. 参考文献 . 16 9. 源程序 . 17 4 客户信息管理系统设计报告1. 客户管理系统概述该系统主要处理客户的相关信息。客户信息主要包括:客户编号、客户名称、所在地区、联系方式等内容。地区信息主要包括:编号、名称等内容。完成以下的操作:客户信息、地区信息的录入、修改、删除和查询。1.1 基本要求程序运行结果正确,操作方便,界面美观,逻辑层次清楚,程序结构合理,文档规范清晰。1.2 主要功能要求:1)添加功能:能
5、够对客户和地区信息进行添加。2) 显示功能:能够对客户和地区信息进行输出,如未找到,显示出相应的提示信息,如找到,则显示相应信息。3) 删除功能:能够对客户和地区信息进行删除,如未找到,显示出相应的提示信息。4)查找功能:能够按编号对客户和地区信息进行查找,如未找到,显示出相应的提示信息。5)修改功能:能够按编号对客户和地区信息进行修改,如未找到,显示出相应的提示信息。6)保存功能:能够把客户和地区信息保存为文件。7) 读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户使用。5 1.3 设计方法1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;2)分析系统中的各个实体与
6、他们之间的关系;3)根据问题描述,设计系统的类层次;4)完成类层次中各个类的描述;5)完成类中各个成员函数的定义;6)完成系统的应用模块;7)功能调试。1.4 系统开发的目的1. 熟练掌握 c+ 语言的基本知识和技能;2. 基本掌握面向对象程序设计的基本思路和方法;3. 利用所学的基本知识和技能,解决简单的面向对象程序设计问题;4. 设计一个含有最基本功能的客户信息管理系统。2. 总体设计2.1 系统功能模块根据问题描述和要求,系统要求能够按编号显示、查找、增加、删除和保存客户、地区的信息,确定程序至少应该具备如下功能:“录入客户和地区信息、 ”“查询客户和地区信息” 、 “增加客户和地区信息
7、” 、 “删除客户和地区信息” 、 “修改客户和地区信息”、 “输出客户和地区信息” 、 “数据存盘”基本模块。系统既然具有 “数据存盘” 功能客户数据可以保存到磁盘文件,那么也就意味着可以从磁盘文件读出客户数据,所以系统增加了 “客户数据装入” 模块,以方便用户使用、避免数据重复录入,并定义客户数据文件名:xinxi.dat。考虑到根据编号查找人员信息功能在 “删除客户和地区”、“修改客户和地区”“输出客户和地区信息” 、等模块都使用,所以可以考虑设置为一个模块。如下图:6 2.2 系统总体框架使用面向对象的程序设计思想进行分析,整个系统涉及两大类信息和操作,客户、地区。所以系统涉及四个大类
8、:信息类xinxi (基类) 、客户类 customer(继承类)、地区类 area(继承类)、管理类(友元类)。系统的总体框架就是管理类的定义, 主函数中定义一个管理对象, 循环显示主菜单并根据用户选择调用管理类的成员函数。(1)信息类 xinxi :考虑系统操作的客户信息的数量具有不确定性,所以考虑使用链表保存、 处理客户信息。 因为客户和地区信息都包括了地区编码和地区名称,所以信息类包含私有数据成员:编号no1 、名称 name1 、指针域 next 以及类别 duty,duty 用来区分是客户信息还是地区信息,并且考虑到客户和地区信息的输入输出,信息类需要定义公共成员函数以便供客户类和
9、地区类继承使用。(2)地区类area:地区类是信息类的公共继承类,继承了信息类的数据成员和成员函数,所以地区类不需要再定义其他数据成员和成员函数。(3)客户类customer:客户类是信息类的继承类,客户类包括的信息除了地区编码和地区名称还包括客户本身的编码,名称及联系方式, 所以客户类里需要另外定义数据成员客户编码no2 、客户名称 name1 、联系方式 num. (4)管理类manger:管理类是信息类的友元类,以便访问信息类的私有数据成员和成员函数,在管理类中分别定义添加信息,删除信息,输出信息,查找信息,保存信息,修改信息等函数。添加信息删除信息修改信息输出信息查找信息保存信息管理员
10、查找 find 7 2.3 类的层次图类名信息类(基类) xinxi 数据成员no1,name1,duty,next 成员函数input,output 类名地区类(继承类 )area 数据成员no1,name1,duty,next 成员函数input,output 类名客户类(继承类) customer 数据成员no1,name1,duty,next,no2,name2 成员函数input,output 类名管理类(友元类) manger 数据成员xinxi *pl 成员函数clear() manger() delete() save() print() search() modify() l
11、oad() 1.xinxi 类的 no1-地区编号, name1- 地区名称, duty- 信息类别, next- 指向下一个客户和地区的信息;xinxi类的 input(), output() 定义为纯虚函数分别表示输入和输出信息 , 由于定义纯虚函数,所以xinxi 是抽象类,具体输入,输出信息由派生类完成。2. 各个派生的类,包含本类对象特有的数据,继承基类共同的数据。3.友元类定义各个函数:8 void add(); /添加void delete(); /删除void modify(); /修改void search();/查找void print(); /输出void save();
12、 /存盘void load(); /装入void clear(); 其中:(1)clear()用于清除人员链表所有结点。(2)add(),delete(),modify(),print(),search() ,save(),load()分别表示系统各个功能模块 : 增加信息,删除信息,修改修改,输出信息,查询信息,数据存盘,数据装入。2.4 系统关键算法流程图(1)主函数流程开始创建管理对象显示菜单接受输入根据输入进行操作输出结束9 (2)manger:add() (3) manger:delete() 开始选择输入类别输入数据,创立新结点结点加入链表结束开始选择删除类别查找要删除结点链表删除
13、结点提示未找到结束结点存在10 (4) manger:modify (5) manger:save() 开始选择修改类别查找结点修改结点提示未找到结束结点存在开始打开数据文件遍历链表保存数据关闭文件打开数据文件保存数据文件关闭文件结束11 (6)manger:print() (7)manger:search() 开始选择输出类型查找结点结点存在输出信息提示未找到结束开始选择查找类别查找结点结点存在输出信息提示未找到结束12 (8) manger:load() 开始打开文件关闭文件打开文件读取每一条记录文件未结束链表加入结点读取下面一行记录结束根据人员类型创立结点读取基础数据关闭文件13 3.
14、系统运行报告(1)管理界面(2)输入信息(3)输出信息14 (4)删除信息(5)修改信息(6)查找信息(7)信息存盘15 4系统评价本部分具体从三方面阐述:优点、缺点以及将来可能提出的要求。4.1 系统的特点1. 流程符合客户管理系统的基本要求。2. 操作简单、方便。3. 系统扩充容易。由于资料有限,有很多地方还需要更好的完善。4.2 系统的缺点1.界面不太美观、友好,输出和查找时数据和对应的信息没有对齐显示,查看时不太方便。2.同时输入客户信息和地区信息时,不能同时输出查看,只能查看首先录入的信息;同时输入多个地区信息时不能全部保存,只能显示第一次输入的信息;当输入客户信息而没输入地区信息时
15、,查看地区信息时并不会提示没有信息,而是将客户信息输出。总之,只能实现客户信息和地区信息的分别输入和显示。3. 文件保存功能没有实现 , 打开文件时没有任何记录。4.3 将来可能提出的要求1.要求界面更加完美,阅读起来方便易懂。2.要求客户信息和地区信息可以结合在一起,实现同时输入、同时保存、同时输出。5. 系统调试出现的问题1.编译程序时没有显示任何错误 ,但是执行时系统会出现程序停止运行的情况,我认为是系统没有为我在删除函数里定义的指针q开辟空间,如下:xinxi q ;q=p;delete q ;p=p-next; 16 然后我换了另外一种方法,如下:p2-next=p1-next; /
16、连接delete p1; cout 正确删除 ! n; 2.程序编译时会出现没有主函数的错误 ,原因是括号没有正确匹配。3.程序运行时出现无限循环,是因为输出函数没有终止语句break. 6. 总结在这次课程设计中我终收获颇多, 让我对编程有了新的认识, 平时很少上机,总是在看程序,满足 于看懂 程 序,因 此离自己会编程序 还有一段差距,这次课程设计虽然老师给了参考模板,但是这只是一种思路, 需要我们根据自己的问题完善程序, 这使得我不得不自己写, 看了几遍程序, 基本理解了编程的方法,虽然一开始出现了很多错误,但是经过多次分析与修改, 最后完成了程序要求。其次,在编程之前一定要思考, 给自
17、己规划好步骤, 我在第一周编程时没有认真阅读问题要求, 以为只要对客户信息进行操作, 在第二周我已经编好程序准备写设计报告时才发现自己看错了, 所以星期二下午和星期三我又在之前的基础上重新编了这个程序, 导致设计报告写的有些仓促,所以,我们在编程之前一定要认真阅读题目,分析设计要求,理清思路,这样后面编程时才能顺利进行。所以这次的课程设计让我用了一个相对比较集中的时间去练习我的编程,特别是自己的动手能力, 加深了对类和对象的理解, 提高了自己分析问题、 运用所学知识解决问题的能力,并培养了基本的设计技能。7致谢在这次课程设计中, 老师和同学们给了我很大的帮助,在此表示衷心的感谢和诚挚的谢意。
18、8. 参考文献1. 1谭浩强 . c+ 面向对象程序设计 (第2版第二版 )m. 清华大学出版社,2014. 17 2. 1彭召意,朱艳辉,周玉. c+ 面向对象程序设计课程的实践教学研究j. 计算机教育 , 2015, (5): 151-1549. 源程序/ #include #include class xinxi protected: int no1; /编号char name120; /名称int duty; xinxi *next; /指针域public: xinxi () next=0; /指针域设置为空 virtual xinxi() virtual void input()=0
19、; /从键盘输入数据virtual void input(ifstream& ifs)=0; /从文件输入信息virtual void output()=0; /向屏幕输出信息virtual void output(ofstream& ofs)=0; /向文件输出信息friend class manger; ; class customer: public xinxi /客户继承类 . ; class area: public xinxi /地区继承类 . ; class manger /管理员 private: 18 xinxi *pl; void clear(); int
20、manger:find(int id,xinxi *p1,xinxi *p2); public: manger(); /构造manger(); /析构void add(); /添加void delete(); /删除void modify(); /修改void search(); /查找void print(); /输出void save(); /存盘void load(); /装入; manger:manger() /构造(创建一个头结点的链表) customer *p=new customer; pl=p; coutnext; delete p; p=pl; void manger:add
21、() coutnext)p=p-next; int ch; coutch; 19 /创建新结点 ,录入数据 ,连接到链表area *ar; customer *cu; switch(ch) case 1: ar=new area; ar-input(); p-next=ar; break; case 2: cu=new customer; cu-input();/* p-next=cu; break; default: return; /* void manger:clear() xinxi *p=pl-next; while(p) pl-next=p-next; delete p; p=pl
22、-next; /* int manger:find(int id,xinxi *p1,xinxi *p2) *p1=pl-next; *p2=pl; while(*p1) if(*p1)-no1=id) break; /找到20 else *p2=*p1; /继续查找*p1=(*p1)-next; return *p1?1:0; void manger:delete() coutnext; int ch; coutch; coutno; switch(ch) case 0: if(!find(no,&p1,&p2) coutnext=p1-next; /连接delete p1;
23、 cout正确删除 !n; break; case 1: if(!find(no,&p1,&p2) coutnext=p1-next; /连接delete p1; cout正确删除 !n; break; default: return; void manger:modify() coutn* 修改信息 *n; int no; int ch; xinxi *p1,*p2; xinxi *p=pl; coutch; coutno; while(p-next) switch(ch) case 0: if(!find(no,&p1,&p2) coutoutput();
24、/输出原来地区信息p1-input(); /输入新的地区信息cout地区信息修改完成! n; break; case 1: if(!find(no,&p1,&p2) coutoutput(); /输出原来客户信息p1-input(); /输入新的客户信息22 coutnext; void manger:print() coutnext; coutch; coutno; switch(ch) case 0: if(!find(no,&p1,&p2) cout对不起,您需要的地区信息没有找到!n; else coutn* 地区信息表*n; coutoutput(); p=p-next; cout正确输出 !n; break; 23 case 1: if(!find(no,&p1,&p2) cout对不起,您需要的客户信息没有找到!n; else coutn* 地区信息表*n; coutoutput(); p=p-next; coutnext; while(p) p-output(f); p=p-next; f.close(); /关闭文件coutbufbufduty; if(f) switch(duty) case 0:p2=ne
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 茶艺师考试的自信心塑造试题及答案
- 二零二五年度家禽养殖保险及采购保障合同
- 软件专业资格考试结合实际试题与答案
- 2025年度智能物流仓储合同补充协议书模板
- 常见土木工程师试题及答案解析
- 二零二五年度儿童时尚模特拍摄合同模板
- 二零二五年度代驾服务节假日加班费协议
- 2025计算机技术与软件专业初级考试的技术挑战试题及答案
- 实验动物模拟练习题(含参考答案)
- 电工练习题库
- 湖北省武汉市江岸区2024-2025学年上学期元调九年级物理试题(含答案)
- 山东省淄博市、滨州市2025届高三一模语文试题及答案解析
- 2024山西三支一扶真题及答案
- 2025年阜阳职业技术学院单招职业技能考试题库有答案
- 手术十大安全管理目标
- 2025年1月时事政治考试100题及参考答案
- 实施“教联体”赋能共同体 打造校家社协同育人新模式
- 六年级下册快乐读书吧外国名著阅读练习《鲁滨逊漂流》《汤姆索亚历险记》《骑鹅旅行记》答案
- 佛山2025年广东佛山市中医院三水医院招聘工作人员73人笔试历年参考题库附带答案详解
- 2025年哈尔滨电力职业技术学院单招职业技能测试题库完整版
- 带货主播签约合同范本
评论
0/150
提交评论