ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:196.76KB ,
资源ID:27284446      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27284446.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电话号码管理系统doc.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

电话号码管理系统doc.docx

1、电话号码管理系统doc课 程 设 计 课程名称C+面向对象程序设计题目名称电话号码管理系统专业班级学生姓名学 号指导教师二一四年十二月十五日一、引 言 随着社会的发展,科学技术的进步,以及人际关系的交往日益密切,普通的采集联系人电话等信息已经不能够满足人们的需求,特别对于机场出差的人更是难以满足。手工记录繁琐,容易出错,不方便查找,受个人情绪的影响,同时不方便传播,越来越多的靠计算机来帮助人们记住这些事情,极其简便这就需要有一个专门管理客户信息的电话管理系统能代替人们来管理客户电话等信息,用户可以方便的通过自己电脑的电话簿管理系统,来随时查阅自己所需要的信息,而不必大费周章去翻自己的记事本。

2、与此同时,21世纪是科技高度发展的世纪,计算机以及信统来代替落后的手工记录等来适应新时代的发展。电话管理信息系统,可以满足人们的需求,人们可以通过它方便的记录客户电话信息,同时能很方便的查找修改等。二、课程设计报告1、问题描述电话号码管理软件 管理联系人的电话号码,支持添加、删除、修改、查询功能。 (1)整体查询:显示所有联系人 (2)个别查询,例如:输入“张”,则所有匹配的姓名中含 “张”的均显示。2、系统总体方案 用Node进行结构体类型定义,包括:姓名、电话号码和联系地址3、设计思路和主要步骤根据需求分析,首先我们需要建立Person基类,由此派生出了经理类(Manager),销售经理类

3、(SalesManager),销售员类(Sales),技术人员类(Technician),在Person类中,需要将人员编号,姓名,岗位,收入,以及next指针等数据设置权限为protected;由于其他类需要访问基类数据及相应成员函数,所以我们必须设置为public。在各个派生类中,因为都需要使用了CalcSalary(),OutPut()函数,为了不出现二义性的问题,我们需要在基类中将这两个函数声明为纯虚函数,通过进一步分析,由于基类中的构造函数不能被继承,而且在派生类中又需要增加自己的数据成员,所以我们必须定义派生类的构造函数来完成相应的初始化。然后建立Company类,在public访

4、问权限中,我们通过链表来操作人员数据,同时增加不同功能的成员函数如:void Add(); /增加人员 void Delete(); /删除人员void Modify(); /修改人员void Query(); /查询人员void Set(); /基础数据设置void Save(); /数据存盘void Load(); /数据装入为了实现多文件的效果,我们将Company类定义及该类的实现分开,然后逐一对各功能函数进行代码编写。最后,我们定义了主函数,通过公司类创建了一个对象,并通过此对象完成相应的操作。在调试并测试代码过程中,当程序员输入相应的指令后,该系统自动调用相应的功能函数来达到需求效

5、果,至此,一个公司人员管理系统的实现才算基本成功。显示所有记录按名字查删除记录请求帮助退出电话簿电话薄管理系统增加记录4、各功能模块和流程图(1)各功能模块1.Person 类的No-人员编号,Name-人员姓名,Duty-人员类别,Earning-工资,next-指向下一个人员的指针;Person类的CalcSalary(),Output()定义为纯虚函数分别表示要计算人员工资和输出人员信息,由于定义纯虚函数,所以Person是抽象类,具体计算工资,输出人员信息由派生类完成。 2.各个派生的类,包含本类对象特有的数据,Sales:Amount-销售员销售额,SalesManager:Amou

6、nt-销售经理的总销售额(系统统计各个销售员销售额得到销售经理的总销售额),Technician:t-技术人员工作小时数。 其中:Worker就是人员链表。 Clear()用于清除人员链表所有结点。 Add(),Delete(),Modify(),Query(),Set(),Save(),Load()分别表示系统各个功能模块:增加人员,删除人员,修改人员,查询本月经营信息,基础数据设置,数据存盘,数据装入。(2)电话号码管理系统流程图(3)可以新建和保存联系人,还可以显示所有记录和精确查询和删除记录。开始打开文件是否成功移动指针p指向头指针head退出P是否指向NULL保存文件,P指针后移关闭

7、文件结束三、系统测试列出各功能具体的输入数据及对应的输出结果,说明其是否符合设计要求:为链表增加记录显示所有记录按名字查找朋友的信息帮助 四、心得体会 通过此次课程设计,使我们更加扎实的掌握了有关C+程序设计方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我们在这方面的知识欠缺和经验不足。实践出真知,通过大家的亲自动手制作,使我们掌握的知识不再是纸上谈兵。过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利

