




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖南第一师范学院信息科学与工程学院课程设计报告所属专业:计算机科学与技术课程名称:C++课程设计课程设计名称:客户信息管理系统学号:_名:指导教师:杨恒伏伍智平2015年12月
湖南第一师范学院课程设计任务书2015-2016学年第1学期院(部)信息科学与工程学院专业计算机科学与技术班级14计科1班课程名称:C++课程设计设计题目:客户信息管理系统完成期限:自2015年12月28日至2016年L月一L日共周目的及任务掌握面向对象程序设计语言C++的基本语法掌握C++面向对象设计的思想掌握VC++6.0与DEVC++开发工具的使用运用标准C++规范设计应用程序遵循软件过程的各个环节进行系统分析、设计、实现、集成、测试,并相应给出软件规格说明书等文档。进度安排起止日期工作内容2015.12.28选题,系统背景调查与文献资料收集,实验平台构建2015.12.29—2015.12.31系统需求分析、系统概要设计、类的设计2016.1.1—2016,1.4系统详细设计与编码实现2016.1.5—2016,1.8系统测试与完善、文档整理与课程设计报告撰写主要参考资料郑莉,董渊,何江舟著.C++语言程序设计(第4版)(清华大学出版社,2010.7(美)梅因等著,金名等译.数据结构与面向对象程序设计(C++版)(第4版).清华大学出版社,2012.5梅险,曲蔚,孙建业编.C/C++程序设计案例教程实验与实训指导.高等教育出版社,2014.3指导教师(签字):年月日教研室主任(签字):年月日TOC\o"1-5"\h\z\o"CurrentDocument"客户信息系统概述4\o"CurrentDocument"1.1基本要求4\o"CurrentDocument"1.2主要功能4\o"CurrentDocument"1.3设计方法5\o"CurrentDocument"1.4系统开发的目的5\o"CurrentDocument"总体设计5\o"CurrentDocument"2.1系统功能模块5\o"CurrentDocument"2.2系统总体框架62.3类的分类表7\o"CurrentDocument"2.4系统关键算法流程图8\o"CurrentDocument"系统运行报告13\o"CurrentDocument"系统评价13\o"CurrentDocument"4.1系统的特点15\o"CurrentDocument"4.2系统的缺点15\o"CurrentDocument"4.3将来可能提出的要求15\o"CurrentDocument"系统调试出现的问题15\o"CurrentDocument"总结16\o"CurrentDocument"致谢.16\o"CurrentDocument"参考文献16\o"CurrentDocument"源程序17客户信息管理系统设计报告客户管理系统概述该系统主要处理客户的相关信息。客户信息主要包括:客户编号、客户名称、所在地区、联系方式等内容。地区信息主要包括:编号、名称等内容。完成以下的操作:客户信息、地区信息的录入、修改、删除和查询。1.1基本要求程序运行结果正确,操作方便,界面美观,逻辑层次清楚,程序结构合理,文档规范清晰。1.2主要功能要求:1)添加功能:能够对客户和地区信息进行添加。2)显示功能:能够对客户和地区信息进行输出,如未找到,显示出相应的提示信息,如找到,则显示相应信息。3)删除功能:能够对客户和地区信息进行删除,如未找到,显示出相应的提示信息。4)查找功能:能够按编号对客户和地区信息进行查找,如未找到,显示出相应的提示信息。5)修改功能:能够按编号对客户和地区信息进行修改,如未找到,显示出相应的提示信息。6)保存功能:能够把客户和地区信息保存为文件。7)读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户使用。1.3设计方法1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;2)分析系统中的各个实体与他们之间的关系;3)根据问题描述,设计系统的类层次;4)完成类层次中各个类的描述;5)完成类中各个成员函数的定义;6)完成系统的应用模块;7)功能调试。1.4系统开发的目的熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的基本思路和方法;利用所学的基本知识和技能,解决简单的面向对象程序设计问题;设计一个含有最基本功能的客户信息管理系统。总体设计2.1系统功能模块根据问题描述和要求,系统要求能够按编号显示、查找、增加、删除和保存客户、地区的信息,确定程序至少应该具备如下功能:“录入客户和地区信息、”“查询客户和地区信息”、“增加客户和地区信息”、“删除客户和地区信息”、“修改客户和地区信息”、“输出客户和地区信息”、“数据存盘”基本模块。系统既然具有“数据存盘”功能一一客户数据可以保存到磁盘文件,那么也就意味着可以从磁盘文件读出客户数据,所以系统增加了“客户数据装入”模块,以方便用户使用、避免数据重复录入,并定义客户数据文件名:Xinxi.dat。考虑到根据编号查找人员信息功能在“删除客户和地区”、“修改客户和地区”“输出客户和地区信息”、等模块都使用,所以可以考虑设置为一个模块。如下图:2.2系统总体框架使用面向对象的程序设计思想进行分析,整个系统涉及两大类信息和操作,客户、地区。所以系统涉及四个大类:信息类Xinxi(基类)、客户类customer(继承类)、地区类area(继承类)、管理类(友元类)。系统的总体框架就是管理类的定义,主函数中定义一个管理对象,循环显示主菜单并根据用户选择调用管理类的成员函数。(1)信息类Xinxi:考虑系统操作的客户信息的数量具有不确定性,所以考虑使用链表保存、处理客户信息。因为客户和地区信息都包括了地区编码和地区名称,所以信息类包含私有数据成员:编号No1、名称Name1、指针域next以及类别Duty,Duty用来区分是客户信息还是地区信息,并且考虑到客户和地区信息的输入输出,信息类需要定义公共成员函数以便供客户类和地区类继承使用。(2)地区类area:地区类是信息类的公共继承类,继承了信息类的数据成员和成员函数,所以地区类不需要再定义其他数据成员和成员函数。(3)客户类customer:客户类是信息类的继承类,客户类包括的信息除了地区编码和地区名称还包括客户本身的编码,名称及联系方式,所以客户类里需要另外定义数据成员客户编码No2、客户名称Name1、联系方式num.(4)管理类manger:管理类是信息类的友元类,以便访问信息类的私有数据成员和成员函数,在管理类中分别定义添加信息,删除信息,输出信息,查找信息,保存信息,修改信息等函数。
2.3类的层次图类名信息类(基类)Xinxi数据成员Nol,Namel,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()Load()Xinxi类的No1-地区编号,Namel-地区名称,Duty-信息类别,next-指向下一个客户和地区的信息;Xinxi类的Input(),Output()定义为纯虚函数分别表示输入和输出信息,由于定义纯虚函数,所以Xinxi是抽象类,具体输入,输出信息由派生类完成。各个派生的类,包含本类对象特有的数据,继承基类共同的数据。友元类定义各个函数:
voidAdd();〃添加voidDelete();〃删除voidModify();〃修改voidSearch();〃查找voidPrint();〃输出voidSave();//存盘voidLoad();〃装入voidClear();其中:Clear()用于清除人员链表所有结点。Add(),Delete(),Modify(),Print(),Search(),Save(),Load()分别表示系统各个功能模块:增加信息,删除信息,修改修改,输出信息,查询信息,数据存盘,数据装入。2.4系统关键算法流程图(1)主函数流程(2)manger::Add()(3)manger::Delete()(4)manger::Modify(5)manger::Save()开始(8)manger::Load()开始文件未结束读取基础数据打开文件关闭文件打开文件读取每一条记录链表加入结点读取下面一行记录关闭文件根据人员类型创立结点结束3.系统运行报告(1)管理界面C:\Users\libiqiu\Desktop\Debu9皆极完美版1.exenf4L-J.选-〕息息息息盘.A..请土豆一一妄=堂一6.-=『=广士.阮度找出据雷「_一一------1234567S(2)输入信息据园飙一一一心息息息息盒A请.A於;g;g;g;g尸行家■目1-2-3-4-5-6-7-8-一客尸信忌]门,苴篓别u-地区信息,2^-:22林:33.(3)输出信息蹭备A地区信息5信息」***地区信息表**地区编号地区名称22335正确顾国匕(4)删除信息(5)修改信息(6)查找信息(7)信息存盘系统评价本部分具体从三方面阐述:优点、缺点以及将来可能提出的要求。4.1系统的特点流程符合客户管理系统的基本要求。操作简单、方便。系统扩充容易。由于资料有限,有很多地方还需要更好的完善。4.2系统的缺点界面不太美观、友好,输出和查找时数据和对应的信息没有对齐显示,查看时不太方便。同时输入客户信息和地区信息时,不能同时输出查看,只能查看首先录入的信息;同时输入多个地区信息时不能全部保存,只能显示第一次输入的信息;当输入客户信息而没输入地区信息时,查看地区信息时并不会提示没有信息,而是将客户信息输出。总之,只能实现客户信息和地区信息的分别输入和显示。文件保存功能没有实现,打开文件时没有任何记录。4.3将来可能提出的要求要求界面更加完美,阅读起来方便易懂。要求客户信息和地区信息可以结合在一起,实现同时输入、同时保存、同时输出。系统调试出现的问题编译程序时没有显示任何错误、,但是执行时系统会出现程序停止运行的情况,我认为是系统没有为我在删除函数里定义的指针q开辟空间,如下:Xinxiq;q=p;deleteq;p=p->next;然后我换了另外一种方法,如下:p2->next=p1->next;〃连接deletepl;cout<<"正确删除!\n”;程序编译时会出现没有主函数的错误、,原因是括号没有正确匹配。程序运行时出现无限循环,是因为输出函数没有终止语句break.总结在这次课程设计中我终收获颇多,让我对编程有了新的认识,平时很少上机,总是在看程序,满足于看懂程序,因此离自己会编程序还有一段差距,这次课程设计虽然老师给了参考模板,但是这只是一种思路,需要我们根据自己的问题完善程序,这使得我不得不自己写,看了几遍程序,基本理解了编程的方法,虽然一开始出现了很多错误,但是经过多次分析与修改,最后完成了程序要求。其次,在编程之前一定要思考,给自己规划好步骤,我在第一周编程时没有认真阅读问题要求,以为只要对客户信息进行操作,在第二周我已经编好程序准备写设计报告时才发现自己看错了,所以星期二下午和星期三我又在之前的基础上重新编了这个程序,导致设计报告写的有些仓促,所以,我们在编程之前一定要认真阅读题目,分析设计要求,理清思路,这样后面编程时才能顺利进行。所以这次的课程设计让我用了一个相对比较集中的时间去练习我的编程,特别是自己的动手能力,加深了对类和对象的理解,提高了自己分析问题、运用所学知识解决问题的能力,并培养了基本的设计技能。7.致谢在这次课程设计中,老师和同学们给了我很大的帮助,在此表示衷心的感谢和诚挚的谢意。参考文献[1]谭浩强.C++面向对象程序设计(第2版第二版)[M].清华大学出版社,2014.
[1]彭召意,朱艳辉,周玉.C++面向对象程序设计课程的实践教学研究[J].计算机教育,2015,(5):151-154源程序//////////////////////////////////////////////////////////////////////////#include<fstream.h>#include<string.h>classXinxi{protected:intNo1;〃编号charName1[20];〃名称intDuty;Xinxi*next;//指针域public:Xinxi(){next=0;〃指针域设置为空}virtual~Xinxi(){〃从键盘输入数据〃从文件输入信息〃从键盘输入数据〃从文件输入信息〃向屏幕输出信息//向文件输出信息virtualvoidInput()=0;virtualvoidInput(ifstream&ifs)=0;virtualvoidOutput()=0;virtualvoidOutput(ofstream&ofs)=0;friendclassmanger;};classcustomer:publicXinxi〃客户继承类{};classarea:publicXinxi〃地区继承类{};〃管理员classmanger{private:
〃管理员Xinxi*PL;voidClear();intmanger::Find(intID,Xinxi**p1,Xinxi**p2);public:manger();public:manger();~manger();voidAdd();voidDelete();voidModify();voidSearch();voidPrint();voidSave();voidLoad();};manger::manger(){customer*p=newcustomer;PL=p;cout<<"自动装入数据...\n”;//构造〃析构〃添加〃删除//修改//查找//输出//存盘//装入〃构造(创建一个头结点的链表)Load();}〃析构函数(仅保留一个头结点)manger::~manger(){〃析构函数(仅保留一个头结点)Xinxi*p=PL;while(p){PL=p->next;deletep;p=PL;}}voidmanger::Add(){cout<<"\n**增加信息**\n";Xinxi*p=PL;while(p->next)p=p->next;intch;cout<<"选择信息类别[1-地区信息,2-客户信息]:";cin>>ch;
〃创建新结点,录入数据,连接到链表area*ar;customer*cu;switch(ch){case1:{ar=newarea;ar->Input();p->next=ar;}break;case2:{cu=newcustomer;cu->Input();//******************p->next=cu;}break;default:return;}//*}““““““““““““““““““““““小小小小小小小小小小小小小小小小小小小小小小voidmanger::Clear(){}//*Xinxi*p=PL->next;while(p){PL->next=p->next;deletep;}//*p=PL->next;““““““““““““““““““““““““““““““““小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小intmanger::Find(intID,Xinxi**p1,Xinxi**p2){}//**p1=PL->next;*p2=PL;while(*p1){if((*p1)->No1==ID)break;〃找到else{*p2=*p1;〃继续查找*p1=(*p1)->next;}}return*p1?1:0;}voidmanger::Delete(){cout<<"\n**删除信息**\n";intNo;Xinxi*p1,*p2;Xinxi*p=PL->next;intch;cout<<"输入删除的类型[0-地区信息,1-客户信息]:";cin>>ch;cout<<"编号:";cin>>No;switch(ch){case0:if(!Find(No,&p1,&p2)){cout<<"对不起,您需要的地区信息没有找到!\n";}else{p2->next=p1->next;〃连接deletep1;cout<<"正确删除!\n";}break;case1:if(!Find(No,&p1,&p2)){cout<<"对不起,您需要的客户信息没有找到!\n";}else
p2->next=p1->next;〃连接deletepl;cout<<"正确删除!\n";}break;default:return;}}voidmanger::Modify(){cout<<"\n**修改信息**\n";intNo;intch;Xinxi*p1,*p2;Xinxi*p=PL;cout<<"输入修改的类型[0-地区信息,1-客户信息]:";cin>>ch;cout<<"编号:";cin>>No;while(p->next){switch(ch){case0:if(!Find(No,&p1,&p2))cout<<"对不起,您需要的地区信息没有找到!\n";else{p1->Output();〃输出原来地区信息p1->Input();〃输入新的地区信息cout<<"地区信息修改完成!\n";}break;case1:if(!Find(No,&p1,&p2))cout<<"对不起,您需要的客户信息没有找到!\n";else{〃输出原来客户信息〃输入新的客户信息p1->Output();p1->Input();cout<<"客户信息修改完成!\n";}break;default:return;〃输出原来客户信息〃输入新的客户信息p=p->next;}}voidmanger::Print(){cout<<"\n**输出信息**\n";intNo;intch;Xinxi*p1,*p2;Xinxi*p=PL->next;cout<<"输入输出的类型[0-地区信息,1-客户信息]:";cin>>ch;cout<<"编号:";cin>>No;switch(ch){case0:if(!Find(No,&p1,&p2)){cout<<"对不起,您需要的地区信息没有找到!\n";}else{cout<<"\n**地区信息表**\n";cout<<"地区编号地区名称\n";p->Output();p=p->next;cout<<"正确输出!\n";}break;case1:if(!Find(No,&p1,&p2)){cout<<"对不起,您需要的客户信息没有找到!\n";}else{cout<<"\n**地区信息表**\n";cout<<"客户编号客户名称联系方式地区编号地区名称\n";p->Output();p=p->next;cout<<"正确输出!\n";}break;default:return;}}voidmanger::Save(){ofstreamf("Xinxi.dat",ios::out);//打开文件〃遍历输出文件Xinxi*p=PL->next;while(p){p->Output(f);p=p->next;}f.close();〃关闭文件cout<<"信息已经保存在Xinxi.dat.\n”;}voidmanger::Load(){charbuf[81];〃临时空间intDuty;Xinxi*p2;///新建结点的指针longt;〃读写位置〃清除现有结点Clear();ifstreamf("Xinxi.dat",ios::in);〃打开文件Xinxi*p=PL;〃建立结点,读数据while(1){t=f.tellg();f>>buf>>buf>>Duty;if(f){switch(Duty){case0:p2=newarea;break;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 概率论与数理统计(第4版)盛骤 11.4 方差分析学习资料
- 交通事故现场应急处置规范
- 防溺水安全主题中班
- 消防安全幼儿教育
- 高效办公流程优化方案
- 智能电动汽车电池维护与充电指南
- 护坡工程项目劳务分包合同
- Lesson+4+Giving+advice+Unit+4+My+friends+课件++++2024-2025学年冀教版(2024)初中英语七年级下册
- 电信行业网络安全防护体系建设与运维方案
- 腰带品牌策划公司创业计划
- 危险作业监护人资格考试
- 合同协议公司员工聘用合同7篇
- 2025年XX县社会工作部工作计划
- 2025年安徽卫生健康职业学院单招职业适应性测试题库含答案
- 2025年安徽电子信息职业技术学院单招职业倾向性考试题库新版
- 2025年常州信息职业技术学院单招职业技能考试题库审定版
- 2025上海崇明现代农业园区开发限公司招聘39人易考易错模拟试题(共500题)试卷后附参考答案
- Unit 5 Here and Now Section A1a~1d教学设计 -2024-2025学年人教版(2024)七年级英语下册
- 老年肺炎临床诊断与治疗专家共识(2024年版)解读
- 4.1 人要有自信 (课件)2024-2025学年七年级道德与法治下册(统编版2024)
- 护理随访案例分享课件
评论
0/150
提交评论