第一篇:通讯录管理系统
淮北师范大学
软件系列课程设计
通讯录管理系统
学
院
计算机科学与技术学院
学 生 姓 名
陈 文 超
学
号
20081201011
指导教师姓名
陈 美 荣
2010年 06月 20日
目 录
摘 要........................................................1.绪论.......................................................1.1 开发背景简介.........................................1.2 管理系统的发展趋势„„„„„„„„„„„„„„„„„„
1.2 目的目的和意义........................................2.开发工具的选择............................................3.系统分析...................................................3.1题目需求分析............................................3.2系统功能分析............................................4.系统总体规划...............................................4.1概要设计...............................................5.系统设计...................................................5.1系统操作流程图..........................................5.2系统详细设计............................................6.调试.......................................................7.全文总结...................................................8.致 谢.....................................................参考文献.....................................................通讯录管理系统
摘要:
通讯录管理系统是每一个用户管理通讯录的不可缺少的一个管理信息系统,它的内容对于用户的管理者来说是至关重要的,所以通讯录管理系统应该能够为每一个用户的管理者提供充足的信息和快捷的查询手段,大大的方便用户合理的管理通讯录。
随着科学技术的不断提高,计算机科学日渐成熟,网上通讯工具的迅速发展,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对通讯录进行管理,具有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高通讯录管理的效率,也是用户理财的科学化、正规化管理,与先进科学技术接轨的重要条件。
因此,开发这样一套管理软件成为很有必要的事情,对于我们即将计算机专业毕业的学员来说,也是一次将计算机应用于现实管理的一次很有意义的实践活动。
关键词:通讯录 管理信息系统 计算机科学 用户
1.1开发背景简介
随着信息活动在国民经济中主导地位的确立和信息产业的崛起信息资源管理(Informetion Resouces Management,简称IRM)作为一个专有名词和独立的学科逐渐发展起来。如何积极开发、合理配置和有效利用信息资源,日益成为社会生活中亟待解决的问题。由于计算机和通信技术的高速发展,推广应用计算机进行信息、管理成为推动信息化工作的重要内容,管理信息系统正是应用计算机信息化过程中出现的新生事物。它是一个利用计算机软硬件资源进行电子数据处理的人——机系统,它能提供信息,支持企业或组织的运行,具有管理和支持决策的功能利用计算机能把生产经营过程中的巨大数据流收集组织起来。经过处理转换为对各部门不可缺少的数据,经过对这些数据的分析使其变为各级管理人员做出决策具有重要意义的信息。总之,管理信息系统用于管理中可以大大减轻管理人员的工作负担,提高工作效率,使管理更加程序化、科学化。
对一个组织而言,内部管理的好坏直接关系到组织的存在与良好运行,而内部管理中非常重要的一项就是对他人的联系,他人的具体情况,如:手机号、电子邮箱、家庭住址„„;一旦工作人员没有及时出现在自己的岗位时、及其他情况发生变化,可以迅速联系或找到本人甚至其家人及时了解情况;引入计算机管理信息系统,可以提高工作效率,改善管理情况,使管理工作系统化、科学化、提高整体的管理的水平。
本系统是针对通讯录管理系统编写的。对于许多人来说,已经认识到一个好的通讯录是很必要的,可以方便和他人的联系;但是应用计算机来进行管理,他们还无法自己实现,这就需要有专门的管理软件来帮助实现。
随着科技的进步和信息产业的飞速发展,通讯录成为了现代生活中一个重要的工具。本通讯录管理系统利用计算机对通讯录进行统一管理,包括添加、修改、查询记录等功能,实现通讯录管理工作的系统化、规范化和自动化,为人们的工作和生活提供便利。整个系统程序采用c语言来实现。c语言是目前国际上比较流行的计算机高级编程语言之一,因其简洁、使用方便且具备强大的功能而受到编程人员的普通青睐。它既适合作为系统描述语言,也可用来编写系统软件,还可用来编写应用软件。
1.2 管理信息系统的发展趋势 现代管理信息系统软件的规模越来越大,且管理思想越来越复杂,以至于超出了软件开发者在合理的时间和价值内设计、描述、开发和验证它们的能力。因此,在开发管理信息系统的时候,需要利用可靠的构件,或者是以前开发的很小但经过验证的较小的程序模块,在可接受的时间范围内组建出可靠而复杂的软件系统。
一般情况下,管理信息系统的体系结构采用自上而下的纵向分层、横向分块来设计实现。分层为管理软件的复杂度及重用提供了一个很好的解决方法,在分层系统的等级组织形式中,每一层都给下一层提供服务,对其下层则要求得到服务。分块指按信息系统软件实现的功能将软件分为若干块,每一块既是一独立的子系统,又是大系统的一个组成部分。块与块之间通过数据表进行耦合。
在确定的分层分块的体系结构中,再采取自下而上的方法,首先,对最底层的功能模块,对该功能模块包含的管理思想标准化、模型化,使其具有通用性,再进行构件化设计,并按照软构件应该具有的可移植性、互操作性、扩展性、可配置性和可维护性等特点,进行参数化设置;其次,对该功能的上一层进行构件化改造,减少模块间的重叠,这样层层改造之后,对于类似企业的管理信息系统的开发,只需要针对该企业的个性,对某些局部的构件进行改动就可以完成了
1.3开发的目的和意义
计算机已经成为我们学习和工作的得力助手,使用其可方便的管理通讯录 今天,计算机的价格已经十分低廉,性能却有了长足的进步。它已经被应用于许多领域。
现在我国的通讯录管理水平还停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。我作为一个计算机应用专业的毕业生,希望可以在这方面有所贡献。改革的总设计师邓小平同志说过“科学技术是第一生产力”,我希望能用我所学的知识编制出一个实用的程序来帮助用户进行财务管理。
开发这一系统的好处大约有以下几点:
第一、可以存储大量的通讯录信息,安全、高效; 第二、只需一档案录入员即可操作系统,节省人力; 第三、可以迅速查到所需通讯录信息。
根据2003年中国电信的调查报告显示我国的上网人数已达到1870万,互联网已经十分普及,况且现在网上通讯已经出现,本系统为用户将来的上网作了先期工作。
2.开发工具
Microsoft Visual Studio是一种可视化的、面向对象和调用事件驱动方式的结构化高级程序设计,可用于开发Windows环境下的种类应用程序。它简单易学、效率高,且功能强大,可以与Windows的专业开发工具SDK相媲美,而且程序开发人员不必具有C/C++编程基础。在 Microsoft Visual Studio环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的应用程序接口(API)函数,以及动态链接库(DLL)、动态数据交换(DDE)、对象的链接与嵌入(OLE)、开放式数据访问(ODBC)等技术,可以高效、快速地开发出Windows环境下功能强大、图形界面丰富的应用软件系统。
3.1需求分析
设计题目及要求:
◆ 建立通讯录信息,信息至少包含姓名、年龄、电话、通讯地址、电子邮箱、邮政编码等;
◆ 能够提供添加、删除和修改通讯录信息的功能;
◆ 能够提供安不同方式查询的功能;如按姓名或年龄、电话等查询; ◆ 将通讯录保存在文件中;
◆ 能够按表格方式输出通讯录信息。
3.2系统功能需求分析:
主要包含一下多种功能:
添加:添加通讯录记录 显示:显示通讯录记录 删除:删除通讯录记录 查询:查询通讯录记录 修改:修改通讯录记录 保存:将信息保存到文件
4.1概要设计
系统功能模块图:
添加:可以添加通讯录记录,依次输入姓名、年龄、电话号码、通讯地址、电子邮箱邮、政编码后,会提示是否继续添加。显示:可以以表格形式输出所有通讯录里的记录
删除:输入欲删除的那个人的名字后,会自动删除他(她)的记录内容 查询:可以选择用姓名、电话、地址三种方式查询
修改:输入欲修改的那个人的名字后,再依次输入姓名、年龄、电话号码、通讯地址、电子邮箱、邮政编码即可完成修改
保存:,输入文件名(带后缀名)后,即可将通讯录信息保存到文件
5.1操作系统流程图:
①添加:添加通讯录记录
②显示:显示通讯录记录
③删除:删除通讯录记录
④查询:查询通讯录记录
先选择查询方式,以姓名查询方式为例
⑤修改:修改通讯录记录
5.2详细设计
(1).通讯录:
typedef struct
{
char name[10];
/*姓名*/
char num[15];
/*号码*/
char email[20];
/*邮箱*/
char age[8];
/*年龄*/
char adds[20];
/*住址*/
Char post[10];
/*邮政编码*/ }Person;
void main()
/*主函数*/
{
int n=0;for(;;){
switch(menu_select())
{
case 1:
printf(“nt添加记录到通讯录n”);
/*添加记录*/
n=Input(pe,n);
break;
case 2:
printf(“nttt
通讯录记录表n”);
Display(pe,n);
break;
case 3:
printf(“nt从通讯录中删除记录n”);
n=Delete_a_record(pe,n);
printf(“t”);
system(“pause”);
break;
case 4:
printf(“nt在通讯录中查找记录n”);
Query_a_record(pe,n);
printf(“t”);
system(“pause”);
break;
case 5:
printf(“nt修改通讯录中的记录n”);
Change(pe,n);
printf(“t”);
system(“pause”);
break;
case 6:
printf(“nt保存功能n”);
WritetoText(pe,n);
printf(“t”);
system(“pause”);break;
/*显示记录*/
/*删除记录*/
/*查找记录*/
/*修改数据*/
/*保存数据*/
}
} case 0:
printf(“ntt谢谢使用,再见!n”);
/*结束程序*/ printf(“ntt”);system(“pause”);exit(0);}
六.调试
7.全文总结
在本系统的开发过程中,由于本人是初次开发软件,在知识、经验方面都存在着不足。另外,在整个开发的过程中,时间也比较仓促。因此,该系统必然会存在一些缺陷和不足。因为对通讯录信息管理的整个流程不够熟悉,在需求分析时未能做到完全满足用户的需求。
尽管本管理系统存在着很多不足,但通过开发这个系统,我掌握了的项目基本开发过程,用到的知识巩固了我对Visual C++的学习,在这次设计中的最大收获并不是掌握这几门开发工具的应用,而是学会了设计系统的思维方法,以及与同学们之间相互帮助的精神。8.致 谢
从接受课题到现在完成设计论文,衷心的感谢我的指导老师给予了精心的指导和热情的帮助,尤其在课题设计的前期准备阶段和本人的设计阶段,导师提出许多宝贵的设计意见,在最后的测试修改阶段老师在百忙之中抽出时间为我们提供了必要的帮助,这样使得我得以顺利的完成毕业设计开发工作,老师渊博的知识、敏锐的思路和实事求是的工作作风给我留下了深刻的印象,这将使得我终身受益,谨此向老师表示衷心的感谢和崇高的敬意!
参考文献
[1] 史济明等编著,软件工程-原理、方法与应用,高等教育出版社,2002 [2] 汪孝宜等,信息系统开发实例精粹,电子工业出版社,2006 [3] 谭浩强.C程序设计[M].3版.北京:清华大学出版社,2005 [4] 张基温.C语言程序设计案例教程[M].北京:清华大学出版社,2004 [5] C语言程序设计教程 第三版,高等教育出版社
第二篇:通讯录管理系统
课 程 设 计 任 务 书
题
目
C语言课程设计
系
(部)
专
业
班
级
学生姓名
学
号
06 月
信息科学与电气工程学院
计算机科学与技术
计职141
王雪
140819139 日至
07 月
04 日
共
周 指导教师
院
长
2015 年 6月 23日
一、课程设计目的
将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:
(1)进一步巩固、加深学生所学专业课程《C++程序设计语言》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。
(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。
(3)利用所学知识,开发小型应用系统,掌握运用C++语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。
(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。
(5)掌握结构化程序设计方法,熟悉面向对象程序设计方法。(6)熟练掌握C++语言的基本语法,灵活运用各种数据类型。(7)进一步掌握在集成环境下如何调试程序和修改程序。设计功能
录入联系人信息(包括姓名、电话号码、地址等信息);通讯录管理系统要求实现以下功能:
1、输入每一位联系人记录,将其信息存入文件中。
2、查询所有联系人的信息,并按可选的自定义规则进行排序;
3、记录修改,将修改的记录信息保存于文件中。设计要求
1、设一个通信录由以下几项数据信息构成: 数据项 类型
姓名 字符串
地址 字符串
邮政编码 字符串
电话号码 字符串
试为通信录数据定义类型和定义通信录变量,实现功能:存取、显示、删除记录、查询记录等功能。
2、要求:界面友好,易于操作 总体设计 系统功能模块图:
添加:可以添加通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱等后,会提示是否继续添加。
显示:可以以表格形式输出所有通讯录里的记录
删除:输入欲删除的那个人的名字后,会自动删除他(她)的记录内容 查询:可以选择用姓名、电话、地址三种方式查询
修改:输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱即可完成修改
保存:,输入文件名(带后缀名)后,即可将通讯录信息保存到文件
课程设计名称及内容
课程设计名称:单项选择题标准化考试系统
设计内容:设计并实现一个单项选择题标准化考试系统。该系统可以完成试题录入、试题抽取、自动判卷等功能。
任务和要求
功能要求:
(1)用文件保存试题库。(每个试题包括题干、4个备选答案、标准答案)(2)试题录入:可随时增加试题到试题库中
(3)试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)(4)答题:用户可实现输入自己的答案
(5)自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。
(二)其它要求:
(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)(3)学生可自动增加新功能模块(视情况可另外加分)
主要知识点
l 面向对象程序设计方法
l 界面制作,switch的应用。l 类和对象。l 动态数组(链表)类模板。l 文件的读写。
五、其他
程序设计可在Microsoft VC++6.0、Borland C++ Builder环境下进行。
六、参考资料
【1】《C语言程序设计》,谭浩强编,清华大学出版社,2008年 出版 【2】《C语言程序设计》,吴明发编,北京理工大学出版社,2007年出版 【3】《C语言参考手册》邱仲潘 机械工业出版社,2004年出版
【4】《C语言课程设计案例精编》 姜灵之 清华大学出版社 2008年出版
详细设计(1).通讯录: 主要代码
#include
//结构体 {
};class inter { private: student st[35];char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40];public: void add(char no[13],char name[20],char address[100],char tel_no[12],char post_code[7],char e_mail[40]);
void del(char name[20]);void find1(char no[13]);void find2(char name[20]);void list1();void list2();int correct(char name[20]);void read();void write();void format();int back(){
cout<<“
返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写):
”;
} void print(int i){
cout<<“学号:”<
};
} cout<<“电话号码:”< inter a;a.format();char select1;cout< 计职141 ” < <<“tt★★★★★★★★★★★★★★★★★★★★★★★★★★” < ※” < 通 迅 录 ※” < ※” < ※” < ※” < ※” < <<“tt ”< <<“ttt选择 :”;cin>>select1; switch(select1){ case '1':cout<<“ (1)添加:”< cout<<“ (2)删除:”< (3)修改:”< 请选择:”< 输入添加的资料:”< char name[20]; char address[100]; char tel_no[12]; char post_code[7]; char e_mail[40]; cout<<“ 输入学号:”< 输入姓名:”< 输入地址:”< 输入电话号码:”< 输入邮编:”< cout<<“ 输入E_mail:”< cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”; char back_add;cin>>back_add;if(back_add=='R'||back_add=='r')goto top;else goto bottom;break;case '2':cout<<“ 输入要删除人的姓名:”< char name2[20];cin>>name2;a.del(name2); cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”; char back_del;cin>>back_del;if(back_del=='R'||back_del=='r')goto top;else goto bottom;break;case '3':cout<<“ 输入需要修改人的姓名:”< char name3[20];cin>>name3;if(a.correct(name3)) } goto top;else goto bottom;break;break;case '2':cout<<“ (1)根据姓名查找”< cout<<“ (2)根据学号查找”< 请选择: ”;cin>>select3;switch(select3){ case '1':char name4[20]; cout<<“ 输入姓名: ”;cin>>name4;a.find2(name4); cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”; char back_f1;cin>>back_f1;if(back_f1=='R'||back_f1=='r')goto top;else goto bottom;break;case '2':char no4[13];cout<<“ 输入学号: ”;cin>>no4; a.find1(no4); cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”; } break;char back_f2;cin>>back_f2;if(back_f2=='R'||back_f2=='r')goto top;else goto bottom;break;case '3':a.write();cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”; char back_w;cin>>back_w;if(back_w=='R'||back_w=='r')goto top;else goto bottom;break;case '4':cout<<“ (1)按学号排序:”< cout<<“ (2)按姓名排序:”< 请选择:”;char select4;cin>>select4;switch(select4){ case '1':a.list1(); cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”; char back;cin>>back;if(back=='R'||back=='r')goto top;else goto bottom;break;case '2':a.list2(); cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”; } break;char back1;cin>>back1;if(back1=='R'||back1=='r')goto top;else goto bottom;break;case '5':a.read();cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”; char back_r;cin>>back_r;if(back_r=='R'||back_r=='r') goto top;else goto bottom;break;case '6':cout<<“ 请确认删除所有资料!(Y/N) ”; char select5;cin>>select5;if(select5=='Y'||select5=='y')a.format();cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”; } char back_f;cin>>back_f;if(back_f=='R'||back_f=='r')goto top;else goto bottom;break;bottom:cout<<“ ★★★★★★★★★★★★欢迎使用本软件!★★★★★★★★★★★ ”< void inter::add(char no[13],char name[20],char address[100],char tel_no[12],char post_code[7],char e_mail[40]){ int x=1;for(int i=0;i<35;i++)return 0; } { } if(!strcmp(st[i].no,“0”)){ } if(x==0)break;strcpy(st[i].address,address);strcpy(st[i].e_mail,e_mail);strcpy(st[i].name,name);strcpy(st[i].no,no);strcpy(st[i].post_code,post_code);strcpy(st[i].tel_no,tel_no);x=0;//删除联系人 void inter::del(char name[20]){ int x=1;for(int i=0;i<35;i++){ if(!strcmp(st[i].name,name)){ strcpy(st[i].address,“0”); strcpy(st[i].e_mail,“0”);strcpy(st[i].name,“0”);strcpy(st[i].no,“0”);strcpy(st[i].post_code,“0”);strcpy(st[i].tel_no,“0”); } } } else x=0;if(x==0)cout<<“ error:输入姓名错误!”< int inter::correct(char name[30]){ int x;for(int i=0;i<35;i++){ } char select;cout<<“ (1)修改姓名:”< (2)修改学号:”< (3)修改地址:”< (4)修改邮编:”< (5)修改电话号码:”< (6)修改E_MAIL:”< 请选择:”;cin>>select;switch(select){ case '1':cout<<“ 输入要修改的姓名:”;char name1[30];if(!strcmp(st[i].name,name))x=i; cin>>name1;strcpy(st[x].name,name1);cout<<“ 修改成功!”< 输入要修改的学号:”; char no1[13];cin>>no1;strcpy(st[i].no,no1);cout<<“ 修改成功!”< 输入要修改的地址:”; char address1[100];cin>>address1;strcpy(st[x].address,address1);cout<<“ 修改成功!”< 输入要修改的邮编:”; char post_code1[7];cin>>post_code1;strcpy(st[x].post_code,post_code1);cout<<“ 修改成功!”< 输入要修改的电话号码:”;char tel_no1[12]; cin>>tel_no1;strcpy(st[x].tel_no,tel_no1);cout<<“ 修改成功!”< 输入要修改的E_MAIL:”; char e_mail1[40]; cin>>e_mail1; strcpy(st[x].e_mail,e_mail1); cout<<“ 修改成功!”< return back(); break;} } //按学号查询联系人 void inter::find1(char no[13]){ int x,y=1,z=1;for(int i=0;i<35;i++){ if(!strcmp(st[i].no,no)) { x=i; z=0; } else y=0; if(z==0)break; } if(y==0)cout<<“ 输入的学号查找不到!!”< print(x);} //按姓名查询联系人 void inter::find2(char name[20]){ } //读取文件 void inter::read(){ int x,y=1,z=1;for(int i=0;i<35;i++){ } if(y==0)cout<<“ 输入的姓名查找不到!!”< } else y=0;if(z==0)break;x=i;z=0; print(x); char name1[20];cout<<“ 输入你要导入的文件名: ”;cin>>name1;strcat(name1,“.txt”);ifstream file(name1);char line[120];char no[120];char name[120];char address[120];char post_code[120];char tel_no[120];char e_mail[120];int time=0;file.getline(line,120);while(!file.eof()){ for(int k=0;k<35;k++){ if(time==0){ strcpy(no,line);time=1;for(int i=0;i<120;i++){ if(no[i]==':'){ i++;for(int j=0;j<13;j++) } } { } st[k].no[j]=no[i];i++;file.getline(line,120,'n');} if(time==1){ } if(time== 2){ strcpy(name,line);time=2; for(int i=0;i<120;i++){ } file.getline(line,120,'n');if(name[i]==':'){ } i++;for(int j=0;j<20;j++){ } st[k].name[j]=name[i];i++; } strcpy(address,line);time=3;for(int i=0;i<120;i++){ } file.getline(line,120,'n');if(address[i]==':'){ } i++;for(int j=0;j<100;j++){ } st[k].address[j]=address[i];i++;if(time==3){ strcpy(tel_no,line);time=4;for(int i=0;i<120;i++){ if(tel_no[i]==':'){ i++;for(int j=0;j<12;j++){ st[k].tel_no[j]=tel_no[i]; } } } } i++;file.getline(line,120,'n'); if(time==4){ } if(time==5){ strcpy(e_mail,line);strcpy(post_code,line);time=5;for(int i=0;i<120;i++){ } file.getline(line,120,'n');if(post_code[i]==':'){ } i++;for(int j=0;j<7;j++){ } st[k].post_code[j]=post_code[i];i++; } } } } time=0;for(int i=0;i<120;i++){ } file.getline(line,120,'n');if(e_mail[i]==':'){ } i++;for(int j=0;j<40;j++){ } st[k].e_mail[j]=e_mail[i];i++; file.close();//写入文件 void inter::write(){ char name[20];cout<<“ 输入要保存的文件名 ”;cin>>name;strcat(name,“.txt”);ofstream savefile(name);for(int i=0;i<35;i++) } { } savefile.close();savefile << “学号:”< savefile << “姓名:”< savefile << “地址:”< savefile << “电话号码:”< savefile << “邮编:”< savefile << “E_MAIL:”< strcpy(no,st[j].no);strcpy(st[j].no,st[j+1].no);for(int i=0;i<34;i++){ for(int j=0;j<35-i;j++){ if(strcmp(st[j].no,st[j+1].no)>0){ char no[13]; char name[20]; char address[100]; char tel_no[12]; char post_code[7]; char e_mail[40]; strcpy(st[j+1].no,no); strcpy(name,st[j].name);strcpy(st[j].name,st[j+1].name);strcpy(st[j+1].name,name); strcpy(address,st[j].address); } for(int k=0;k<35;k++){ int x=0;if(strcmp(st[k].no,“0”)) } } strcpy(st[j].address,st[j+1].address);strcpy(st[j+1].address,address); strcpy(tel_no,st[j].tel_no);strcpy(st[j].tel_no,st[j+1].tel_no);strcpy(st[j+1].tel_no,tel_no); strcpy(post_code,st[j].post_code);strcpy(st[j].post_code,st[j+1].post_code);strcpy(st[j+1].post_code,post_code); strcpy(e_mail,st[j].e_mail);strcpy(st[j].e_mail,st[j+1].e_mail);strcpy(st[j+1].e_mail,e_mail); { } if(x==1){ cout< } } } //按姓名排序 void inter::list2(){ for(int i=0;i<34;i++){ for(int j=0;j<35-i;j++){ if(strcmp(st[j].name,st[j+1].name)>0){ char no[13]; char name[20]; char address[100]; char tel_no[12]; char post_code[7]; char e_mail[40]; strcpy(no,st[j].no);strcpy(st[j].no,st[j+1].no);strcpy(st[j+1].no,no); strcpy(name,st[j].name);strcpy(st[j].name,st[j+1].name);strcpy(st[j+1].name,name); strcpy(address,st[j].address); } for(int k=0;k<35;k++){ } } strcpy(st[j].address,st[j+1].address);strcpy(st[j+1].address,address); strcpy(tel_no,st[j].tel_no);strcpy(st[j].tel_no,st[j+1].tel_no);strcpy(st[j+1].tel_no,tel_no); strcpy(post_code,st[j].post_code);strcpy(st[j].post_code,st[j+1].post_code);strcpy(st[j+1].post_code,post_code); strcpy(e_mail,st[j].e_mail);strcpy(st[j].e_mail,st[j+1].e_mail);strcpy(st[j+1].e_mail,e_mail); } } int x=0;if(strcmp(st[k].no,“0”)){ } if(x==1){ } cout< void inter::format(){ } for(int i=0;i<35;i++){ } strcpy(st[i].address,“0”);strcpy(st[i].e_mail,“0”);strcpy(st[i].name,“0”);strcpy(st[i].no,“0”);strcpy(st[i].post_code,“0”);strcpy(st[i].tel_no,“0”); (2).工作流程图: 1.通讯录主界面 2.添加:添加通讯录记录 3.显示:查询通讯录记录 4.删除:删除通讯录记录 5.修改:修改通讯录记录 小结(收获和建议)这次的程序实设计实验是对我们进入大学以来学习程序设计语言结果的一次大检验,面对许多不懂得知识,通过他人的帮助,以及参考他人的成果,自己动手尝试,修改等,才完成。这个课程设计,花费了我近两个星期的时间,这也是因为书本不熟悉。通过这次设计,使我对《C语言》这门课程有了更深一步的了解。它不仅是计算机程序设计的重要理论技术基础,也在我们电子与信息专业的学习中占据着十分重要的地位。同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。利用计算机来编写程序,也让我感受到了编程的乐趣,极大的激发了我的兴趣。 摘 要 为了人们对他人信息的记忆方便而设计,开发的一套“通讯录管理系统“软件。通过该题目的设计过程,可以培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,针对c语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。得到软件工程的综合训练,提高解决实际问题的能力。 关键字:信息;管理;实用 Abstract Designed for people to others the memory of information convenient, developed a set of “mail list management system” software.Through the design process of this subject, students can be structured programming ideas, deepen our understanding of the advanced language basic language elements and control the understanding of the structure, conduct training for emphasis and difficulty in C language, independently complete the program design has a certain work tasks, while emphasizing the good programming style.Comprehensive training in software engineering, improving the ability to solve practical problems.Keywords: Information;management;practical 目 录 概述.........................................................................1 1.1设计目的..................................................................1 1.2设计要求..................................................................1 1.3系统功能需求分析..........................................................2 2 总体设计.....................................................................3 2.1总体功能模块图............................................................3 2.2程序的数据设计............................................................4 3详细设计.....................................................................5 3.1功能及工作流程图..........................................................5 3.2源程序代码................................................................8 4调试分析....................................................................19 4.1测试.....................................................................19 4.2问题思考与调试:.........................................................27 5总结........................................................................28 参考文献......................................................................29 致 谢........................................................................27 概述 1.1设计目的 随着信息社会的高速发展,人与人之间的联系越来越频繁,通讯方式越来越多样化,如何保证与朋友、同学、同事、领导、亲戚等之间的联系,并能方便快捷的查找、记录、修改其相关通讯信息。仅靠以前单独的手工记录已远远不能满足当前的需要。 开发一个通讯录管理系统,借助计算机可以方便、快捷、灵活的管理个人的朋友及相关人员的通讯信息,了解友人相关信息,帮助与友人保持联络。 所以设计一个通讯录管理系统管理各人的通讯信息是是非必要的。 设计“通讯录管理系统”使其具有数据插入、修改、删除、显示和查询等功能。(1)数据包括:人名、工作单位、电话号码和E-mail地址。(2)可对记录中的姓名和电话号码进行修改。(3)可增加或删除记录。(4)可显示所有保存的记录。(5)可按人名或电话号码进行查询。 1.2设计要求 建立通讯录信息,信息至少包含姓名、住址、单位、固定电话、移动手机、分类(如同事、朋友、同学、家人等)、E-mail、QQ等。 该系统提供添加、删除、修改和查找功能,其中按姓名方式删除、修改,按姓名、单位、分类方式查找。 将通讯录保存在文件中。能够输出通讯录中的信息。 1.3系统功能需求分析 主要包含一下多种功能: 添加:添加通讯录记录 显示:显示通讯录记录 删除:删除通讯录记录 查询:查询通讯录记录 修改:修改通讯录记录 保存:将信息保存到文件 本系统为通讯录管理系统,可由用户自由添加,删除和修改信息,还可以将通讯录信息导出到文本文档,极大的方便了用户的使用。 总体设计 思路:我们首先设计出了主函数,然后根据去要实现的功能分别设计录入联系人信息、浏览、查询、修改、删除功能的子函数。删除函数的设计是首先从文件内找到要删除的人,然后通过写一个实现删除目的的FOR循环实现删除。修改也大体和删除相同,添加函数在设计时通过申请一片空间,然后通过指针将需要添加的信息添加进去,从而实现添加功能。 2.1总体功能模块图 图2.1 总体功能模块图 添加:可以添加通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱后,会提示是否继续添加。 显示:可以以表格形式输出所有通讯录里的记录。 删除:输入欲删除的那个人的名字后,会自动删除他(她)的记录内容。查询:可以选择用姓名、电话、地址三种方式查询。 修改:输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱即可完成修改。 保存:输入文件名(带后缀名)后,即可将通讯录信息保存到文件。运行所需环境:win7及以下各版本windows,visual C++6.0。2.2程序的数据设计 该系统用下面六个功能模块编写,每个模块执行不同的功能,体现了模块化设计的思想。下面六个模块都是利用C语言文件,向文件中追加数据、修改数据、查询数据和除数据。 创建:用fopen()建立一个文本文件,然后用fprintf()向其中输入数据(例如,向文件中输入“姓名”,“地址”等),并对文件进行命名。 添加:可以添加通讯录记录,利用C语言文件,向文件中按顺序输入姓名、住址、单位、固定电话、手机号码、分类(如同事、朋友、同学、家人等)、E-mail、QQ,再用fclose()函数关闭并保存文件。 输出:也是用通过循环依次输出文件中的数据,即输出所有通讯录里的记录。删除:输入你要删除的人的姓名后,系统会自动删除他(她)的记录,在删除通过switch语句满足提示你确认删除的功能,只有等你确认删除后才会删除。查找:为了满足用户的实际需求,设计了三种查询方式,可以用姓名、单位、分类三种方式查找通讯录记录。这里用到strcmp()函数,通过比较字符串是否相同来判别是否找到相关信息,找到后,就把文件中的数据赋给对应的变量,再把变量所带的值输出到屏幕上。 修改:输入你要修改的那个人的姓名后,系统会查找该通讯录文件(此时用发ftell()函数来跟踪文件指针的指向地址,找到个人的记录后,会显示他(她)的记录,然后通过fseek()函数来找到修改处的地址,然后用户再依次输入他(她)的相关信息来替代以前的记录。 保存:用到fclose()函数,每次操作成功后会自动保存到指定的文件中。 3详细设计 3.1功能及工作流程图 ①添加:添加通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱后,会提示是否继续添加。 图3.1(1)添加流程图 ②显示:以表格形式输出所有通讯录里的 图3.1(2)显示流程图 ③删除::输入欲删除的那个人的名字后,会自动删除他(她)的记录内容。 图3.1(3)删除流程图 ④查询:可以选择用姓名、电话、地址三种方式查询。 图3.1(4)查询流程图 ⑤修改:输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱即可完成修改。 图3.1(5)修改流程图 3.2源程序代码 #include typedef struct Person pe[80]; int menu_select() { char c;do{ system(“cls”); printf(“tt *****通讯录***** n”); printf(“tt┌───────┐n”); printf(“tt│ 1.添加记录 │n”);printf(“tt│ 2.显示记录 │n”);printf(“tt│ 3.删除记录 │n”);printf(“tt│ 4.查询记录 │n”);printf(“tt│ 5.修改记录 │n”);{ char score; /*编号*/ char name[10]; /*姓名*/ char num[15]; /*号码*/ char email[20];char age[8];char adds[20]; /*邮箱*/ /*年龄*/ /*住址*/ }Person; } printf(“tt│ 6.保存记录 │n”);printf(“tt│ 0.退出程序 │n”);printf(“tt└───────┘n”);printf(“tt请您选择(0-6):”);c=getchar(); }while(c<'0'||c>'6');return(c-'0'); int Input(Person per[],int n){ gets(x); int i=0; char sign,x[10]; while(sign!='n'&&sign!='N'){ printf(“t编号:”); scanf(“t%d”,&per[n+i].score);printf(“t姓名:”); scanf(“t%s”,per[n+i].name);printf(“t年龄:”);scanf(“t%s”,per[n+i].age);printf(“t电话号码:”);scanf(“t%s”,per[n+i].num);printf(“t通讯住址:”);scanf(“t%s”,per[n+i].adds);printf(“t电子邮箱:”);scanf(“t%s”,per[n+i].email); } } printf(“nt是否继续添加?(Y/N)”);scanf(“t%c”,&sign);i++; return(n+i); void Display(Person per[],int n) { int i; printf(“--------n”); /*格式*/ printf(“%-5d%-8s%-6s%-13s%-15s%-15sn”,per[i-1].score,per[i-1].name,per[i-1].age,perprintf(“编号 姓名 年龄 电话号码 通讯地址 电子邮箱n”);printf(“--------n”); for(i=1;i { [i-1].num,per[i-1].adds,per[i-1].email); } printf(“--------n”);system(“pause”);if(i>1&&i%10==0) { } printf(“t----n”);printf(“t”);system(“pause”); printf(“t----n”);} int Delete_a_record(Person per[],int n){ } char s[20];int i=0,j; printf(“t请输入想删除记录中的名字:”);scanf(“%s”,s); while(strcmp(per[i].name,s)!=0&&i } for(j=i;j } printf(“ttt已经成功删除!n”);return(n-1);strcpy(per[j].num,per[j+1].num);strcpy(per[j].name,per[j+1].name);strcpy(per[j].age,per[j+1].age);strcpy(per[j].adds,per[j+1].adds);strcpy(per[j].email,per[j+1].email);per[j].score=per[j+1].score;printf(“t通讯录中没有此人!n”);return(n);void Query_a_record(Person per[],int n){ int m;printf(“tn请选择查询方式:n”); printf(“t┌──────┐n”); printf(“t│1------姓名 │n”); printf(“t│2------电话 │n”); printf(“t│3------地址 │n”); printf(“t│4------返回 │n”); printf(“t└──────┘n”); printf(“请选择:”); scanf(“%d”,&m); while(m!=1&&m!=2&&m!=3&&m!=4) { if(m==1){ char s[20];int i=0; printf(“t请输入想查询的姓名:”);scanf(“t%s”,s); while(strcmp(per[i].name,s)!=0&&i } printf(“输入错误,请重新选择:”);scanf(“%d”,&m); };} return; printf(“t此人编号: %dn”,per[i].score);printf(“t此人年龄: %sn”,per[i].age);printf(“t电话号码: %sn”,per[i].num);printf(“t通讯地址: %sn”,per[i].adds);printf(“t电子邮箱: %sn”,per[i].email);if(m==2){ char s[20];int i=0; printf(“t请输入想查询的电话:”);scanf(“t%s”,s); while(strcmp(per[i].num,s)!=0&&i };} printf(“t此人编号: %dn”,per[i].score);printf(“t此人姓名: %sn”,per[i].name);printf(“t此人年龄: %sn”,per[i].age);printf(“t通讯地址: %sn”,per[i].adds);printf(“t电子邮箱: %sn”,per[i].email); } if(m==3){ };char s[20];int i=0; printf(“t请输入想查询的地址:”);scanf(“t%s”,s); while(strcmp(per[i].adds,s)!=0&&i } printf(“t此人编号: %dn”,per[i].score);printf(“t此人姓名: %sn”,per[i].name);printf(“t此人年龄: %sn”,per[i].age);printf(“t电话号码: %sn”,per[i].num);printf(“t电子邮箱: %sn”,per[i].email);printf(“t通讯录中没有此人!n”);return; void Change(Person per[],int n){ char s[20];int i=0; printf(“t请输入想修改的记录中的名字:”);scanf(“%s”,s); while(strcmp(per[i].name,s)!=0&&i printf(“t通讯录中没有此人!n”); return; } printf(“t编号:”); scanf(“t%d”,&per[i].score); printf(“t姓名:”); scanf(“t%s”,per[i].name); printf(“t年龄:”); scanf(“t%s”,per[i].age);printf(“t电话号码:”); scanf(“t%s”,per[i].num); printf(“t通讯住址:”); scanf(“t%s”,per[i].adds);printf(“t电子邮箱:”);scanf(“t%s”,per[i].email);printf(“t修改成功!”);} void WritetoText(Person per[],int n) { int i=0; FILE *fp; char filename[20]; printf(“t保存到文件n”); printf(“t请输入所保存的文件名:”); scanf(“t%s”,filename); if((fp=fopen(filename,“w”))==NULL) /*定义文件指针*/ /*定义文件名*/ /*输入文件名*/ { } fprintf(fp,“****************************************** 通 讯 录printf(”t无法打开文件n“);system(”pause“);return; ******************************************n”);fprintf(fp,“编号 姓名 年龄 电话号码 通讯地址 电子邮箱n”);; fprintf(fp,“%-3dt%-6st%-3st%-13st%-20st%-20sn”,per[i].score,per[i].name,per[i].agwhile(i ;fprintf(fp,“***************************************共有%d 条记录 } fprintf(fp,”----------------------------n“)i++; ****************************************n”,n); } void main() /*主函数*/ { int n=0;fclose(fp); /*关闭文件*/ printf(“保存成功!n”);for(;;){ switch(menu_select()) { case 1: printf(“nt添加记录到通讯录n”); n=Input(pe,n);break; case 2: printf(“nttt 通讯录记录表n”);Display(pe,n); break; case 3: printf(“nt从通讯录中删除记录n”);n=Delete_a_record(pe,n); printf(“t”); system(“pause”);break; case 4: printf(“nt在通讯录中查找记录n”);Query_a_record(pe,n); printf(“t”); system(“pause”); break; case 5: /*添加记录*/ /*显示记录*/ /*删除记录*/ /*查找记录*/ printf(“nt修改通讯录中的记录n”); Change(pe,n); printf(“t”); system(“pause”); break; case 6: printf(“nt保存功能n”); WritetoText(pe,n); printf(“t”); system(“pause”); break; case 0: printf(“ntt谢谢使用,再见!n”); printf(“ntt”); system(“pause”); exit(0); } } } /*修改数据*/ /*保存数据*/ /*结束程序*/ 4调试分析 调试的意义和目的:在管理信息系统的开发过程中,面对着错综复杂的各种问题,人的主观认识不可能完全符合客观现实,开发人员之间的思想交流也不可能十分完善。所以,在管理信息系统开发周期的各个阶段都不可避免地会出现差错。开发人员应力求在每个阶段结束之前进行认真、严格的技术审查,尽可能早的发现并纠正错误,否则等到系统投入运行后再回头来改正错误将在人力、物力上造成很大的浪费,有时甚至导致整个系统的瘫痪。然而,经验表明,单凭审查并不能发现全部差错,加之在程序设计阶段也不可避免还会产生新的错误,所以,对系统进行调试是不可缺少的,是保证系统质量的关键步骤。统计资料表明,对于一些较大规模的系统来说,系统调试的工作量往往占程序系统编制开发总工作量的40%以上。 调试的目的在于发现其中的错误并及时纠正,所以在调试时应想方设法使程序的各个部分都投入运行,力图找出所有错误。错误多少与程序质量有关。即使这样,调试通过也不能证明系统绝对无误,只不过说明各模块、各子系统的功能和运行情况正常,相互之间连接无误,系统交付用户使用以后,在系统的维护阶段仍有可能发现少量错误并进行纠正,这也是正常的。 4.1测试 1).显示的主菜单界面: 图4.1(1)主菜单界面 2).添加界面: 图4.1(2)添加界面 3).显示界面: 图4.1(3)显示界面 4).删除界面: 图4.1(4)删除前界面 删除后,通讯录里的显示记录: 图(4)删除后界面 5).查询界面:以姓名查询方式为例: 图4.1(5)查询界面 6).修改界面: 图4.1(6)修改前界面 修改后,通讯录里的显示记录: 图4.1(6)修改后界面 7).保存界面: 图4.1(7)保存界面 通讯录.txt 文件截图: 图4.1文件截图 4.2问题思考与调试: 1.当我在进行删除、查询、修改、保存等功能时,以查询为例,输入名字按回车后,虽然会显示该人的所有记录,但是显示后,它马上自动消失了,还没来得及等我看内容。因此,向别人请教后,在一些地方加入了system(“pause”);这个语言,用来对某项操作完成后进行暂停。 2.现在这个程序的界面个人感觉很清爽。但在最初,每次进行一项操作,运行窗口里的内容会一直保留着,感觉很杂乱,如下图(添加后,进行显示操作): 图4.2分析图 之后,我去网上寻求解决办法,知道可以使用system(“cls”);这一语句可以解决这个问题,最后,修改成功。5总结 这次的程序实设计实验是对我们进入大学以来学习程序设计语言结果的一次大检验。自己动手,自己发现和解决问题。发现了自己的许多不足。平时没有掌握好的知识在这次实验中彻底暴露出来,经过不断思考,不断查阅资料和上机运行,解决其中大部分问题,当然还存在一些问题没有解决。我相信在以后的学习能够解决好它们。但是,收获还是不小的,我不仅对C的操作有了进一步的掌握,还了解到了程序设计的书写风格及其注释的格式。 当我选择通讯录这个题目时,一开始想运用大量链表及指针来完成,但是在慢慢琢磨之后,觉得这个不一定要用链表,于是改变了编程思路。当然还有不少文件的读写问题,不过还是通过不断测试之后顺利解决了。另外一点要说的就是这个程序用了很多的循环,因此对于循环的控制要十分小心,有时while和do-while的区别也是十分重要的。 还有一点体会就是,书上和老师教的内容是有限的,我们需要不断地靠自己去学习,向他人请教,了解和掌握更多的知识,这样我们才能编出更好的C程序。 总体来说,这次C语言程序设计实验还是比较成功的,虽然最终程序还存在一些不足,但能取得这样的成绩我还是比较高兴的。 最后,要感谢学校为我们提供这次实验机会,也要感谢老师的教导和好心人对我的帮助与支持。 参考文献 [1]谭浩强,张基温。C语言程序设计教程。第三版。北京:高等教育出版社,2006 [2]谭浩强,张基温。C语言习题集与上机指导。第三版。北京:高等教育出版社,2006 [3]谭浩强。C程序设计(第三版)。北京:清华大学,2005 [4]谭浩强。C程序设计(第二版)。北京:清华大学,1999 [5]林建秋,韩静萍,等.C语言程序设计【M】.电子工业出版社,2004.[6]谭浩强.C语言程序设计【M】.清华大学出版社,2006.[7]黄维通.C语言设计教程.清华大学出版社,2005.[8]王成瑞.C语言程序设计.中国水利水电出版社,2005.[9]张基温.C语言程序设计案例教程.清华大学出版社,2004.[10]苏小红,陈惠鹏.C语言大学实用教程【M】.电子工业出版社,2007.致 谢 在这里我要感谢杨书鸿老师,她对我进行了无私的指导和帮助,不厌其烦的帮助进行论文的修改和改进。另外,在校图书馆查找资料的时候,图书馆的老师也给我提供了很多方面的支持与帮助。在此向帮助和指导过我的各位老师表示最中心的感谢!感谢这篇论文所涉及到的各位学者,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写作。感谢我的同学和朋友,在我写论文的过程中给予我很多素材,还在论文的撰写和排版等过程中提供热情的帮助。由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和学友批评和指正! 黑龙江工程学院 第一章 问题分析和任务定义 1.1 问题分析 问题: 编写一个通讯录管理系统。要求包括通讯录建立、增加号码、删除号码、查询号码(按姓名、按号码)、修改号码、号码分组、打印通讯录(全部或分组号码)等功能,并设计主控菜单和子菜单供用户选择要执行的操作。 分析: 实现以下功能: 1)通讯录编辑(添加、删除); 2)按不同的项进行查找; 3)对已存在的通讯录按不同的项排序; 4)将通讯录写入文件; 5)从文件读入通讯录。 1.2 任务定义 创建一个链表,每个节点有姓名和号码以及关系三个信息。增加号码操作为增加节点,删除号码操作为删除节点,查找号码为链表的遍历。每个功能以函数的形式出现,由主控菜单控制。并以文件的形式对号码信息进行保存。 第二章 详细设计 主函数(main()函数)是通过一个多分支语句(switch(i)语句)实现的。显示菜单函数(displaymenu()函数)显示与用户交互的界面。以下是各个模块实现程序各项功能的函数的详细设计: 1、插入新的记录:insert()函数 定义变量,设计loop模块,模块的功能是用来输入记录:输入姓名、性别、电话号码、地址的信息。用for语句查找是否输入了与原有记录相同的记录,用strcmp 函数比较,if 语句判断,如果输入了重复的记录,提示信息:“此记录已存在,请重新输入!”并且用 goto语句返回到loop,重新输入信息。设计一个a模块:键盘输入一个字符,必须是“Y”“y”“N”“n”,否则重新输入。最后if 语句判断变量的值是否重新输入信息,如果输入的是“Y”或“y”,返回到loop,黑龙江工程学院 用户可以输入下一条信息,直到用户输入“N”或“n”返回主界面。每插入一条记录n的值加1。功能的实现见源程序: 2、示好友的信息:display()函数 定义整型变量i用来循环输出记录。分别输出每条记录,并输出记录的个数。 3、查找好友的信息search()函数 定义字符型变量c,字符型数组a,定义loop模块,功能:通过键盘输入要查找的信息。首先显示提示信息:“输入你要查找的好友的姓名”然后从键盘输入姓名。For语句循环内嵌if语句,用strcmp 函数查找信息,并且显示该记录的所有信息,并跳出循环。再用for 语句内嵌if语句判断,如果没有查到显示提示信息:“如果没有查到相关语句,是否重新查找(Y/N)?定义abc模块的功能输入一个字符(“Y”或“y”“N”“n”)用来判断是否重新查找。如果输入“Y”或“y”,则用goto语句返回loop重新查找。否则令i的值为n跳出循环。最后返回主界面。 4、删除好友信息:del()函数 首先定义字符数组、变量和a、b两个goto标识符。在a模块中用scanf函数输入要删除的好友的姓名,用for循环和if 语来实现对好友的查找,如果找到记录末尾,提示查无此人。在b模块中,用来实现删除功能。先确认是否删除,如果键盘输入Y 或y来确认要删除再执行for循环,通过strcmpy函数把后一条记录复制到前一条记录。进行删除记录后,并把原末尾记录数据赋空字符,按任意键删除,按任意键返回主菜单。 5、修改记录:modify()函数 定义了a、b两个goto标识符。在a模块中,用scanf函数输入要修改人的姓名,用for 循环、if语句及strcmp函数找到该姓名的记录,若到记录末尾提示“查无此人”是否继续重新输入姓名,黑龙江工程学院 如果重新输入姓名再用goto语句再执行重新查找。在b模块中,用于修改记录,如果要修改记录则从键盘输入Y或y,用scanf函数来输入新的记录数据来实现修改记录。 6、排序:sort()函数 选择法排序的方法。定义变量i,j,用于循环,定义4个字符型数组,用于替换的中间变量;用两个for循环语句,用strcmp函数比较。按姓名升序排序。比较前一条记录和后一条记录的姓名,如果strcmp函数值大于0,则将这两条记录的所有信息替换,4个字符型数组用作替换的中间变量。最后调用display()(显示结果)显示排序后的结果。 第三章 程序编码 #include 黑龙江工程学院 void format();int back(){ cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”; char back; cin>>back; if(back=='R'||back=='r') return 1; else return 0;} void print(int i){ cout<<“学号:”< cout<<“姓名:”< cout<<“地址:”< cout<<“电话号码:”< cout<<“邮编:”< cout<<“E_MAIL:”< <<“tt★★★★★★★★★★★★★★★★★★★★★★★★★★” < <<“tt※ ※” < <<“tt※ 通 迅 录 ※” < <<“tt※ ※” < <<“tt※ 1.通讯录编辑.4.按序排列.※” < <<“tt※ ※” < <<“tt※ 2.查询联系人.5.将文件读入程序.※” < <<“tt※ ※” < <<“tt※ 3.将资料写入文件.6.格式化(慎用).※” < <<“tt※ ※” < <<“tt★★★★★★★★★★★★★★★★★★★★★★★★★★” < <<“tt ”< <<“ttt选择 :”;cin>>select1;switch(select1) 黑龙江工程学院 { case '1':cout<<“(1)添加:”< cout<<“(2)删除:”< cout<<“(3)修改:”< char select2; cout<<“ 请选择:”< cin>>select2; switch(select2) { case '1':cout<<“ 输入添加的资料:”< char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40]; cout<<“ 输入学号:”< cin>>no; cout<<“ 输入姓名:”< cin>>name; cout<<“ 输入地址:”< cin>>address; cout<<“ 输入电话号码:”< cin>>tel_no; cout<<“ 输入邮编:”< cin>>post_code;cout<<“ 输入E_mail:”< cin>>e_mail; a.add(no,name,address,tel_no,post_code,e_mail); cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”; char back_add; cin>>back_add; if(back_add=='R'||back_add=='r') goto top; else goto bottom; break; case '2':cout<<“ 输入要删除人的姓名:”< char name2[20]; cin>>name2; a.del(name2); cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”; 黑龙江工程学院 “; ”; char back_del; cin>>back_del; if(back_del=='R'||back_del=='r') goto top; else goto bottom; break;case '3':cout<<“ 输入需要修改人的姓名:”< char name3[20]; cin>>name3; if(a.correct(name3)) goto top; else goto bottom; break;} break;case '2':cout<<“(1)根据姓名查找”< cout<<“ 输入姓名: ”; cin>>name4; a.find2(name4); cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): char back_f1;cin>>back_f1;if(back_f1=='R'||back_f1=='r') goto top;else goto bottom;break;case '2':char no4[13];cout<<” 输入学号: “;cin>>no4;a.find1(no4); cout<<” 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): char back_f2;cin>>back_f2; 黑龙江工程学院 “; ”; if(back_f2=='R'||back_f2=='r') goto top; else goto bottom; break;} break;case '3':a.write();cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”;char back_w;cin>>back_w;if(back_w=='R'||back_w=='r') goto top;else goto bottom;break;case '4':cout<<“(1)按学号排序:”< cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): char back;cin>>back;if(back=='R'||back=='r') goto top;else goto bottom;break;case '2':a.list2();cout<<” 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): } char back1;cin>>back1;if(back1=='R'||back1=='r')goto top;else goto bottom;break; 黑龙江工程学院 break;case '5':a.read(); cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”; char back_r; cin>>back_r; if(back_r=='R'||back_r=='r') goto top; else goto bottom; break;case '6':cout<<“ 请确认删除所有资料!(Y/N)”; char select5; cin>>select5; if(select5=='Y'||select5=='y') a.format(); cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”; char back_f; cin>>back_f; if(back_f=='R'||back_f=='r') goto top; else goto bottom; break;} bottom:cout<<“ ★★★★★★★★★★★★★★★★★★★★★★★ ”< void inter::add(char no[13],char name[20],char address[100],char tel_no[12],char post_code[7],char e_mail[40]){ int x=1;for(int i=0;i<35;i++){ if(!strcmp(st[i].no,“0”)) { strcpy(st[i].address,address); strcpy(st[i].e_mail,e_mail); strcpy(st[i].name,name); strcpy(st[i].no,no); strcpy(st[i].post_code,post_code); strcpy(st[i].tel_no,tel_no); x=0; } 黑龙江工程学院 if(x==0) break;} } //删除联系人 void inter::del(char name[20]){ int x=1;for(int i=0;i<35;i++){ if(!strcmp(st[i].name,name)) { strcpy(st[i].address,“0”); strcpy(st[i].e_mail,“0”); strcpy(st[i].name,“0”); strcpy(st[i].no,“0”); strcpy(st[i].post_code,“0”); strcpy(st[i].tel_no,“0”); } else x=0;} if(x==0) cout<<“ error:输入姓名错误!”< int inter::correct(char name[30]){ int x;for(int i=0;i<35;i++){ if(!strcmp(st[i].name,name)) x=i;} char select;cout<<“(1)修改姓名:”< 黑龙江工程学院 char name1[30]; cin>>name1; strcpy(st[x].name,name1); cout<<“ 修改成功!”< return back(); break;case '2':cout<<“ 输入要修改的学号:”; char no1[13]; cin>>no1; strcpy(st[i].no,no1); cout<<“ 修改成功!”< return back(); break;case '3':cout<<“ 输入要修改的地址:”; char address1[100]; cin>>address1; strcpy(st[x].address,address1); cout<<“ 修改成功!”< return back(); break;case '4':cout<<“ 输入要修改的邮编:”; char post_code1[7]; cin>>post_code1; strcpy(st[x].post_code,post_code1); cout<<“ 修改成功!”< return back(); break;case '5':cout<<“ 输入要修改的电话号码:”; char tel_no1[12]; cin>>tel_no1; strcpy(st[x].tel_no,tel_no1); cout<<“ 修改成功!”< return back(); break;case '6':cout<<“ 输入要修改的E_MAIL:”; char e_mail1[40]; cin>>e_mail1; strcpy(st[x].e_mail,e_mail1); cout<<“ 修改成功!”< return back(); break;} } //按学号查询联系人 黑龙江工程学院 void inter::find1(char no[13]){ int x,y=1,z=1;for(int i=0;i<35;i++){ if(!strcmp(st[i].no,no)) { x=i; z=0; } else y=0; if(z==0) break;} if(y==0) cout<<“ 输入的学号查找不到!!”< } //按姓名查询联系人 void inter::find2(char name[20]){ int x,y=1,z=1;for(int i=0;i<35;i++){ if(!strcmp(st[i].name,name)) { x=i; z=0; } else y=0; if(z==0) break;} if(y==0) cout<<“ 输入的姓名查找不到!!”< void inter::read(){ char name1[20];cout<<“ 输入你要导入的文件名: ”;cin>>name1; 黑龙江工程学院 strcat(name1,“.txt”);ifstream file(name1);char line[120];char no[120];char name[120];char address[120];char post_code[120];char tel_no[120];char e_mail[120];int time=0;file.getline(line,120);while(!file.eof()){ for(int k=0;k<35;k++){ if(time==0) { strcpy(no,line); time=1; for(int i=0;i<120;i++) { if(no[i]==':') { i++; for(int j=0;j<13;j++) { st[k].no[j]=no[i]; i++; } } } file.getline(line,120,'n'); } if(time==1){ strcpy(name,line); time=2; for(int i=0;i<120;i++) { if(name[i]==':') { i++; for(int j=0;j<20;j++) { 黑龙江工程学院 st[k].name[j]=name[i]; i++; } } } file.getline(line,120,'n');} if(time== 2){ strcpy(address,line);time=3;for(int i=0;i<120;i++){ if(address[i]==':') { i++; for(int j=0;j<100;j++) { st[k].address[j]=address[i]; i++; } } } file.getline(line,120,'n');} if(time==3){ strcpy(tel_no,line);time=4;for(int i=0;i<120;i++){ if(tel_no[i]==':') { i++; for(int j=0;j<12;j++) { st[k].tel_no[j]=tel_no[i]; i++; } } } file.getline(line,120,'n');} 黑龙江工程学院 if(time==4) { strcpy(post_code,line); time=5; for(int i=0;i<120;i++) { if(post_code[i]==':') { i++; for(int j=0;j<7;j++) { st[k].post_code[j]=post_code[i]; i++; } } } file.getline(line,120,'n'); } if(time==5) { strcpy(e_mail,line); time=0; for(int i=0;i<120;i++) { if(e_mail[i]==':') { i++; for(int j=0;j<40;j++) { st[k].e_mail[j]=e_mail[i]; i++; } } } file.getline(line,120,'n'); } } } file.close();} //写入文件 void inter::write(){ char name[20]; 黑龙江工程学院 cout<<“ 输入要保存的文件名 ”;cin>>name;strcat(name,“.txt”);ofstream savefile(name);for(int i=0;i<35;i++){ savefile << “学号:”< savefile << “姓名:”< savefile << “地址:”< savefile << “电话号码:”< savefile << “邮编:”< savefile << “E_MAIL:”< void inter::list1(){ for(int i=0;i<34;i++){ for(int j=0;j<35-i;j++) { if(strcmp(st[j].no,st[j+1].no)>0) { char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40]; strcpy(no,st[j].no); strcpy(st[j].no,st[j+1].no); strcpy(st[j+1].no,no); strcpy(name,st[j].name); strcpy(st[j].name,st[j+1].name); strcpy(st[j+1].name,name); strcpy(address,st[j].address); strcpy(st[j].address,st[j+1].address); strcpy(st[j+1].address,address); strcpy(tel_no,st[j].tel_no); 黑龙江工程学院 strcpy(st[j].tel_no,st[j+1].tel_no); strcpy(st[j+1].tel_no,tel_no); strcpy(post_code,st[j].post_code); strcpy(st[j].post_code,st[j+1].post_code); strcpy(st[j+1].post_code,post_code); strcpy(e_mail,st[j].e_mail); strcpy(st[j].e_mail,st[j+1].e_mail); strcpy(st[j+1].e_mail,e_mail); } } } for(int k=0;k<35;k++){ int x=0; if(strcmp(st[k].no,“0”)) { print(k); x=1; } if(x==1) { cout< cout<<“---------------”< } } } //按姓名排序 void inter::list2(){ for(int i=0;i<34;i++){ for(int j=0;j<35-i;j++) { if(strcmp(st[j].name,st[j+1].name)>0) { char no[13];char name[20];char address[100];char tel_no[12];char post_code[7]; 黑龙江工程学院 char e_mail[40]; strcpy(no,st[j].no); strcpy(st[j].no,st[j+1].no); strcpy(st[j+1].no,no); strcpy(name,st[j].name); strcpy(st[j].name,st[j+1].name); strcpy(st[j+1].name,name); strcpy(address,st[j].address); strcpy(st[j].address,st[j+1].address); strcpy(st[j+1].address,address); strcpy(tel_no,st[j].tel_no); strcpy(st[j].tel_no,st[j+1].tel_no); strcpy(st[j+1].tel_no,tel_no); strcpy(post_code,st[j].post_code); strcpy(st[j].post_code,st[j+1].post_code); strcpy(st[j+1].post_code,post_code); strcpy(e_mail,st[j].e_mail); strcpy(st[j].e_mail,st[j+1].e_mail); strcpy(st[j+1].e_mail,e_mail); } } } for(int k=0;k<35;k++){ int x=0; if(strcmp(st[k].no,“0”)) { print(k); x=1; } if(x==1) { cout< cout<<“-------”< } } 黑龙江工程学院 } //格式化 void inter::format(){ for(int i=0;i<35;i++){ strcpy(st[i].address,“0”); strcpy(st[i].e_mail,“0”); strcpy(st[i].name,“0”); strcpy(st[i].no,“0”); strcpy(st[i].post_code,“0”); strcpy(st[i].tel_no,“0”);} } 第四章 程序调试与测试 运行程序,首页显示如下: 按1选择通讯录编辑,编辑通讯录,显示(1)添加,(2)删除,(3)修改,运行后结果如下: 黑龙江工程学院 第一次使用,按1添加联系人,填入相关信息,运行图如下: 返回首页,按2可以查找联系人,可以根据姓名查找和学号查找,本次运用学号查找,运行如下: 返回首页,按4可以进行排序,可以根据姓名和学号排序,按姓名排序需要自己编辑的姓氏排序规则才能使用,本次使用学号排序,运行如下: 将资料写入文件功能是将编辑好的通讯录写入文本文件,文本文件的名字可以自己输入。将文件读入程序,是将文本文件中的信息读入程序,进行添加,修改,删除,排序等功能。 第五章 结果分析 总体上可以满足一般的应用需求,但是还有一定的不足,程序运行流畅,没有未知错误。 第六章 设计创新及心得 黑龙江工程学院 程设计是培养学生综合运用所学知识 ,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C++语言又是最常见,功能最强大的一种高级语言,因此做好C++语言课程设计是十分必要的。 通过几天的课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次真真的做程序设计,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针„„通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。 我做的是班级通讯录的课程设计,虽然是很简单的一个小的程序,但对我来说却是一个很大的困难。更加是第一次做课程设计,所以在机房做了一个下午却丝毫没有进展,最主要是不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听讲。可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。 开始的时候真的感觉编程是一件很无聊的事情,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。又经过几天的努力,终于把程序完成了,尽管程序还是有很多功能上的欠缺和漏洞,可我还是很高兴的。无论如何是自己的劳动成果,是自己经过努力得到的成绩,同时也是学习C++语言的一次实践作业,自己进步的证明。 在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中,不畏艰难,勇往直前! 1.题目名称 通讯录管理系统 2.基本功能 (1)显示:将所有联系人的信息显示出来(2)查找:按姓名、手机号码、QQ号码进行查找 (3)添加:从键盘上录入联系人的有关信息,包括姓名、手机号码、QQ号码、家庭地址 (4)修改:根据用户需要,修改联系人的指定信息 (5)删除:删除不需要的信息 源代码 #include char number[13];//电话 char qq[11];//qq号 char add[30];//家庭地址 };void ClearScreen()//清屏函数 { system(“cls”);} void printf1()//主界面 { printf(“nnnnttt 欢迎来到通讯录!”);printf(“nntt 请选择操作:”);printf(“nnttt1.显示通讯录”);printf(“nttt2.查找通讯录”);printf(“nttt3.添加通讯录”);printf(“nttt4.修改通讯录”);printf(“nttt5.删除通讯录”);printf(“nttt6.退出n”);} void printf2()//修改页面 { printf(“请选择操作:n”);printf(“t1.按姓名查找n”);printf(“t2.按手机号码查找n”);printf(“t3.按QQ号码查找n”);printf(“t4.返回上一页n”);} void Show()//显示函数 { struct Per * p,person;FILE *fp;int i=0;p=&person;ClearScreen();printf(“姓名tt 电话t QQt 家庭地址nn”);if((fp=fopen(“aa.txt”,“r”))==NULL){ printf(“cannot open filen”);exit(0);} while(!feof(fp)&&fread(p,LEN,1,fp)){ printf(“%-17s%-13s%-11s%-30sn”,p->name,p->number,p->qq,p->add); i++;} if(i==0) printf(“没有联系人n”);else printf(“ntttttt共有%d位联系人n”,i);fclose(fp);printf(“n按回车键返回上一页”);getchar();getchar();} void Seek()//查找 { char name[17],tel[13],qq[11];int n,i;FILE *fp;struct Per * p,person;p=&person;fp=fopen(“aa.txt”,“r”);while(1){ rewind(fp);ClearScreen();printf2();printf(“请选择您的操作:n”);scanf(“%d”,&n);if(n==1){ i=0; ClearScreen(); printf(“请输入要查找的联系人的姓名:n”); scanf(“%s”,name);while(!feof(fp)){ fread(p,LEN,1,fp); if(strcmp(name,p->name)==0) { i++; if(i==1) { printf(“姓名tt 电话t QQt 家庭地址nn”);} printf(“%-17s%-13s%-11s%-30sn”,p->name,p->number,p->qq,p->add); memset(p,0,LEN); } } if(i==0)printf(“没有该联系人的信息n”); printf(“n按回车键返回上一页”);getchar();getchar();} else if(n==2){ i=0;ClearScreen();printf(“请输入要查找的手机号码:n”);scanf(“%s”,tel);while(!feof(fp)){ fread(p,LEN,1,fp);if(strcmp(tel,p->number)==0){ i++; if(i==1) { printf(“姓名tt 电话t QQt 家庭地址 nn”);} printf(“%-17s%-13s%-11s%-30sn”,p->name,p->number,p->qq,p->add); memset(p,0,LEN); } } if(i==0)printf(“没有该联系人的信息n”);printf(“n按回车键返回上一页”);getchar();getchar(); } else if(n==3){ i=0;ClearScreen();printf(“请输入要查找的QQ号码:n”);scanf(“%s”,qq);while(!feof(fp)){ fread(p,LEN,1,fp); if(strcmp(qq,p->qq)==0) { i++; if(i==1) { printf(“姓名tt 电话t QQt 家庭地址nn”);} printf(“%-17s%-13s%-11s%-30sn”,p->name,p->number,p->qq,p->add); memset(p,0,LEN); } } if(i==0) printf(“没有该联系人的信息n”); printf(“n按回车键返回上一页”);getchar();getchar(); } else if(n==4) break;} fclose(fp);getchar();} void Add()//添加函数 { int n;FILE *fp;struct Per * p,person;p=&person; printf(“请选择您的操作 1 添加 2 返回上一页nn”);scanf(“%d”,&n);if(n!=1&&n!=2){ printf(“请选择您的操作 1 添加 2 返回上一页n”);scanf(“%d”,&n);} while(n==1){ memset(p,0,LEN);//机构体的初始化 ClearScreen();fp=fopen(“aa.txt”,“a”);printf(“请输入姓名n”);scanf(“%s”,p->name);printf(“请输入手机号码n”);scanf(“%s”,p->number);printf(“请输入qq(没有请输入无)n”);scanf(“%s”,p->qq);printf(“请输入地址n”);scanf(“%s”,p->add); fwrite(p,LEN,1,fp);fclose(fp);printf(“保存成功!n”);printf(“您想 1继续添加 2退出n”);scanf(“%d”,&n);if(n!=1&&n!=2) { printf(“请选择您的操作 1 添加 2 退出nn”);scanf(“%d”,&n); } } } void Alter()//修改 { char name[17],tel[13],qq[11],add[30];int n,len,i=0;FILE *fp;struct Per *p,person;p=&person;fp=fopen(“aa.txt”,“r+”);printf(“请输入要修改的联系人的姓名n”);scanf(“%s”,name);while(!feof(fp)&&fread(p,LEN,1,fp)){ if(strcmp(name,p->name)==0) { i++; len=ftell(fp);printf(“n姓名tt 电话t QQt 家庭地址nn”); printf(“%-17s%-13s%-11s%-30sn”,p->name,p->number,p->qq,p->add); } } printf(“n”);if(i==0){ printf(“没有该联系人的信息n”);getchar(); printf(“按回车键返回主菜单n”);} else { printf(“1.修改该联系人的姓名n”);printf(“2.修改该联系人的手机号码n”);printf(“3.修改该联系人的QQ号码n”);printf(“4.修改该联系人的家庭地址n”);printf(“5.修改该联系人的全部信息n”); printf(“6.返回上一页nn”);printf(“请输入您的操作序号n”);scanf(“%d”,&n); switch(n) { case 1: ClearScreen();fseek(fp,len-71,SEEK_SET);printf(“请输入姓名n”);scanf(“%s”,name); fwrite(&name,sizeof(name),1,fp);printf(“修改成功n”); printf(“按回车键返回主菜单n”);getchar(); break; case 2: ClearScreen();fseek(fp,len-54,SEEK_SET);printf(“请输入手机号码n”);scanf(“%s”,tel); fwrite(&tel,sizeof(tel),1,fp);printf(“修改成功n”); printf(“按回车键返回主菜单n”);getchar(); break; case 3: ClearScreen();fseek(fp,len-41,SEEK_SET);printf(“请输入qq号码n”);scanf(“%s”,qq); fwrite(&qq,sizeof(qq),1,fp);printf(“修改成功n”); printf(“按回车键返回主菜单n”);getchar(); break; case 4: ClearScreen();fseek(fp,len-30,SEEK_SET);printf(“请输入家庭地址n”);scanf(“%s”,add); fwrite(&add,sizeof(add),1,fp);printf(“修改成功n”); printf(“按回车键返回主菜单n”);getchar(); break; case 5: ClearScreen();fseek(fp,len-71,SEEK_SET); printf(“请输入姓名n”);scanf(“%s”,p->name);printf(“ 请 输 入 手 机 号 码n”);scanf(“%s”,p->number);printf(“请输入n”);scanf(“%s”,p->qq);printf(“请输入地址n”);scanf(“%s”,p->add);fwrite(p,LEN,1,fp);printf(“修改成功n”); printf(“按回车键返回主菜单n”);getchar(); break; case 6:; } } fclose(fp);getchar(); } qq(没有请输入无)void Delete()//删除 { int i=0,j,l;char name[17];struct Per * p,person;FILE *fp,*fp1;p=&person;fp=fopen(“aa.txt”,“a+”);printf(“请输入要删除的联系人的姓名n”);scanf(“%s”,name);while(!feof(fp)&&fread(p,LEN,1,fp))//显示要删除的联系人的信息 { if(strcmp(name,p->name)==0) { i++; if(i==1) {printf(“姓名tt 电话t QQt 家庭地址nn”);} printf(“%-17s%-13s%-11s%-30sn”,p->name,p->number,p->qq,p->add); memset(p,0,LEN); } } rewind(fp);if(i==0)printf(“没有该联系人的信息n”);else { printf(“n此联系人将被删除n”); printf(“1.确定 2.取消n”); scanf(“%d”,&j); if(j==1) { fp1=fopen(“bb.txt”,“a”); while(!feof(fp)&&fread(p,LEN,1,fp)) { if(strcmp(name,p->name)!=0) { fwrite(p,LEN,1,fp1); } } fclose(fp); fclose(fp1); remove(“aa.txt”); rename(“bb.txt”,“aa.txt”); printf(“n该联系人已删除 按回车键返回上一页n”);getchar();getchar(); } if(j==2) { fclose(fp);printf(“n按回车键返回上一页n”);getchar();getchar(); } } } int Select()//主菜单输入 { int n;printf(“选择您想要的操作 请输入序号!n”);scanf(“%d”,&n);while(n<1||n>6){ printf(“输入错误,请重新输入!n”); scanf(“%d”,&n); } return(n);} int main(){ while(1){ ClearScreen(); printf1(); switch(Select()){ case 1:ClearScreen();Show();break; case 2:ClearScreen();Seek();break; case 3:ClearScreen();Add();break; case 4:ClearScreen();Alter();break; case 5:ClearScreen();Delete();break; case 6:exit(0);} } return 0;}第三篇:通讯录管理系统
第四篇:C++通讯录管理系统
第五篇:通讯录管理系统