收藏 分销(赏)

客户信息标准管理系统.doc

上传人:人****来 文档编号:3034397 上传时间:2024-06-13 格式:DOC 页数:34 大小:175.54KB 下载积分:12 金币
下载 相关 举报
客户信息标准管理系统.doc_第1页
第1页 / 共34页
客户信息标准管理系统.doc_第2页
第2页 / 共34页


点击查看更多>>
资源描述
湖南第一师范学院信息科学与工程学院 课程设计报告 所 属 专 业: 计算机科学与技术 课 程 名 称: C++课程设计 课程设计名称: 客户信息管理系统 学 号: _________________ 姓 名: 李碧秋 指 导 教 师: 杨恒伏 伍智平 12 月 湖南第一师范学院课程设计任务书 - 年第 1学期 院(部) 信息科学与工程学院 专业 计算机科学与技术 班级 14计科1班 课程名称: C++课程设计 设计题目: 客户信息管理系统 完毕期限:自 年 12 月 28 日至 年 1 月 8 日共 2 周 目及任务 1. 掌握面向对象程序设计语言 2. C++基本语法 3. 掌握C++面向对象设计思想 4. 掌握VC++6.0与DEV C++开发工具使用 5. 运用原则C++规范设计应用程序 6. 遵循软件过程各个环节进行系统分析、设计、实现、集成、测试,并相应给出软件规格阐明书等文档。 进度安排 起止日期 工作内容 .12.28 选题,系统背景调查与文献资料收集,实验平台构建 .12.29—.12.31 系统需求分析、系统概要设计、类设计 .1.1—.1.4 系统详细设计与编码实现 .1.5—.1.8 系统测试与完善、文档整顿与课程设计报告撰写 重要参照资料 [1]郑莉,董渊,何江舟著. C++语言程序设计(第4版)(清华大学出版社,.7 [2](美)梅因等著,金名等译. 数据构造与面向对象程序设计(C++版)(第4版). 清华大学出版社, .5 [3]梅险,曲蔚,孙建业编. C/C++程序设计案例教程实验与实训指引. 高等教诲出版社,.3 指引教师(签字): 年 月 日 教研室主任(签字): 年 月 日 目 录 1. 客户信息系统概述 4 1.1 基本规定 4 1.2 重要功能 4 1.3 设计办法 5 1.4 系统开发目 5 2. 总体设计 5 2.1 系统功能模块 5 2.2 系统总体框架 6 2.3 类分类表 7 2.4 系统核心算法流程图 8 3. 系统运营报告 ...................................................................................................13 4. 系统评价 15 4.1 系统特点 15 4.2 系统缺陷 15 4.3 将来也许提出规定 15 5. 系统调试浮现问题 15 6. 总结 16 7.道谢............................................................................................................................................16 8. 参照文献 16 9. 源程序 17 客户信息管理系统设计报告 1. 客户管理系统概述 该系统重要解决客户有关信息。 客户信息重要涉及:客户编号、客户名称、所在地区、联系方式等内容。 地区信息重要涉及:编号、名称等内容。 完毕如下操作:客户信息、地区信息录入、修改、删除和查询。 1.1 基本规定 程序运营成果对的,操作以便,界面美观,逻辑层次清晰,程序构造合理,文档规范清晰。 1.2 重要功能 规定: 1)添加功能:可以对客户和地区信息进行添加。 2) 显示功能:可以对客户和地区信息进行输出,如未找到,显示出相应提 示信息,如找到,则显示相应信息。 3) 删除功能:可以对客户和地区信息进行删除,如未找到,显示出相应提示信息。 4)查找功能:可以按编号对客户和地区信息进行查找,如未找到,显示出 相应提示信息。 5)修改功能:可以按编号对客户和地区信息进行修改,如未找到,显示出 相应提示信息。 6)保存功能:可以把客户和地区信息保存为文献。 7)读取功能:可将保存在文献中人员信息读入到当前系统中,供顾客使用。 1.3 设计办法 1)应用系统分析,建立该系统功能模块框图以及界面组织和设计; 2)分析系统中各个实体与她们之间关系; 3)依照问题描述,设计系统类层次; 4)完毕类层次中各个类描述; 5)完毕类中各个成员函数定义; 6)完毕系统应用模块; 7)功能调试。 1.4 系统开发目 1. 纯熟掌握C++语言基本知识和技能; 2. 基本掌握面向对象程序设计基本思路和办法; 3. 运用所学基本知识和技能,解决简朴面向对象程序设计问题; 4. 设计一种具有最基本功能客户信息管理系统。 2. 总体设计 2.1 系统功能模块 依照问题描述和规定,系统规定可以按编号显示、查找、增长、删除和保存客户、地区信息,拟定程序至少应当具备如下功能:“录入客户和地区信息、”“查询客户和地区信息”、“增长客户和地区信息”、“删除客户和地区信息”、“修改客户和地区信息”、“输出客户和地区信息”、“数据存盘”基本模块。 系统既然具备“数据存盘”功能——客户数据可以保存到磁盘文献,那么也就意味着可以从磁盘文献读出客户数据,因此系统增长了“客户数据装入”模块,以以便顾客使用、避免数据重复录入,并定义客户数据文献名:Xinxi.dat。 考虑到依照编号查找人员信息功能在“删除客户和地区”、“修改客户和地区”“输出客户和地区信息”、等模块都使用,因此可以考虑设立为一种模块。 如下图: 删除信息 修改信息 查找Find 输出信息 管理员 添加信息 查找信息 保存信息 2.2 系统总体框架 使用面向对象程序设计思想进行分析,整个系统涉及两大类信息和操作,客户、地区。因此系统涉及四个大类:信息类Xinxi(基类)、客户类customer(继承类)、地区类area(继承类)、管理类(友元类)。系统总体框架就是管理类定义,主函数中定义一种管理对象,循环显示主菜单并依照顾客选取调用管理类成员函数。 (1)信息类Xinxi:考虑系统操作客户信息数量具备不拟定性,因此考虑使用链表保存、解决客户信息。由于客户和地区信息都涉及了地区编码和地区名称,因此信息类包括私有数据成员:编号No1、名称Name1、指针域next以及类别Duty,Duty用来区别是客户信息还是地区信息,并且考虑到客户和地区信息输入输出,信息类需要定义公共成员函数以便供客户类和地区类继承使用。 (2)地区类area:地区类是信息类公共继承类,继承了信息类数据成员和成员函数,因此地区类不需要再定义其她数据成员和成员函数。 (3)客户类customer:客户类是信息类继承类,客户类涉及信息除了地区编码和地区名称还涉及客户自身编码,名称及联系方式,因此客户类里需要此外定义数据成员客户编码No2、客户名称Name1、联系方式num. (4)管理类manger:管理类是信息类友元类,以便访问信息类私有数据成员和成员函数,在管理类中分别定义添加信息,删除信息,输出信息,查找信息,保存信息,修改信息等函数。 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() Load() 1.Xinxi 类No1-地区编号,Name1-地区名称,Duty-信息类别,next-指向下一种客户和地区信息;Xinxi类Input(),Output()定义为纯虚函数分别表达输入和输出信息,由于定义纯虚函数,因此Xinxi是抽象类,详细输入,输出信息由派生类完毕。 2.各个派生类,包括本类对象特有数据,继承基类共同数据。 3.友元类定义各个函数: void Add(); //添加 void Delete(); //删除 void Modify(); //修改 void Search(); //查找 void Print(); //输出 void Save(); //存盘 void Load(); //装入 void Clear(); 其中: (1)Clear()用于清除人员链表所有结点。 (2)Add(),Delete(),Modify(),Print(),Search(),Save(),Load()分别表达系统各个功能模块:增长信息,删除信息,修改修改,输出信息,查询信息,数据存盘,数据装入。 2.4 系统核心算法流程图 开始 (1)主函数流程 创立管理对象 显示菜单 接受输入 依照输入进行操作 输出 结束 (2)manger::Add() 开始 选取输入类别 输入数据,创立新结点 结点加入链表 结束 开始 (3) manger::Delete() 选取删除类别 查找要删除结点 结点存在 提示未找到 链表删除结点 结束 开始 (4) manger::Modify 选取修改类别 查找结点 结点存在 修改结点 提示未找到 结束 (5) manger::Save() 开始 打开数据文献 遍历链表保存数据 关闭文献 打开数据文献 保存数据文献 关闭文献 结束 开始 选取输出类型 (6) manger::Print() 查找结点 结点存在 提示未找到 输出信息 结束 开始 (7) manger::Search() 选取查找类别 查找结点 结点存在 提示未找到 输出信息 结束 开始 (8) manger::Load() 打开文献 读取基本数据 关闭文献 打开文献 读取每一条记录 文献未结束 依照人员类型创立结点 链表加入结点 关闭文献 读取下面一行记录 关闭文献 结束 3.系统运营报告 (1)管理界面 (2)输入信息 (3)输出信息 (4)删除信息 (5)修改信息 (6)查找信息 (7)信息存盘 4.系统评价 本某些详细从三方面阐述:长处、缺陷以及将来也许提出规定。 4.1 系统特点 1.流程符合客户管理系统基本规定。 2.操作简朴、以便。 3.系统扩充容易。由于资料有限,有诸多地方还需要更好完善。 4.2 系统缺陷 1.界面不太美观、和谐,输出和查找时数据和相应信息没有对齐显示,查看时不太以便。 2.同步输入客户信息和地区信息时,不能同步输出查看,只能查看一方面录 入信息;同步输入各种地区信息时不能所有保存,只能显示第一次输入信息;当输入客户信息而没输入地区信息时,查看地区信息时并不会提示没有信息,而是将客户信息输出。总之,只能实现客户信息和地区信息分别输入和显示。 3.文献保存功能没有实现,打开文献时没有任何记录。 4.3 将来也许提出规定 1.规定界面更加完美 ,阅读起来以便易懂。 2.规定客户信息和地区信息可以结合在一起,实现同步输入、同步保存、同步输出。 5.系统调试浮现问题 1.编译程序时没有显示任何错误`,但是执行时系统会浮现程序停止运营状况,我以为是系统没有为我在删除函数里定义指针q开辟空间,如下: Xinxi q; q=p; delete q; p=p->next; 然后我换了此外一种办法,如下: p2->next=p1->next; //连接 delete p1; cout<<"对的删除!\n"; 2.程序编译时会浮现没有主函数错误`,因素是括号没有对的匹配。 3.程序运营时浮现无限循环,是由于输出函数没有终结语句break. 6. 总结 在这次课程设计中我终收获颇多,让我对编程有了新结识,平时很少上机,总是在看程序,满足于看懂程序,因而离自己会编程序尚有一段差距, 这次课程设计虽然教师给了参照模板,但是这只是一种思路,需要咱们依照自己问题完善程序,这使得我不得不自己写,看了几遍程序,基本理解了编程办法,虽然一开始浮现了诸多错误,但是通过多次分析与修改,最后完毕了程序规定。 另一方面,在编程之前一定要思考,给自己规划好环节,我在第一周编程时没有认真阅读问题规定,觉得只要对客户信息进行操作,在第二周我已经编好程序准备写设计报告时才发现自己看错了,因此星期二下午和星期三我又在之前基本上重新编了这个程序,导致设计报告写有些仓促,因此,咱们在编程之前一定要认真阅读题目,分析设计规定,理清思路,这样背面编程时才干顺利进行。 因此这次课程设计让我用了一种相对比较集中时间去练习我编程,特别是自己动手能力,加深了对类和对象理解,提高了自己分析问题、运用所学知识解决问题能力,并培养了基本设计技能。 7.道谢 在这次课程设计中,教师和同窗们给了我很大协助,在此表达衷心感谢和诚挚谢意。 8. 参照文献 1. [1]谭浩强. C++面向对象程序设计(第2版第二版)[M]. 清华大学出版 社,. 2. [1]彭召意,朱艳辉,周玉. C++面向对象程序设计课程实践教学研究[J]. 计 算机教诲,,(5):151-154 9. 源程序 ////////////////////////////////////////////////////////////////////////// #include<fstream.h> #include<string.h> class Xinxi {protected: int No1; //编号 char Name1[20]; //名称 int Duty; Xinxi *next; //指针域 public: Xinxi () { next=0; //指针域设立为空 } virtual ~Xinxi() { } virtual void Input()=0; //从键盘输入数据 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: Xinxi *PL; void Clear(); int 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; cout<< "自动装入数据...\n"; Load(); } manger::~manger() //析构函数(仅保存一种头结点) { Xinxi *p=PL; while(p) { PL=p->next; delete p; p=PL; } } void manger::Add() { cout<<"\n**增长信息**\n"; Xinxi *p =PL; while(p->next)p=p->next; int ch; cout<<"选取信息类别[1-地区信息,2-客户信息]:"; cin>>ch; //创立新结点,录入数据,连接到链表 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->next; } }//********************************* int manger::Find(int ID,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; } void manger::Delete() { cout<<"\n**删除信息**\n"; int No; Xinxi *p1,*p2; Xinxi *p=PL->next; int ch; cout<<"输入删除类型[0-地区信息,1-客户信息]:"; cin>>ch; cout<<"编号:"; cin>>No; switch(ch) { case 0: if(!Find(No,&p1,&p2)) { cout<<"对不起,您需要地区信息没有找到!\n"; } else { p2->next=p1->next; //连接 delete p1; cout<<"对的删除!\n"; } break; case 1: if(!Find(No,&p1,&p2)) { cout<<"对不起,您需要客户信息没有找到!\n"; } else { p2->next=p1->next; //连接 delete p1; cout<<"对的删除!\n"; } break; default: return; } } void manger::Modify() { cout<<"\n**修改信息**\n"; int No; int ch; Xinxi *p1,*p2; Xinxi *p=PL; cout<<"输入修改类型[0-地区信息,1-客户信息]:"; cin>>ch; cout<<"编号:"; cin>>No; while(p->next) { switch(ch) { case 0: if(!Find(No,&p1,&p2)) cout<<"对不起,您需要地区信息没有找到!\n"; else { p1->Output(); //输出本来地区信息 p1->Input(); //输入新地区信息 cout<<"地区信息修改完毕!\n"; } break; case 1: if(!Find(No,&p1,&p2)) cout<<"对不起,您需要客户信息没有找到!\n"; else { p1->Output(); //输出本来客户信息 p1->Input(); //输入新客户信息 cout<<"客户信息修改完毕!\n"; } break; default: return; } p=p->next; } } void manger::Print() { cout<<"\n**输出信息**\n"; int No; int ch; Xinxi *p1,*p2; Xinxi *p=PL->next; cout<<"输入输出类型[0-地区信息,1-客户信息]:"; cin>>ch; cout<<"编号:"; cin>>No; switch(ch) { case 0: if(!Find(No,&p1,&p2)) { cout<<"对不起,您需要地区信息没有找到!\n"; } else { cout<<"\n** 地区信息表 **\n"; cout<<" 地区编号 地区名称\n"; p->Output(); p=p->next; cout<<"对的输出!\n"; } break; case 1: if(!Find(No,&p1,&p2)) { cout<<"对不起,您需要客户信息没有找到!\n"; } else { cout<<"\n** 地区信息表 **\n"; cout<<" 客户编号 客户名称 联系方式 地区编号 地区名称 \n"; p->Output(); p=p->next; cout<<"对的输出!\n"; } break; default: return; } } void manger::Save() { ofstream f("Xinxi.dat",ios::out);//打开文献 //遍历输出文献 Xinxi *p=PL->next; while(p) { p->Output(f); p=p->next; } f.close(); //关闭文献 cout<<"信息已经保存在Xinxi.dat.\n"; } void manger::Load() { char buf[81]; //暂时空间 int Duty; Xinxi *p2; ///新建结点指针 long t; //读写位置 //清除既有结点 Clear(); ifstream f("Xinxi.dat",ios::in); //打开文献 Xinxi *p=PL; //建立结点,读数据 while(1) { t=f.tellg(); f>>buf>>buf>>Duty; if(f) { switch(Duty) { case 0:p2=new area;break; case 1:p2=new customer;break; default:f.close();return; } p->next=p2;//创立新结点 p=p->next; f.seekg(t); p->Input(f); } break; f.close(); //关闭文献 } } void manger::Search() { cout<<"\n**查找信息**\n"; int No; Xinxi *p1,*p2; Xinxi *p=PL->next; int ch; cout<<"输入查找类型[0-地区信息,1-客户信息]:"; cin>>ch; cout<<"编号:"; cin>>No; switch(ch) { case 0: if(!Find(No,&p1,&p2)) { cout<<"对不起,您需要地区信息没有找到!\n"; } else { cout<<"\n** 地区信息表 **\n"; cout<<" 地区编号 地区名称\n"; p->Output(); p=p->next; cout<<"对的查找!\n"; } break; case 1: if(!Find(No,&p1,&p2)) { cout<<"对不起,您需要客户信息没有找到!\n"; } else { cout<<"\n** 客户信息表 **\n"; cout<<"客户编号 客户名称 联系方式 地区编号 地区名称\n"; p->Output(); p=p->next; } break; default: return; } } void main () { char ch; manger man; ch=1; do { cout<<"1-录入信息\n"; cout<<"2-删除信息\n"; cout<<"3-修改信息\n"; cout<<"4-查找信息\n"; cout<<"5-输出信息\n"; cout<<"6-数据存盘\n"; cout<<"7-数据装入\n"; cout<<"8-退出\t请选取(1-8):"; cin>>ch; switch(ch) { case'1':man.Add(); br
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服