8、完成了,在设计中遇到了很多问题,最后通过查阅相关书籍以及在大家的积极讨论下,终于迎刃而解。在今后社会的发展和学习实践过程中,我们一定会不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!课程设计诚然是一门专业课,给我们很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我们莫大的空间。同时,设计让我们感触很深。使我们对抽象的理论有了具体的认识。通过这次课程设计,我们基本

9、掌握了C+课程设计的原理。我认为,在这学期的实验中,不仅培养了团结合作、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。回顾起此次课程设计,至今仍让我们感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,不仅巩固了以前所学过的知识

10、,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高我们的实际动手能力和团结互助的能力。在设计的过程中遇到问题,可以说是困难重重,但可喜的是最终都得到了解决。此次设计也让我们明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。五、参考文献1谭浩强C+程序设计北京:清华大学出版社20042.张基温C+程序设计基础北京:高等教育出版社,20013.郭有强等编著,C+面向

11、对象程序设计,清华大学出版社,20094.郭有强等编著,C+面向对象程序设计实验指导与课程设计,清华大学 出版社,2009附:程序设计代码#include#include#include#include#include#define Node struct nodeNode /结构体类型定义,包括:姓名、电话号码和联系地址 char szName20; char szPhoneNum12; char szAddress30; Node *next;Node *strpHead; /全局变量,链表头指针Node *strpCurrent; /用于指向当前正在操作的结点 /函数原型声明void H

12、andleChoice_f(int);void AddRecord_f();void InsertNode_f(Node * );Node *InsertPoint_f(char * );void MakeNewHead_f(Node * );void AddToEnd_f(Node * );void MoveToEnd_f();void DisplayList_f();void DeleteRecord_f();void DelHead_f();void DelEnd_f(Node * );void DelMid_f(Node * );int VerifyDel_f();void DelNo

13、de_f(Node * );void DelList_f();void SearchByName_f();void WriteFile_f();void LoadFile_f();void Help_f();/主程序int main() int nChoice; system(color 3f); LoadFile_f(); do printf( 菜单 n); printf( n); printf( 1.增加记录 n); printf( 2.显示所有记录 n); printf( 3.按名字查找朋友的信息 n); printf( 4.删除记录 n); printf( 5.请求帮助 n); pri

14、ntf( 6.退出程序 n); printf( n); printf( 请选择代码(1,2,3,4,5,6):); scanf(%d,&nChoice); HandleChoice_f(nChoice); /*接受用户的选择*/ while(nChoice!=6); return 0; void HandleChoice_f(int nChoice) /*根据用户选择nChoice调用相应的函数*/ switch(nChoice) case 1: AddRecord_f(); break; case 2: DisplayList_f(); break; case 3: SearchByName

