C语言手机通信录管理系统的设计

沉默8090

贡献于2012-06-24

字数:16932 关键词: C/C++开发

 攀枝花学院 学生课程设计(论文) 题 目: 手机通讯录管理系统的设计 学生姓名: 学 号: 所在院(系): 计算机学院 专 业: 软件工程 班 级: 2010级1班 指 导 教 师: 何春燕 职称: 讲师 2011年 6 月 20日 攀枝花学院本科学生课程设计任务书 题 目 手机通信录管理系统的设计 1、课程设计的目的 本课程设计的目的和任务:(1)巩固和加深学生对C语言课程的基本知识的理解和掌握;(2)掌握C语言编程和程序调试的基本技能;(3)利用C语言进行简单软件设计的基本思路和方法;(4)提高运用C语言解决实际问题的能力。 2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等) 用C语言设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。 (一)功能要求: (1)查看功能:选择此功能时,列出下列三类选择:A 办公类 B 个人类 C 商务类 ,当选中某类时,显示出此类所有数据中的姓名和电话号码)。 (2)增加功能:能录入新数据(一个结点包括:姓名、电话号码、分类(可选项有:A 办公类 B 个人类 C 商务类)、电子邮件)。当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。 (3)拔号功能:能显示出通信录中所有人的姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的各个数字,并伴随相应的拔号声音。 (4)修改功能:选中某个人的姓名时,可对此人的相应数据进行修改。 (5)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。 (二)其它要求: 写出课程设计报告。 3、主要参考文献 [1]谭浩强,《C程序设计》,清华大学出版社 [2]刘振安,孙忱,刘燕君,《C程序设计课程设计》,机械工业出版社 [3]汪诗林,《数据结构算法与应用》,机械工业出版社 4、课程设计工作进度计划 课程设计时间为一周,分四个阶段完成: 1. 分析设计阶段:引导学生自主学习和钻研问题,明确设计要求,找出实现方法,按照需求分析、总体设计、详细设计这几个步骤进行。这一阶段前第1天完成。 2. 编码调试阶段:根据设计分析方案编写C语言代码,然后调试该代码,实现课题要求的功能。这一阶段在第2-3天完成。 3. 总结报告阶段:总结设计工作,写出课程设计说明书,要求学生写出需求分析、总体设计、详细设计、编码、测试的步骤和内容。这一阶段在第4天完成。 4. 考核阶段。这一阶段在第5天完成。 指导教师(签字) 日期 年 月 日 教研室意见: 年 月 日 学生(签字): 接受任务时间:2011 年 6 月 20 日 注:任务书由指导教师填写。 课程设计(论文)指导教师成绩评定表 题目名称 手机通信录管理系统的设计 评分项目 分值 得分 评价内涵 工作 表现 20% 01 学习态度 6 遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。 02 科学实践、调研 7 通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。 03 课题工作量 7 按期圆满完成规定的任务,工作量饱满。 能力 水平 35% 04 综合运用知识的能力 10 能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。 05 应用文献的能力 5 能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。 06 设计(实验)能力,方案的设计能力 5 能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。 07 计算及计算机应用能力 5 具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。 08 对计算或实验结果的分析能力(综合分析能力、技术经济分析能力) 10 具有较强的数据收集、分析、处理、综合的能力。 成果 质量 45% 09 插图(或图纸)质量、篇幅、设计(论文)规范化程度 5 符合本专业相关规范或规定要求;规范化符合本文件第五条要求。 10 设计说明书(论文)质量 30 综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。 11 创新 10 对前人工作有改进或突破,或有独特见解。 成绩 指导教师评语 指导教师签名: 年  月  日 攀枝花学院课程设计论文 摘要 摘 要 本通信录信息管理系统用计算机管理电子通信录的一种计算机应用技术的创新,在计算机还未普及之前通信管理都是由联系人采用名片,笔录手工记帐的方式来操作的.现在一般的通信录管理都是采用计算机作为工具的实用的计算机通信录管理程序来帮助人们进行更有效的通信录信息管理。通信录管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。 经过分析,我们使用 MICROSOFT公司的 VISUAL C++6.0开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。 关键字 通信录信息管理,管理信息系统,Visual C++6.0,Access,数据库 攀枝花学院课程设计论文 目录 目 录 摘 要 IV 目 录 V 需求分析 1 1.1 需求概述 1 1.2 需求环境 2 1.3 功能描述 2 2 总体设计 3 2.1 程序功能模块 3 2.2 程序流程图 3 2.3 功能描述 4 3 详细设计 5 3.1 程序初始化 5 3.1.1信息结构体说明 5 3.1.2函数说明 5 3. 1. 3主要函数、结构体和链表 5 3.2 程序设计 6 3.2.1新建通讯录模块 6 3.2.2显示信息模块 7 3.2.3 添加信息模块 10 3.2.4 拨号功能模块 11 3.2.5 修改功能模块 12 3.2.5 删除功能模块 13 3.2.6 保存操作并退出系统模块 14 4 测试与运行 15 4.1 源程序代码 15 4.2 运行界面及数据 24 结束语 26 参考文献 27 攀枝花学院课程设计论文 需求分析 需求分析 1.1 需求概述 当今时代是飞速发展的的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的原因。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。随着市场经济的发展和人们生活水平的提高,随着科学技术的发展,计算机领域不断取得新的研究成果。计算机在代替和延伸脑力劳动方面发挥越来越重要的作用,不仅在工业方面而且在日常生活中也越来越离不开计算机。本文论述了通讯录系统的整个开发过程,包括系统分析、系统设计、系统实现等方面。实现对通讯录信息的增、删、改、查等功能,以多文档界面形式实现。该软件具有方便性、可靠性、寿命长、可行性、安全性的优点。一个学校,单位,企业的通信录管理是一项重要工作。计算机管理通信档案,日常办公,实现现代化办公,分析通信现状通过强大的查询和索检高效的索检出数据,提高办事效率。 管理系统是一个企业单位不可缺少的部分,它的内容对于企业的决策者和管理者来说都至关重要,所以人事劳资管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长对于查找、更新和维护都带来了不少的困难。管理信息系统是企业的信息系统,它具备数据处理、计划、控制、预测和辅助决策功能,具体作用如下: (1)用统一标准处理和提供信息,排除使用前后矛盾的不完整的数据。 (2)完整、及时提供在管理及决策中需要的数据。 (3)利用指定的数据关系式分析数据,客观预测未来。 (4)向各级管理机构提供不同详细程度的报告,缩短分析和解释时间。 (5)向各级管理机构提供不同详细程度的报告,缩短分析和解释时间。 可行性研究是在软件开发前对软件项目的可行性做出细致而谨慎的评估。在定义阶段及早发现将来可能在开发过程中遇到的问题,及早做出决定,可以避免大量的人力、财力、时间上的浪费。因此,尽早对软件项目的可行性做出细致而谨慎的评估是十分必要的。 攀枝花学院课程设计论文 需求分析 1.2 需求环境 本课程设计需要的设备为硬件要求和软件配置要求具体要求如下: ①硬件要求:一台计算机。 ②软件配置:WINDOWS、C/VC++6.0。 1.3 功能描述 根据题目要求,对通讯录管理功能进行分析,按照要求提供输入、查询、排序、删除和显示等功能,在主菜单中进行操作使用。 攀枝花学院课程设计论文 总体设计 2 总体设计 2.1 程序功能模块 所谓通讯录,就是对联系人的信息进行输入,修改,删除,查找等功能,我们按照其功能划分为几个模块,在程序开始后,可以自行选择,到进入到所需要进入的功能中,所以我们就得设计几个模块,以实现不同功能。 2.2 程序流程图 图2.1 程序流程图 攀枝花学院课程设计论文 总体设计 图2.2 程序功能 2.3 功能描述 (1)查看功能:选择此功能时,列出下列三类选择:A 办公类 B 个人类 C 商务类 ,当选中某类时,显示出此类所有数据中的姓名和电话号码)。 (2)增加功能:能录入新数据(一个结点包括:姓名、电话号码、分类(可选项有:A 办公类 B 个人类 C 商务类)、电子邮件)。当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。 (3)拔号功能:能显示出通信录中所有人的姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的各个数字,并伴随相应的拔号声音。 (4)修改功能:选中某个人的姓名时,可对此人的相应数据进行修改。 (5)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。 攀枝花学院课程设计论文 详细设计 3 详细设计 3.1 程序初始化 3.1.1信息结构体说明 图3.1 信息结构体说明 3.1.2函数说明 3.1.3主要函数、结构体和链表 void creat();/*将文件的信息读入结构体数组在转存入链表中*/ void ShowA(); void ShowB(); 攀枝花学院课程设计论文 详细设计 void ShowC(); void ShowD(); void Show(); void Delete(); void Input(); void Alter(); void Dial(); void Save(); struct persons /*定义结构体数组用于缓存数据*/ { int num; /*编号*/ char name[20]; /*姓名*/ char e_addr[20]; /*电子邮箱*/ char tel_no[15]; /*电话号码*/ char arch; /*分类*/ }persons[maxlen]; typedef struct lnode /*通讯录结构中结点的定义*/ { int num; char name[20]; char e_addr[20]; char tel_no[15]; char arch; struct lnode *next; }listnode,*linklist; 3.2 程序设计 3.2.1新建通讯录模块 新建通讯录文件: 1.打开通讯录文件文本; 2.如果文件存在,则用尾插法将文件中的数据依次存入链表中,然后关闭文件; 3.如果文件为不存在,则新建一个空的通讯录文件文本,然后关闭文件。 void creat() /*将文件的信息读入结构体数组在转存入链表中*/ { int j; long k; fp=fopen("通讯录文件.txt","r t"); /*打开文件*/ if(fp!=NULL) { for(i=0;i<=maxlen;i++ ) /*当信息数不大于100条时,文件中的信息可以依次存入链表中*/ { 攀枝花学院课程设计论文 详细设计 j=fgetc(fp); if(j==EOF) return; k=i; fseek(fp,k*sizeof(struct persons),0); /*读取一个人的信息*/ fread(&persons[i],sizeof(struct persons),1,fp); s=(linklist)malloc(sizeof(listnode)); /*装存入链表中*/ s->num=persons[i].num; strcpy(s->name,persons[i].name); strcpy(s->e_addr,persons[i].e_addr); strcpy(s->tel_no,persons[i].tel_no); s->arch=persons[i].arch; if(head==NULL) /*用尾插法将其插入链表中*/ { head=s; r=head; head->next=NULL; } else { r->next=s; r=s;r->next=NULL; } } fclose(fp); } else { fp=fopen("通讯录文件.txt","w"); /*不能打开另开辟一个文件*/ i=1; } } 3.2.2显示信息模块 1.在提示中界面选择 显示通讯录 ; 2.输入需要显示的类别; 3.根据选择的类别调用显示函数; 4.从第一个节点开始,判断链表中的节点是否属于选择的类别; 5.如果节点属于所选类别,则显示该节点中所有信息; 6.如果不属于所选类别,则将所指节点下移,直至将链表中所有属于该类别的信息全部输出为止; 7.回到提示界面。 攀枝花学院课程设计论文 详细设计 /***********************************/ /*函数名:ShowA */ /*函数说明:输出办公类所有信息 */ /*入口参数:无 */ /*出口参数:无 */ /***********************************/ void ShowA() { p1=head; system("cls"); /*清屏*/ while(p1!=NULL) { if(p1->arch=='A') /*判断信息是否属于该类*/ { cout<name<e_addr<tel_no<arch<next; continue; } } /***********************************/ /*函数名:ShowB */ /*函数说明:输出个人类所有信息 */ /*入口参数:无 */ /*出口参数:无 */ /***********************************/ void ShowB() { p1=head; system("cls"); /*清屏*/ while(p1!=NULL) { if(p1->arch=='B') /*判断信息是否属于该类*/ { cout<name<e_addr<tel_no<arch<next; continue; } } /***********************************/ /*函数名:ShowC */ /*函数说明:输出商务类所有信息 */ /*入口参数:无 */ /*出口参数:无 */ /***********************************/ void ShowC() { p1=head; system("cls"); /*清屏*/ while(p1!=NULL) { if(p1->arch=='C') /*判断信息是否属于该类*/ { cout<name<e_addr<tel_no<arch<next; continue; } } } /***********************************/ /*函数名:Show */ /*函数说明:输出已有信息 */ /*入口参数:无 */ /*出口参数:无 */ /***********************************/ void Show() { char ch1; system("cls"); /*清屏*/ printf("你想输出哪一类信息?\n"); 攀枝花学院课程设计论文 详细设计 cout<<"A:办公类"<<"B:个人类"<<"C:商务类"<>ch1; /*输入选择类别*/ switch(ch1) /*用单条件多选择语句实现调用与循环*/ { case'A':ShowA();break; case'B':ShowB();break; case'C':ShowC();break; default:cout<<"error"<>s->name; cout<<"电话:"; cin>>s->sim_no; cout<<"电子邮箱:"; cin>>s->e_addr; cout<<"分类:"; cin>>s->arch; if(head==NULL) printf("\n\n"); /*判断原通讯录是否为空*/ else { p8=head; while(p8!=NULL&&strcmp(s->name,p8->name)!=0&&strcmp(s->tel_no,p8->tel_no)!=0) /*判断输入的用户是否已存在*/ 攀枝花学院课程设计论文 详细设计 p8=p8->next; if(p8!=NULL) { printf("您添加的用户已存在!"); free(s); } } if(head==NULL) { head=s; r=head; head->next=NULL; } else { r->next=s; r=s; r->next=NULL; } Save(); } 3.2.4 拨号功能模块 1.在提示界面中选择 拨号功能 ,进入拨号功能区; 2.若选择1,则将按姓名拨号,输入姓名 ,则输出与姓名相对应的电话号码,并回到提示界面。 /***********************************/ /*函数名:Dial */ /*函数说明:模拟拨打一个人的号码 */ /*入口参数:无 */ /*出口参数:无 */ /***********************************/ void Dial() { int a; char b; system("cls"); /*清屏*/ cout<<"1.拨叫用户:"<>a; p0=head; if(a==1) { cout<<"请输入拨叫用户的姓名:"; 攀枝花学院课程设计论文 详细设计 cin>>name1; while(strcmp(name1,p0->name)!=0&&p0!=NULL) /*找寻输入的用户*/ p0=p0->next; if(p0==NULL) cout<<"您选择的用户不存在!"; else { cout<tel_no; cout<>name1; p3=head; while(p3!=NULL&&strcmp(name1,p3->name)!=0) p3=p3->next; if(p3==NULL) /*判断输入的用户是否存在*/ printf("\n\n\t您选择的用户不存在!"); else { printf("\n\n\t请输入该用户的新信息:\n"); /*输入要改人的新信息*/ cout<<"姓名:"; cin>>name1; cout<<"电话号码:"; cin>>tel_no1; cout<<"电子邮箱:"; cin>>sim_no1; cout<<"类别:"; 攀枝花学院课程设计论文 详细设计 cin>>arch1; while(p9!=NULL&&strcmp(name1,p9->name)!=0&&strcmp(tel_no1,p9->tel_no)!=0) /*找寻输入的用户*/ p9=p9->next; if(p9==NULL) /*输入用户存在,则修改用户信息*/ { strcpy(p3->name,name1); strcpy(p3->tel_no,tel_no1); strcpy(p3->e_addr,e_addr1); p3->arch=arch1; } else printf("您添加的用户已存在!"); } Save(); } 3.2.5 删除功能模块 1.在提示界面中选择 删除通讯录 ; 2.输入要删除的姓名; 3.如果通讯录文件空,则输出 你选择的用户不存在! ; 4.如果通讯录文件不为空,则从第一个节点开始比较,若有某一节点中的姓名与输入姓名相同时,就释放该节点; 5.若节点中所有姓名都与输入姓名不相同,则输出 你选择的用户不存在! 6.保存刚才的操作,并回到提示界面。 /***********************************/ /*函数名:Delete */ /*函数说明:删除信息 */ /*入口参数:无 */ /*出口参数:无 */ /***********************************/ void Delete() { system("cls"); /*清屏*/ printf("\n\n\t请输入要删除用户的姓名:"); cin>>name1; /*输入要删除的姓名*/ p4=head; if(p4==NULL) cout<<"你选择的用户不存在!"<name,name1)==0) /*根据各种情况判断可能性*/ { 攀枝花学院课程设计论文 详细设计 p4=p4->next; head=p4; } else { while(strcmp(p4->next->name,name1)!=0)p4=p4->next;/*找到要删除的节点*/ if(p4!=NULL) /*若输入的用户存在则删除*/ { p5=p4->next; p4->next=p5->next; free(p5); } else cout<<"你选择的用户不存在!"<next)/*将信息装出入结构体数组在出入链表中,避免地址的出入,造成乱码文件*/ { strcpy(persons[j].name,p2->name); strcpy(persons[j].e_addr,p2->e_addr); strcpy(persons[j].tel_no,p2->tel_no); persons[j].sim_no=p2->sim_no; persons[j].arch=p2->arch; fwrite(&persons[j],sizeof(struct persons),1,fp); } 攀枝花学院课程设计论文 测试与运行 4 测试与运行 4.1 源程序代码 #include #include /*与malloc.h差不多*/ #ionclude #include #define maxlen 100 struct persons /*定义结构体数组用于缓存数据*/ { int num; /*编号*/ char name[20]; /*姓名*/ char e_addr[20]; /*电子邮箱*/ char tel_no[15]; /*电话号码*/ char arch; /*分类*/ }persons[maxlen]; typedef struct lnode /*通讯录结构中结点的定义*/ { int num; char name[20]; char e_addr[20]; char tel_no[15]; char arch; struct lnode *next; }listnode,*linklist; void Save(); linklist head=NULL,r=NULL; /*定义头指针和尾指针*/ listnode *s,*p0,*p1,*p2,*p3,*p4,*p5,*p6,*p7,*p8,*p9; int i; char name1[10],ch; char tel_no1[15]; char arch1; char e_addr1[20]; char s1[20]; FILE *fp; /*定义文件指针*/ void creat() /*将文件的信息读入结构体数组在转存入链表中*/ { int j; long k; fp=fopen("通讯录文件.txt","r t"); /*打开文件*/ 攀枝花学院课程设计论文 测试与运行 if(fp!=NULL) { for(i=0;i<=maxlen;i++ ) /*当信息数不大于100条时,文件中的信息可以依次存入链表中*/ { j=fgetc(fp); if(j==EOF) return; k=i; fseek(fp,k*sizeof(struct persons),0); /*读取一个人的信息*/ fread(&persons[i],sizeof(struct persons),1,fp); s=(linklist)malloc(sizeof(listnode)); /*装存入链表中*/ s->num=persons[i].num; strcpy(s->name,persons[i].name); strcpy(s->e_addr,persons[i].e_addr); strcpy(s->tel_no,persons[i].tel_no); s->arch=persons[i].arch; if(head==NULL) /*用尾插法将其插入链表中*/ { head=s; r=head; head->next=NULL; } else { r->next=s; r=s;r->next=NULL; } } fclose(fp); } else { fp=fopen("通讯录文件.txt","w"); /*不能打开另开辟一个文件*/ i=1; } } /***********************************/ /*函数名:ShowA */ /*函数说明:输出办公类所有信息 */ /*入口参数:无 */ /*出口参数:无 */ /***********************************/ 攀枝花学院课程设计论文 测试与运行 void ShowA() { p1=head; system("cls"); /*清屏*/ while(p1!=NULL) { if(p1->arch=='A') /*判断信息是否属于该类*/ { cout<name<e_addr<tel_no<arch<next; continue; } } /***********************************/ /*函数名:ShowB */ /*函数说明:输出个人类所有信息 */ /*入口参数:无 */ /*出口参数:无 */ /***********************************/ void ShowB() { p1=head; system("cls"); /*清屏*/ while(p1!=NULL) { if(p1->arch=='B') /*判断信息是否属于该类*/ { cout<name<e_addr<tel_no<arch<next; continue; } } 攀枝花学院课程设计论文 测试与运行 /***********************************/ /*函数名:ShowC */ /*函数说明:输出商务类所有信息 */ /*入口参数:无 */ /*出口参数:无 */ /***********************************/ void ShowC() { p1=head; system("cls"); /*清屏*/ while(p1!=NULL) { if(p1->arch=='C') /*判断信息是否属于该类*/ { cout<name<e_addr<tel_no<arch<next; continue; } } } /***********************************/ /*函数名:Show */ /*函数说明:输出已有信息 */ /*入口参数:无 */ /*出口参数:无 */ /***********************************/ void Show() { char ch1; system("cls"); /*清屏*/ printf("你想输出哪一类信息?\n"); cout<<"A:办公类"<<"B:个人类"<<"C:商务类"<>ch1; /*输入选择类别*/ switch(ch1) /*用单条件多选择语句实现调用与循环*/ { case'A':ShowA();break; 攀枝花学院课程设计论文 测试与运行 case'B':ShowB();break; case'C':ShowC();break; default:cout<<"error"<>s->name; cout<<"电话:"; cin>>s->sim_no; cout<<"电子邮箱:"; cin>>s->e_addr; cout<<"分类:"; cin>>s->arch; if(head==NULL) printf("\n\n"); /*判断原通讯录是否为空*/ else { p8=head; while(p8!=NULL&&strcmp(s->name,p8->name)!=0&&strcmp(s->tel_no,p8->tel_no)!=0) /*判断输入的用户是否已存在*/ p8=p8->next; if(p8!=NULL) { printf("您添加的用户已存在!"); free(s); } } if(head==NULL) { head=s; r=head; 攀枝花学院课程设计论文 测试与运行 head->next=NULL; } else { r->next=s; r=s; r->next=NULL; } Save(); } /***********************************/ /*函数名:Dial */ /*函数说明:模拟拨打一个人的号码 */ /*入口参数:无 */ /*出口参数:无 */ /***********************************/ void Dial() { int a; char b; system("cls"); /*清屏*/ cout<<"1.拨叫用户:"<>a; p0=head; if(a==1) { cout<<"请输入拨叫用户的姓名:"; cin>>name1; while(strcmp(name1,p0->name)!=0&&p0!=NULL) /*找寻输入的用户*/ p0=p0->next; if(p0==NULL) cout<<"您选择的用户不存在!"; else { cout<tel_no; cout<>name1; p3=head; while(p3!=NULL&&strcmp(name1,p3->name)!=0) p3=p3->next; if(p3==NULL) /*判断输入的用户是否存在*/ printf("\n\n\t您选择的用户不存在!"); else { printf("\n\n\t请输入该用户的新信息:\n"); /*输入要改人的新信息*/ cout<<"姓名:"; cin>>name1; cout<<"电话号码:"; cin>>tel_no1; cout<<"电子邮箱:"; cin>>sim_no1; cout<<"类别:"; cin>>arch1; while(p9!=NULL&&strcmp(name1,p9->name)!=0&&strcmp(tel_no1,p9->tel_no)!=0) /*找寻输入的用户*/ p9=p9->next; if(p9==NULL) /*输入用户存在,则修改用户信息*/ { strcpy(p3->name,name1); strcpy(p3->tel_no,tel_no1); strcpy(p3->e_addr,e_addr1); p3->arch=arch1; } else printf("您添加的用户已存在!"); } Save(); } 攀枝花学院课程设计论文 测试与运行 /***********************************/ /*函数名:Delete */ /*函数说明:删除信息 */ /*入口参数:无 */ /*出口参数:无 */ /***********************************/ void Delete() { system("cls"); /*清屏*/ printf("\n\n\t请输入要删除用户的姓名:"); cin>>name1; /*输入要删除的姓名*/ p4=head; if(p4==NULL) cout<<"你选择的用户不存在!"<name,name1)==0) /*根据各种情况判断可能性*/ { p4=p4->next; head=p4; } else { while(strcmp(p4->next->name,name1)!=0)p4=p4->next;/*找到要删除的节点*/ if(p4!=NULL) /*若输入的用户存在则删除*/ { p5=p4->next; p4->next=p5->next; free(p5); } else cout<<"你选择的用户不存在!"<next)/*将信息装出入结构体数组在出入链表中,避免地址的出入,造成乱码文件*/ { strcpy(persons[j].name,p2->name); strcpy(persons[j].e_addr,p2->e_addr); strcpy(persons[j].tel_no,p2->tel_no); persons[j].sim_no=p2->sim_no; persons[j].arch=p2->arch; fwrite(&persons[j],sizeof(struct persons),1,fp); } } void main() { creat(); do { printf("\n\n\n\n\t欢迎使用您的通讯录!");/*显示提示的信息*/ printf("\n\n\t\t请选择操作:"); printf("\n\t\t1.显示通讯录"); printf("\n\t\t2.删除通讯录"); printf("\n\t\t3.添加通讯录"); printf("\n\t\t4.编辑通讯录"); printf("\n\t\t5.拨号功能"); printf("\n\t\t6.保存刚才操作并退出"); printf("\n\n\n"); printf("\t请选择:"); cin>>ch; switch(ch) /*用单条件多选择语句实现调用与循环*/ { case '1': Show(); break; case '2': Delete(); break; case '3': Input(); break; case '4': Alter(); break; case '5': Dial(); break; case '6': Save(); fclose(fp); exit(0); break; default: /*ch输入错误提示*/ printf("\n\t*********************************\n"); 攀枝花学院课程设计论文 测试与运行 printf("\n\t The num should 1-6!!! \n"); printf("\n\t**********************************"); break; } }while(1); } 4.2 运行界面及数据 图4.1 提示界面 图4.2添加信息界面 攀枝花学院课程设计论文 测试与运行 图4.3 拨号界面 攀枝花学院课程设计论文 结束语 结束语 从本次毕业设计中,我学会了运用C语言设计程序。并熟练地使用和编译了个通讯管理系统的程序,完成了C语言理论到实践的过渡,总得来说,本次设计收获颇丰,也感谢老师的指导和帮助,才能圆满的完成。经过严格的调试,本程序终于能按照当初的设想成功运行,执行指定操作了。在本程序的编写及调试过程中遇到了不少的困难,曾经设想了几个方案,但都因为经验不足,无法实现指定功能而失败,出现的情况是,实现了这个功能,却无法满足另外的功能。后来对要所实现的操作进行重新的归类。将其总体分为几个不同的模块。各自实现其功能,然后各自完成对应的模块,程序。最后组装在一起修改部分代码,使其成为一个整体能达到目标的程序。期间遇到很多技术问题,参考了大量书籍。 通过该程序可以进行一般的通讯录常规操作。实现了对通讯录的建立,修改,及增删工作。能成功的按照姓名,电话,分类等进行查找服务。而且能对指定文件格式的通讯录进行导入,查看等操作。 攀枝花学院课程设计论文 参考文献 参考文献 [1]谭浩强,《C程序设计》,清华大学出版社 [2]刘振安,孙忱,刘燕君,《C程序设计课程设计》,机械工业出版社 [3]汪诗林,《数据结构算法与应用》,机械工业出版社 [4]《C语言程序设计教程》第三版2006 谭浩强,张基温。北京:高等教育出版社 [5]《C语言习题集与上机指导》谭浩强,张基温。第三版。北京:高等教育出版社 [6]孙鑫老师的VC++教学视频 [7]《C++语言程序设计》——张瑞丰编著——清华大学出版社 [8]SQL Server 实用教程——郑阿奇主编——电子工业出版社 [9]Visual C++6.0开发使用手册——北京机械工业出版社——1999.150~267 [10]Thinking in C++(C++编程思想 刘宗田 等译)——机械工业出版社

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享文档获得金币 ]
1 人已下载

下载文档

相关文档