任务14 开发基于Access的通讯录程序
- 格式:ppt
- 大小:825.50 KB
- 文档页数:44
一、设计任务书1)复习、巩固C语言的基础知识,进一步加深对C语言的理解和掌握;2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。
提高学生适应实际,实践编程的能力;3)培养学生在项目开发中团队合作精神、创新意识及能力。
4)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;二、本组课题设计一个通讯录管理系统三、程序功能简介该程序具有添加、查找,修改、删除通讯录中各个成员所有信息的功能。
四、主体内容1、设计分析1.1问题提出本人计划编写一个通讯录管理系统,主要用来记录和管理所有联系人的详细联系方式1.2本系统涉及的知识点本系统涉及到所学过的知识点有:编译预处理,函数,循环结构,循环结构,数组,结构体,指针,文件等1.3功能要求1、制作一个通讯录程序,要求可以记录联系人的详细联系方式,包括:姓名,联系电话,居住地所在省份,城市,街道,以及当地邮编2、能根据需要随时在通讯录中添加联系人3、能根据联系人的名字查找他的详细联系方式4、能根据需要修改某联系人的联系方式5、能删除某特定联系人的所有联系方式2、程序结构流程图这里只附部分模块流程图:(1)系统的界面如图1所示(下图)图1 系统的菜单选项2.2、删除模块流程图:如图(2)图(2)删除模块流程图3.各模块的功能及程序说明3.1各模块的功能:* Main模块:根据选单内容实现调用函数* Delete模块:删除通讯录中某人的信息,其程序如下* list模块:显示通讯录中的所有记录3.2程序说明:(1)Main函数/******主函数开始*******/main(){int i;person p[M];int length; /*保存记录长度*/clrscr();/*清屏*/for(;;)/*无限循环*/{switch(menu())()) /*调用主菜单函数,返回值整数作开关语句的条件*/{case 0:length=create(p);break;case 1:list(p,length);break; /*显示全部记录*/case 2:search(p,length);break; /*查找记录*/case 3:length=delete(p,length);break; /*删除记录*/case 4:length=add(p,length); break; /*插入记录*/case 5:exit(0); /*如返回值为5则程序结束*/}}}(2) Delete函数/*删除函数,参数为记录数组和记录条数*/int delete(person t[],int n){char s[20]; /*要删除记录的姓名*/int ch=0;int i,j;printf("please deleted name\n"); /*提示信息*/scanf("%s",s); /*输入姓名*/i=find(t,n,s); /*调用find函数*/if(i>n-1) /*如果i>n-1超过了数组的长度*/printf("no found not deleted\n"); /*显示没找到要删除的记录*/ else{print(t[i]); /*调用输出函数显示该条记录信息*/printf("Are you sure delete it(1/0)\n"); /*确认是否要删除*/scanf("%d",&ch); /*输入一个整数0或1*/if(ch==1) /*如果确认删除整数为1*/{for(j=i+1;j<n;j++) /*删除该记录,实际后续记录前移*/{strcpy(t[j-1].name,t[j].name); /*将后一条记录的姓名拷贝到前一条*/strcpy(t[j-1].units,t[j].units); /*将后一条记录的单位拷贝到前一条*/strcpy(t[j-1].tele,t[j].tele); /*将后一条记录的电话拷贝到前一条*/strcpy(t[j-1].street,t[j].street); /*将后一条记录的街道拷贝到前一条*/strcpy(t[j-1].city,t[j].city); /*将后一条记录的城市拷贝到前一条*/strcpy(t[j-1].provience,t[j].provience); /*将后一条记录的省份拷贝到前一条*/strcpy(t[j-1].num,t[j].num); /*将后一条记录的邮编拷贝到前一条*/}n--; /*记录数减1*/}}return n; /*返回记录数*/}(3)List函数/*显示记录,参数为记录数组和记录条数*/void list(person t[],int n){int i;clrscr();printf("\n\n*******************ADDRESS******************\n");printf("name unit telephone street city provience num\n");printf("------------------------------------------------\n");for(i=0;i<n;i++)printf("%-20s%-30s%-10s%-20s%-20s%-20s%-20s\n",t[i].name,t[i].units,t[i].tele,t[i].street,t[i].city,t[i].provience,t[i].num);if((i+1)%10==0) /*判断输出是否达到10条记录*/{printf("Press any key continue...\n"); /*提示信息*/getch();/*压任意键继续*/}printf("************************end*******************\n");}4、试验结果『含输入数据和输出结果』通过很多次的实验,本程序(源程序在程序清单中)终于可以正常运行,任何一项功能都能顺利实现5、设计体会以前不曾做过课程设计,因此在做课程设计时遇到了很大的困难,首先是在编写程序时,用的时间很长,并且经过多次运行都不能成功。
⽤c语⾔编写⼀个通讯录代码详解⽬录实现通讯录的思路如下:总结实现通讯录的思路如下:1.程序运⾏起来时⽤户⾸先要看到菜单栏选项并且对应菜单栏所给出的选项做出选择,这⾥我们简单设计⼀个Menu()函数可以让⽤户看见可选项⽬;2.⽤户可选的范围应该是1~7,为了避免⽤户做出超出范围的选择我们可以⽤switch语句来判断⽤户的选择若⽤户输⼊的数字⾮法还可以让⽤户继续选择,⽽继续选择这个动作需要⽤到while语句,⽤户对通讯录的不断操作也需要⽤到while语句;3.⽤户选择不同的选项,程序就要调⽤对应的函数来实现其功能并且我们对switch语句进⾏优化,如果直接对输⼊的数字进⾏判断的话我们还需要对照直接设计的菜单栏选项对捕捉到的⽤户选择做出判断需要不是参考菜单栏,为了解决这个问题,我们⽤枚举的⽅法来提⾼代码的可读性;enum menu{ADD = 1,SHOW,MODIFIES,FIND,DELETE,SORT,EXITS,};4.接下来我们对通讯录的功能⼀⼀实现,不难想到要对通讯录中的联系⼈信息进⾏操作就必须要有存放联系⼈信息的载体,⽽每个联系⼈信息则⼜包含姓名,年龄,性别,电话号码,地址这些信息,所以我们⾸先⾃定义⼀个message类型,然后创建⼀个message数组来存放联系⼈信息,数组的⼤⼩由我们⾃⾏设定最好⽤#define来设定num的⼤⼩可以做到⼀改全改。
#define num 100typedef struct s{int age;char name[10];char number[20];char sex[5];char adress[20];}message;5.添加联系⼈功能:要想添加联系⼈就得对保存所有联系⼈信息的数组进⾏操作并且还要知道把新建的联系⼈信息存⼊数组的第⼏个元素中,所以这个AddMessage函数应该接收这两个参数,考虑到要统计通讯录中联系⼈的个数并且在添加联系⼈成功后该个数应该++,所以在创建联系⼈数组的同时应该同时定义⼀个变量来告诉⼀些功能函数通讯录中联系⼈的个数并且在addMessage这个函数中还需要对这个变量的值进⾏+1操作所以我们应该向这个函数传⼊该变量的地址达到修改变量值的⽬的。
c语言课程设计 通讯录一、课程目标知识目标:1. 理解并掌握C语言结构体和数组的使用,能够运用其创建和操作通讯录。
2. 学习并掌握C语言中的文件操作,实现通讯录数据的保存和读取功能。
3. 掌握C语言中的函数定义和应用,实现通讯录各项功能模块的划分和调用。
技能目标:1. 能够编写C程序,实现通讯录的增加、删除、修改和查询功能。
2. 能够运用所学知识,设计出界面友好、操作简便的通讯录管理系统。
3. 能够对程序进行调试和优化,提高代码的可读性和执行效率。
情感态度价值观目标:1. 培养学生主动探索、积极实践的学习态度,增强其解决实际问题的能力。
2. 培养学生的团队协作精神,学会与他人共同分析问题、解决问题。
3. 通过本课程的学习,使学生认识到编程在生活中的应用价值,激发其对计算机科学的兴趣。
分析课程性质、学生特点和教学要求:本课程为C语言课程设计,旨在巩固和拓展学生所学知识,提高其编程能力。
学生已具备一定的C语言基础,能够独立完成简单的程序编写。
课程要求学生通过动手实践,掌握结构体、数组、文件操作等知识,并能够将其应用于实际项目中。
课程目标明确,分解为具体学习成果,便于教学设计和评估。
在教学过程中,注重培养学生的实际操作能力和团队协作能力,提高其综合素质。
二、教学内容根据课程目标,教学内容主要包括以下几部分:1. C语言基础知识回顾:结构体、数组、函数、文件操作等。
- 结构体:定义、声明、初始化、结构体数组。
- 数组:一维数组、二维数组、字符串与字符数组。
- 函数:函数定义、声明、调用、参数传递。
- 文件操作:文件打开、关闭、读写、定位。
2. 通讯录管理系统功能模块设计:- 系统架构设计:功能模块划分、模块间关系。
- 功能实现:增加、删除、修改、查询、排序等。
3. 编程实践与调试:- 编写代码实现通讯录管理系统各项功能。
- 调试程序,优化代码,提高执行效率。
4. 团队协作与项目展示:- 分组进行项目开发,培养学生团队协作能力。
通讯录系统c 课程设计一、课程目标知识目标:1. 学生能理解通讯录系统的基本概念,掌握其功能结构和设计原理。
2. 学生能掌握运用编程语言(如C语言)实现通讯录系统的基本功能,如添加、删除、查找和修改联系人信息。
3. 学生了解数据结构在通讯录系统中的应用,如链表、结构体等。
技能目标:1. 学生能运用所学知识,独立完成一个简单的通讯录系统设计与实现。
2. 学生通过实践操作,提高编程能力和解决问题的能力。
3. 学生能够运用调试工具进行程序调试,找出并修复程序中的错误。
情感态度价值观目标:1. 学生通过课程学习,培养对计算机编程的兴趣和热情。
2. 学生在学习过程中,养成合作、分享、探究的良好学习习惯。
3. 学生能够认识到编程在生活中的应用价值,激发其进一步学习的动力。
分析课程性质、学生特点和教学要求:本课程为计算机编程课程,以C语言为载体,结合实际生活中的通讯录系统,让学生在实践中掌握编程知识。
学生处于高年级阶段,已具备一定的编程基础,求知欲强,喜欢挑战性任务。
教学要求注重培养学生的动手能力和实际应用能力,将理论知识与实际操作相结合,提高学生的综合素养。
将目标分解为具体的学习成果:1. 学生能够自主设计并实现一个简单的通讯录系统,包括基本功能模块。
2. 学生能够运用所学知识解决实际编程问题,如优化程序性能、修复程序错误等。
3. 学生在学习过程中,能够积极与同学交流合作,分享学习心得和经验。
4. 学生能够通过课程学习,提高自己的编程水平和实际应用能力,为后续学习奠定基础。
二、教学内容1. 通讯录系统基本概念:介绍通讯录系统的定义、功能、应用场景等,使学生对其有一个全面的了解。
2. C语言基础知识回顾:回顾结构体、指针、函数等C语言基础知识,为后续编程打下基础。
3. 数据结构:讲解链表、结构体等数据结构在通讯录系统中的应用,使学生掌握如何利用数据结构组织数据。
4. 编程实现通讯录功能:详细讲解如何用C语言实现通讯录的添加、删除、查找和修改联系人信息等功能,让学生动手实践。
通讯录的制作c语言一、前言通讯录是一个常见的管理工具,它可以帮助我们更好地组织和管理联系人信息。
在日常生活中,我们经常需要制作通讯录来保存联系人信息。
本文将介绍如何使用C语言来制作一个简单的通讯录程序。
二、需求分析在开始编写程序之前,我们需要先确定程序的需求。
通讯录程序需要具备以下功能:1. 添加联系人:输入联系人信息并保存到文件中。
2. 显示所有联系人:从文件中读取所有联系人信息并显示。
3. 查找联系人:根据姓名查找并显示相应的联系人信息。
4. 修改联系人:根据姓名修改相应的联系人信息。
5. 删除联系人:根据姓名删除相应的联系人信息。
三、程序设计1. 文件结构设计为了实现通讯录数据的持久化存储,我们可以将所有联系人信息保存在一个文件中。
文件结构可以设计为以下格式:struct Contact {char name[20]; // 姓名char phone[20]; // 电话号码char email[30]; // 邮箱地址};2. 界面设计为了方便用户操作,我们可以设计一个简单的命令行界面,通过输入数字选择相应功能。
界面可以设计为以下格式:*********************** 通讯录管理系统 ** 1. 添加联系人 ** 2. 显示所有联系人 ** 3. 查找联系人 ** 4. 修改联系人 ** 5. 删除联系人 ** 0. 退出系统 ***********************请选择功能:3. 功能实现根据需求分析,我们需要实现以下功能:1. 添加联系人添加联系人需要输入姓名、电话号码和邮箱地址,并将数据保存到文件中。
可以使用以下代码实现:void addContact() {struct Contact contact;printf("请输入姓名:");scanf("%s", );printf("请输入电话号码:");scanf("%s", contact.phone);printf("请输入邮箱地址:");scanf("%s", contact.email);FILE *fp = fopen("contacts.dat", "ab");fwrite(&contact, sizeof(struct Contact), 1, fp);fclose(fp);printf("添加成功!\n");}2. 显示所有联系人显示所有联系人需要从文件中读取数据并输出到屏幕上。
c通讯录代码课程设计一、课程目标知识目标:1. 让学生掌握通讯录代码的基本结构,理解数据类型、变量、数组等编程概念在通讯录中的应用。
2. 使学生了解通讯录程序的功能模块,如添加、删除、查找和显示联系人等。
3. 帮助学生理解程序设计中输入、输出、条件判断和循环语句的应用。
技能目标:1. 培养学生运用所学编程知识,独立编写通讯录代码的能力。
2. 培养学生通过调试和修改代码,解决程序中存在的问题,提高程序调试能力。
3. 提高学生的团队协作能力,学会在小组合作中共同分析问题、解决问题。
情感态度价值观目标:1. 培养学生对编程学习的兴趣,激发学生的创新意识和探索精神。
2. 培养学生具备良好的编程习惯,注重代码规范和注释,提高代码可读性。
3. 增强学生的自信心,让他们在编程实践中感受到成就感,培养积极向上的学习态度。
课程性质:本课程为信息技术课程,旨在让学生在实际操作中掌握编程知识,提高编程技能。
学生特点:学生为初中年级,已具备一定的计算机操作能力和逻辑思维能力,对编程有一定的好奇心。
教学要求:结合学生特点,采用任务驱动法,以实际案例为主线,引导学生自主探究和协作学习,注重理论与实践相结合,提高学生的编程实践能力。
通过本课程的学习,将目标分解为具体的学习成果,以便于后续教学设计和评估。
二、教学内容1. 通讯录程序概述:介绍通讯录程序的功能、作用及其在生活中的应用,使学生了解编程与日常生活的紧密联系。
2. 编程环境与工具:讲解编程环境(如Visual Studio、VSCode等)的配置和使用,让学生熟悉编程工具。
3. 数据类型与变量:复习基本数据类型(如整型、字符型、字符串型等),讲解变量在通讯录程序中的应用。
4. 数组的使用:介绍数组的概念、声明和初始化,分析如何在通讯录中存储和管理联系人信息。
5. 功能模块设计:- 添加联系人:讲解如何编写添加联系人的功能,包括输入、存储等操作。
- 删除联系人:介绍如何实现删除联系人的功能,学习条件判断语句的应用。
利用制作通讯录〔使用ACCESS数据库〕一、创立应用程序TXL创立基于的Windows应用程序TXL,保存到指定的文件夹下。
二、创立数据库1、创立ACCESS数据库TXL,在数据库中创立表txl,结构如下将表保存到应用程序TXL所在的文件夹下2、可以在数据库中输入测试用的数据三、创立应用程序界面1、创立应用程序界面如下列图所示2、各控件的命名规那么除标签、GroupBox外,其他都是汉语拼音首字母大写,从上到下,从左到右依次为:XM、CSRQ、ZZ、XZZ、QQ1、QQ2、EMail1、EMail2、MSN、ZP、SJL、TJJL、SYT、XGJL、XYT、BCJL、WJL、SCJL四、创立数据连接1、添加OleDbDataAdapter数据适配器翻开窗体设计界面,在工具箱的常栏〔其他栏也可以〕的空白区域单击鼠标右键,选择【选择项】,在弹出的选择工具箱对话框中找到OleDbDataAdapter,如下列图所示先在筛选器中输入ole,然后在对话框中勾选OleDbDataAdapter,单击确定按钮即可。
这时在工具箱的常规栏中多了一个OleDbDataAdapter,如下列图所示:2、添加数据适配器到窗体拖动OleDbDataAdapter控件到窗体,此时会自动弹出数据适配器配置向导对话框,在对话框中单击【新建连接】按钮。
在弹出的添加连接对话框中,单击更改按钮如下列图所示:在弹出的更改数据源对话框中选择Microsoft Access数据库文件,如下列图所示:单击确定按钮,然后出现添加连接对话框,单击浏览按钮找到工程文件夹下刚刚创立的TXL数据库,然后单击测试连接按钮,如果出现测试连接成功字样那么数据源添加成功!!注意:如果测试连接时出现未指定的错误,这时把和Access全部关闭再重新翻开程序,应该可以连接成功,个人感觉应该是并发连接过多的问题单击确定按钮关闭添加连接对话框,此时可以看到如下列图所示的连接字符串,即Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|注意:这里的DataDirectory是指应用程序所在的文件夹,即工程文件夹下的Bin文件夹的下Debug或Release文件夹〔假设应用程序是调试版本那么在Debug下,是发布版那么在Release下〕。
目录摘要 (2)第一章绪论 (2)1.1 选题背景 (2)1.2 目的和意义 (3)1.3 发展现状 (3)第二章系统分析 (4)2.1 系统总体结构分析 (4)2.2数据类型的选择 (4)2.3主要函数原型 (5)2.4 调用到的函数 (5)2.5模块设计与介绍 (6)第三章模块介绍和总体实现 (7)3.1 Add( )增加模块 (7)3.2 dele( )删除模块 (8)3.3 print( )输入模块 (10)3.4 search ( )查找模块 (11)3.5总体实现 (11)第四章调试与测试 (15)总结与心得 (18)附录 (20)1源代码 (20)2参考资料 (27)摘要通讯录管理系统是典型的管理系统(MIS),其开发主要包括数据库的建立和维护前端应用程序的开发两个方面。
对于前者要求建立起数据库一致性和完整性强、数据安全性好的库。
而对于后者则要求应用程序功能完备,易使用等特点。
经过分析,我们使用MICROSOFT公司的VISUAL,BASIC开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。
关键字:通讯录管理信息系统MIS Visual Basic第一章绪论1.1 选题背景当今时代,网络已经成为人们生活中不可缺少的一部分,世界上的第三媒体——Internet ,它打破了地域时间限制,改变了人们的工作和生活方式,制作站点是企业和个人的宣传自己的重要手段,同时也学习信息的重要手段,今年来,随着网络用户要求的不断提高及计算机科学的迅速发展,特别是数据库技术在Internet中的广泛应用,Web站点向用户提供的服务将越来越丰富,越来越人性化.计算机在管理中应用的普及,利用计算机实现各种管理势在必行,对于机关单位来说,利用计算机支持高效率完成通讯录,是适应社会制度要求、推动机关单位信息利用计算机支持高效率完成通讯管理,是适应现在社会制度要求、推动机关单位信息管理走向科学化、规范化的必要条件。
第14章 通讯录为了积累客户,许多网站都会提供一项针对客户管理的功能。
其中最常见的无非是对客户日常联系通讯信息的管理。
借此来达到有效利用和维护网站客户资源的目的。
通讯录功能不仅可作为网站客户管理的工具,也可作为联系客户的快速查询平台。
这些都可满足对网站客户资源最基本的运营。
14.1 通讯录数据库的设计通讯录数据库中需要一个通讯表来记录客户数据,如姓名、联系电话、邮件地址等。
下面就具体来介绍整个通讯录数据库(Access 数据库)的设计流程。
(1)单击【开始】|【程序】|【Microsoft Office 】|【Microsoft Office Access 2003】命令,打开【Microsoft Access 】窗口。
(2)单击【新建文件】|【空数据库】命令,弹出【文件新建数据库】对话框。
可以根据实际情况,保存到相应位置。
并在【文件名】文本框中输入数据库文件名,例如“addressbook .mdb ”,如图14.1所示。
图14.1 【文件新建数据库】对话框(3)单击【创建】按钮,弹出【addressbook :数据库(Access 2000 文件格式)】窗口,如图14.2所示。
·331·图14.2 【addressbook:数据库(Access 2000文件格式)】窗口(4)单击【使用设计器创建表】按钮,弹出【表1:表】设计窗口。
单击【文件】|【保存】命令,把表进行重新命名,例如“tb_addressbook”。
(5)在【tb_addressbook:表】设计窗口中按照表14.1所示定义所有字段信息。
表14.1 【tb_addressbook:表】所有字段信息字段名称数据类型说明id 自动编号客户编号Name 文本客户姓名Tel 文本联系电话address 文本联系地址postalcode 文本邮政编码dt 日期/时间录入时间(6)选择“dt”字段,在【默认值】文本框中输入“now()”。
西安科技大学2009级C++实验报告面向对象技术实验报告(通讯录程序)1.实验目的1.1课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C++语言又是最常见,功能最强大的一种高级语言,因此做好C++语言课程设计是十分必要的。
2.功能简介1.1实现以下功能:1) 通讯录编辑(添加、删除);2) 按不同的项进行查找;3) 对已存在的通讯录按不同的项排序;4) 将通讯录写入文件;5) 从文件读入通讯录。
3.流程图4.代码#include<iostream.h>#include<fstream.h>#include<string.h>struct student //结构体{char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40];};class inter{private:student st[35];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为回到主菜单,不计大小写): ";char back;cin>>back;if(back=='R'||back=='r')return 1;elsereturn 0;}void print(int i){cout<<"学号:"<<st[i].no<<endl;cout<<"姓名:"<<st[i].name<<endl;cout<<"地址:"<<st[i].address<<endl;cout<<"电话号码:"<<st[i].tel_no<<endl;cout<<"邮编:"<<st[i].post_code<<endl;cout<<"E_MAIL:"<<st[i].e_mail<<endl;}};//主函数首页int main(){inter a;a.format();char select1;cout<<endl;top:cout<<"\t\t 通信技术0901 " <<endl <<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★" <<endl<<"\t\t※※" <<endl<<"\t\t※通迅录※" <<endl<<"\t\t※※" <<endl<<"\t\t※ 1. 通讯录编辑. 4. 按序排列 . ※" <<endl<<"\t\t※※" <<endl<<"\t\t※ 2. 查询联系人. 5. 将文件读入程序. ※" <<endl<<"\t\t※※" <<endl<<"\t\t※ 3. 将资料写入文件. 6. 格式化(慎用). ※" <<endl<<"\t\t※※" <<endl<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★" <<endl<<"\t\t"<<endl<<endl<<"\t\t\t选择 :" ;cin>>select1;switch(select1){case '1':cout<<" (1)添加:"<<endl;cout<<" (2)删除:"<<endl;cout<<" (3)修改:"<<endl;char select2;cout<<" 请选择:"<<endl;cin>>select2;switch(select2){case '1':cout<<" 输入添加的资料:"<<endl;char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40];cout<<" 输入学号:"<<endl;cin>>no;cout<<" 输入姓名:"<<endl;cin>>name;cout<<" 输入地址:"<<endl;cin>>address;cout<<" 输入电话号码:"<<endl;cin>>tel_no;cout<<" 输入邮编:"<<endl;cin>>post_code;cout<<" 输入E_mail:"<<endl;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;elsegoto bottom;break;case '2':cout<<" 输入要删除人的姓名:"<<endl;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;elsegoto bottom;break;case '3':cout<<" 输入需要修改人的姓名:"<<endl;char name3[20];cin>>name3;if(a.correct(name3))goto top;else goto bottom;break;}break;case '2':cout<<" (1)根据姓名查找"<<endl;cout<<" (2)根据学号查找"<<endl;char select3;cout<<" 请选择: ";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;elsegoto 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;elsegoto 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;elsegoto bottom;break;case '4':cout<<" (1)按学号排序:"<<endl;cout<<" (2)按姓名排序:"<<endl;cout<<" 请选择:";cin>>select4;switch(select4){case '1':a.list1();cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ";char back;cin>>back;if(back=='R'||back=='r')goto top;elsegoto bottom;break;case '2':a.list2();cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ";char back1;cin>>back1;if(back1=='R'||back1=='r')goto top;elsegoto 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;elsegoto 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;elsegoto bottom;break;}bottom:cout<<" ★★★★★★★★★★★★欢迎使用本软件!★★★★★★★★★★★ "<<endl;return 0;}//添加联系人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:输入姓名错误!"<<endl; }//修改联系人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)修改姓名:"<<endl;cout<<" (2)修改学号:"<<endl;cout<<" (3)修改地址:"<<endl;cout<<" (4)修改邮编:"<<endl;cout<<" (5)修改电话号码:"<<endl;cout<<" (6)修改E_MAIL:"<<endl;cout<<" 请选择:";cin>>select;switch(select){case '1':cout<<" 输入要修改的姓名:";char name1[30];cin>>name1;strcpy(st[x].name,name1);cout<<" 修改成功!"<<endl;return back();break;case '2':cout<<" 输入要修改的学号:";char no1[13];cin>>no1;strcpy(st[i].no,no1);cout<<" 修改成功!"<<endl;return back();break;case '3':cout<<" 输入要修改的地址:";char address1[100];cin>>address1;strcpy(st[x].address,address1);cout<<" 修改成功!"<<endl;return back();break;case '4':cout<<" 输入要修改的邮编:";char post_code1[7];cin>>post_code1;strcpy(st[x].post_code,post_code1);cout<<" 修改成功!"<<endl;return back();break;case '5':cout<<" 输入要修改的电话号码:";char tel_no1[12];cin>>tel_no1;strcpy(st[x].tel_no,tel_no1);cout<<" 修改成功!"<<endl;return back();break;case '6':cout<<" 输入要修改的E_MAIL:";char e_mail1[40];cin>>e_mail1;strcpy(st[x].e_mail,e_mail1);cout<<" 修改成功!"<<endl;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<<" 输入的学号查找不到!!!"<<endl;print(x);}//按姓名查询联系人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<<" 输入的姓名查找不到!!!"<<endl;print(x);}//读取文件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 << "学号:"<<st[i].no<<endl;savefile << "姓名:"<<st[i].name<<endl;savefile << "地址:"<<st[i].address<<endl;savefile << "电话号码:"<<st[i].tel_no<<endl;savefile << "邮编:"<<st[i].post_code<<endl;savefile << "E_MAIL:"<<st[i].e_mail<<endl;}savefile.close();}//按学号排序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<<endl;cout<<"-----------------------------------------------------------------------------"<<endl;}}}//按姓名排序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<<endl;cout<<"---------------------------------------------------------------------"<<endl;}}}//格式化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");}}5.代码分析结构数组:struct student //结构体{char no[13]; //学号char name[20]; //姓名char address[100]; //地址char tel_no[12]; //电话char post_code[7]; //邮编char e_mail[40]; //E-mail}class inter //派生类{private: //派生类增加或替代的私有成员student st[35];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()//成员函数,返回首页void print(int i)//成员函数,输出显示}6.改进措施1)用string指针增加QQ项,显示所有联系人及查询联系人项目,除去格式化项目,以免造成不必要的麻烦。