15、_f(); break; case 4: DeleteRecord_f(); break; case 5: Help_f(); break; case 6: WriteFile_f(); /*将链表中的数据写回文件*/ if(strpHead!=NULL) DelList_f(); break; default: printf(没有您要的选项!n); break; void AddRecord_f() Node *strpNew;/*为新记录定义临时指针变量*/ strpNew=(Node *)malloc(sizeof(Node);/*开辟空间存放新记录数据*/ getchar(); pri

16、ntf(姓名:); gets(strpNew-szName); printf(电话号码:); gets(strpNew-szPhoneNum); printf(联系地址:); gets(strpNew-szAddress); InsertNode_f(strpNew); system(cls);void InsertNode_f(Node *strpNew) Node *strpFront; Node *strpBack; system(cls); if(strpHead=NULL) strpNew-next=NULL; strpHead=strpNew; else if(strcmp(str

17、pNew-szName,strpHead-szName)0) MakeNewHead_f(strpNew); else /查找新结点的位置 strpCurrent=InsertPoint_f(strpNew-szName); strpFront=strpCurrent; strpBack=strpCurrent-next; if(strpBack=NULL) AddToEnd_f(strpNew); else strpFront-next=strpNew; strpNew-next=strpBack; Node *InsertPoint_f(char *szName) /*根据新增记录的姓氏,

18、返回其将插入的正确位置*/ char szTempName20; Node *strpTemp; int nTemp; if(strpHead-next!=NULL) strpCurrent=strpHead; strpTemp=strpCurrent-next; strcpy(szTempName,strpTemp-szName); nTemp=strcmp(szName,szTempName); while(nTemp0)&(strpCurrent-next!=NULL) strpCurrent=strpTemp; if(strpCurrent-next!=NULL) strpTemp=s

19、trpCurrent-next; strcpy(szTempName,strpTemp-szName); nTemp=strcmp(szName,szTempName); else strpCurrent=strpHead; return(strpCurrent);void MakeNewHead_f(Node *strpNew)/*新结点成为链表的头结点*/ Node *strpTemp; strpTemp=strpHead; strpNew-next=strpTemp; strpHead=strpNew;void AddToEnd_f(Node *strpNew)/*新结点成为链表的尾结点

20、*/ strpNew-next=NULL; MoveToEnd_f(); strpCurrent-next=strpNew;void MoveToEnd_f()/*当前指针移到链表尾*/ strpCurrent=strpHead; while(strpCurrent-next!=NULL) strpCurrent=strpCurrent-next; void DisplayList_f() strpCurrent=strpHead; if(strpCurrent!=NULL) printf(n); printf( 姓名 电话号码 联系地址 n); printf(-n); do printf(%

21、10s,strpCurrent-szName); printf(%20s,strpCurrent-szPhoneNum); printf(%20sn,strpCurrent-szAddress); strpCurrent=strpCurrent-next; printf(n); while(strpCurrent!=NULL); system(pause); system(cls); else printf(没有记录可以显示!n); void SearchByName_f() char szSearch20; strpCurrent=strpHead; system(cls); getchar

22、(); printf(n输入您要查找的姓名:); gets(szSearch); while(strpCurrent!=NULL)&(strcmp(strpCurrent-szName,szSearch)!=0) strpCurrent=strpCurrent-next; if(strpCurrent!=NULL) printf(n记录找到了!n); printf(%sn,strpCurrent-szName); printf(%sn,strpCurrent-szPhoneNum); printf(%sn,strpCurrent-szAddress); else printf(没有相应的记录!

23、n); printf(按ENTER键继续n); system(pause); system(cls); void DeleteRecord_f() char szSearch20; Node *strpFront; system(cls); strpFront=NULL; strpCurrent=strpHead; getchar(); printf(n输入朋友的姓名以删除该记录:); gets(szSearch); while(strpCurrent!=NULL)&(strcmp(strpCurrent-szName,szSearch)!=0) strpFront=strpCurrent;

24、strpCurrent=strpCurrent-next; if(strpCurrent!=NULL) printf(n记录找到了n); printf(%sn,strpCurrent-szName); printf(%sn,strpCurrent-szPhoneNum); printf(%sn,strpCurrent-szAddress); if(VerifyDel_f() DelNode_f(strpFront); printf(n该记录已经删除!n); else printf(n该记录没有删除!n); else printf(n没有匹配的记录被删除!n); system(cls);void

25、 Help_f() int nChoice; do system(cls); printf(欢迎来到帮助栏,请选择代号n); printf(1:电话簿的功能n); printf(2:怎么清除所有记录n); printf(3:在加入新的信息时,原来的信息还在吗n); printf(4:你操作时需要注意的事项!n); printf(5:退出n); scanf(%d,&nChoice); switch(nChoice) case 1: printf(这是一个简单的电话簿,刚开始是一个空的电话本。你可以根据提示加入或删除纪录,还可以根据需要显示和查询电话号码n); printf(按ENTER键继续n)

26、; getch(); system(cls); break; case 2: printf(你只要删除文件Friend.dat或者退出程序释放存储空间,就可以删除所有纪录了n); printf(按ENTER键继续n); getch(); system(cls); break; case 3: printf(当然拉,加入信息不会改变原来的信息n); printf(按ENTER键继续n); getch(); system(cls); break; case 4: printf(在查找和删除纪录时,应该把要找的朋友的全名写好,否则将无法显示和操作n); printf(按ENTER键继续n); get

27、ch(); system(cls); break; default: case 5: printf(按ENTER键继续n); break; while(nChoice!=5);int VerifyDel_f() /*删除信息时要求予以确认*/ char chYesNo; printf(你确定要删除吗?(Y/N); scanf(%c,&chYesNo); if(chYesNo=Y)|(chYesNo=y) return(1); else return(0); void DelNode_f(Node *strpFront)/*删除结点*/ if(strpCurrent=strpHead) DelH

28、ead_f(); else if(strpCurrent-next=NULL) DelEnd_f(strpFront); else DelMid_f(strpFront); void DelHead_f() /*删除头结点*/ strpCurrent=strpHead; if(strpHead-next!=NULL) strpHead=strpCurrent-next; else strpHead=NULL; free(strpCurrent);void DelEnd_f(Node *strpFront) /*删除尾结点*/ free(strpCurrent); strpFront-next=NULL; strpCurrent=strpHead;void D

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1