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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

程序设计语言课程设计通讯录.docx

1、程序设计语言课程设计通讯录程序设计语言课程设计报告通讯录1. 添加2. 查询3. 删除4. 修改5. 排序6. 输出全部信息7. 写入文件8. 读取文件0. 退出程序的主界面1课程设计目的和要求1.1设计要求:基本功能:a) 添加个人信息b) 查询个人信息c) 删除个人信息d) 修改个人信息e) 信息排序f) 输出全部信息 拓展功能: 采用文件形式对通讯录进行操作,包括:g) 写入文件h) 读取文件 创新(自拟)功能:程序实现的其它功能由个人自拟。1.2设计要求具体说明通讯录至少应该有以下数据项:姓名,家庭住址,手机号码,邮编,E-mail。输入信息时要检查数据项手机、邮编、E-mail的合法

2、性,手机号码:11位数字;邮编:6位数字;E-mail:包含字符,且两边都非空。对通讯录应该包含有以下操作(包括基本功能和拓展功能):a) 向通讯录中添加信息;b) 在通讯录中按姓名或手机号查找个人信息;c) 删除通讯录中的个人信息;d) 修改通讯录中的个人信息,并保存入文件;e) 按不同数据项排序后列表输出通讯录中所有人的信息。通讯录中记录的数量没有限制。f) 将通讯录中的数据写入文件和从文件读入数据。程序启动时先从文件读入数据,如果文件中没有数据则给出提示;写入文件时有两种方式,一为覆盖所有原有的内容; 二为只将本次操作所修改的个人信息写入文件g) 程序启动时先从文件读入数据,如果文件中没

3、有数据则给出提示退出程序。 1.3设计提示定义合适的结构体类型,使用链表或数组的方式组织数据。2通讯录概述通讯录包括能够实现添加、查询、删除、修改、排序、输出全部信息以及写入文件、读取文件。这里的学生通讯记录为姓名、家庭地址、手机号码、邮箱、邮编。2.1程序的基本功能a) 添加个人信息b) 查询个人信息c) 删除个人信息d) 修改个人信息e) 信息排序f) 输出全部信息2.2拓展功能:g) 写入文件h) 读取文件3通讯录的分析通讯录程序分析如结构图所示。3.1主程序定义结构体数组,使用循环,让程序能够通过选择进行各种操作。3.2(主界面)输入学生信息输入学生的姓名、手机号码、家庭地址、邮箱、邮

4、编。每次输入学生信息时判断其合法性。 根据要求进入主菜单,并选择其相应的选项(1、显示 2、查询 3、删除 4、插入 5、排序 6、保存 7、退出)进行运行3.3写入文件将所输入的信息以二进制方式存入文件,需输入所选择的文件所在全路径。3.4读取文件读取文件并在屏幕上打印文件所储存的信息,需输入所选择的文件所在全路径。3.5退出退出系统。4通讯录详细设计通讯录设计分为两个部分:一、主函数;二、功能函数。此次设计使用结构体数组的方式编写,定义结构体数组,链表,全局变量,主函数,功能函数。#include#include/主要有malloc,calloc,free,realloc函数时 #incl

5、ude/在运用字符串处理函数时#include /定义结构体typedef struct student/用typedef制定类型名FILE char phonenum15,name20,add35,email10,postcode35; elemtype;/定义结点 或 指定新类型名为 elemtype struct node elemtype data; node * next;/定义整体变量char PRINT=0,DESE=0,SEARCH=0,C;/PRINT=Y表示显示所有时的标志,作为控制空格之用/SEARCH=N表示在通讯录中没找到相应的信息/DESE=D表示使用删除功能时要输

6、出的提示语/DESE=S表示使用查询功能时要输出的提示语/子函数void beginmenu(); /开始菜单void modmenu(); /模式选择void importmenu(); /菜单-导入文件void readfromfile(); /文件导入void createsl(); /产生一个单链表void mainmenu(); /主菜单选择void showall(); /输出单链表void searchmemu(); /查询菜单node* searchnum(); /按序号查询node* searchbynpa(); /按名字、电话号码、地址、邮箱、邮编查询void delete

7、menu(); /删除菜单void deletebynpan(); /按名字、电话号码、地址、序号、邮箱、邮编删除void deleteall(); /删除所有信息void insertmenu(); /插入菜单-插入一条信息(按序号插入)void listmenu(); /排序菜单void savemenu(); /菜单-保存到文件void writetofile(); /写入文件 void exitmenu(); /退出菜单选择用户界面如图所示: %欢迎使用通讯录%*是否导入已有文件TXT.txt - -Y/N- -文本框4.1用户操作界面4.1主程序先定义结构体数组后,用switch循环

8、实现菜单选择。4.2输入学生信息输入姓名、手机号码(11位)、地址、邮箱、邮编(6位),而每次输入的学生信息使用do.whlie判断其合法性。下面举例:void pread(elemtype *x) /fread要设置输入4个信息,而pread可直接读取其中内容 printf(t请输入学生的内容: nn); printf(-姓名:); scanf(%s,x-name); do printf(-手机号码(11位):); scanf(%s,x-phonenum); while(strlen(x-phonenum)!=11); printf(-地址:); scanf(%s,x-add); print

9、f(-邮箱:); scanf(%s,x-email); do printf(-邮编 (6位):); scanf(%s ,x-postcode); while(strlen(x-postcode)!=6); fflush(stdin); /清空缓存;4.3显示、查询、删除、插入、排序学生通讯录信息显示、查询、删除、插入、排序学生通讯录信息的函数结构相似,放在一起来说明。输入学生的姓名、手机号码、地址、邮箱、邮编,用dowhile()确保选择正确,使用switch循环,可以按姓名,手机号码,地址,邮箱,邮编查询(删除、插入、排序)。下面是以查询方式为例的举例:/查询菜单void searchmen

10、u(node *h) DESE=S;/表示使用查询功能时要输出的提示语 if(h-next=NULL) printf(nnntt通讯录为空!); getch(); printf(ntt);return; printf(nntt 查询 ); printf(ntt 1- 按名字查询 2- 按手机号码查询 ); printf(ntt 3- 退出查询 ); get_C(); printf(n); switch(C) case 1: case 2:searchbynpa(h,C);break; case 3:printf(ntt);return; default :error();searchmenu(

11、h);break; DESE=0;删除前的通讯录为: 通讯录序号 姓名 手机号码 地址 邮箱 邮编 1 zhang 11111111111 shanghai 111111111123456 123456共1信息请输入:zhang删除后的通讯录为空请按任意键进入主菜单. . .4.4写入文件、读取文件、保存文件和退出写入文件:定义文件指针,让用户输入储存信息的文件全路径,打开文件(打开文件时,须判断文件是否存在,但因为是写入文件,所以会直接生成一个新文件,但如果原文件已存在,则会在上一次写入后的末尾接下去写),写入信息,关闭文件。读取文件:定义文件指针,让用户输入储存信息的文件全路径,打开文件(

12、打开文件时,须判断文件是否存在,若原文件不存在则打印找不到的字样),/从文件导入void readfromfile(node *h) FILE *fp;/定义文件型指针变量 int i=0; if(fp=fopen(TXL.txt,r)=NULL) /打开输入文件 TXL.txt printf(nntt通讯录文件不存在); if(fp=fopen(TXL.txt,w)=NULL) /打开输出文件 printf(nntt建立失败); exit(0); /终止程序 else printf(nntt通讯录文件已建立); printf(nntt按任意键开始创建通讯录); getch(); *h=NUL

13、L; return; fseek(fp,0,2); /文件位置指针从文件开始移动到文件末尾 if (ftell(fp)0) /文件不为空 node *p,*k; elemtype x; rewind(fp);/使文件位置指针重新置于文件开头 fscanf(fp,%sn,x.name); fscanf(fp,%sn,x.phonenum); fscanf(fp,%sn,x.add); fscanf(fp,%sn,x.email); fscanf(fp,%sn,x.postcode); *h=(node*)malloc(sizeof(node); k=(node*)malloc(sizeof(no

14、de); *h=k; while(!feof(fp)/feof(of)将文件指针重新指向一个流的开头 p=(node*)malloc(sizeof(node);/在内存的动态存储区中分配一块长度为size字节的连续区域。函数的返回值为该区域的首地址。 fscanf(fp,%sn,p-data.name); fscanf(fp,%sn,p-data.phonenum); fscanf(fp,%sn,p-data.add); fscanf(fp,%sn,p-data.email); fscanf(fp,%sn,p-data.postcode); k-next=p; k=p; p-next=NULL

15、; p=p-next; /使p指向下一个结点 printf(nntt文件导入成功); printf(nntt按任意键进入模式选择); getch(); return; printf(nntt文件导入成功); printf(nntt通讯录文件中无任何纪录); printf(nntt按任意键开始创建通讯录); *h=NULL; fclose(fp); getch(); return; 这里使用了while(!feof(fp)判断,使读入数据时避免读入乱码信息,当与文件结束时,feof(fp)=1,!feof(fp)=0时就不再执行while循环。而在fread后面加入if(feof(fp)的判断也

16、是此用意。最后m=f是为了下次输入时,能在文件后面继续写入而加的,因为每次使用结束之后m值会变化。5通讯录程序设计总结5.1完成情况1.本上已经完成基本功能,拓展功能。并进行适当的运行,运行情况良好。2.于时间的原因,还没有更加完善本次通讯录的设计程序。3.能正确的判断邮箱的正确性,导致输出时出现乱码。4.让用户任意选择按姓名,手机号码,地址,邮箱,邮编进行排序,排序可以使用冒泡排序法和指针实现。本程序中使用的是冒泡指针法排序。5.果可以,希望能在程序中添加更多的学生信息,如学生的各科成绩等。5.2遇到的问题及解决1.对手机号码,邮编的位数进行判断时出错,经过不断地运行与实验,解决了此问题,用

17、do.while循环结构进行判断。2.strlen(phonenum)!=11错误的,应为Strlen(x-phonenum)!=113.数组不可或 4.strcpy()用于字符串,int只需赋值5.Break;是跳出循环6.两重循环不用同一变量7.NULL表示“空地址”6程序清单#include#include/主要有malloc,calloc,free,realloc函数时 #include/在运用字符串处理函数时#include /定义结构体typedef struct student/用typedef制定类型名FILE char phonenum15,name20,add35,emai

18、l10,postcode8; elemtype;/定义结点 或 指定新类型名为 elemtype struct node elemtype data; node * next;/定义整体变量char PRINT=0,DESE=0,SEARCH=0,C;/PRINT=Y表示显示所有时的标志,作为控制空格之用/SEARCH=N表示在通讯录中没找到相应的信息/DESE=D表示使用删除功能时要输出的提示语/DESE=S表示使用查询功能时要输出的提示语/子函数void beginmenu(); /开始菜单void modmenu(); /模式选择void importmenu(); /菜单-导入文件vo

19、id readfromfile(); /文件导入void createsl(); /产生一个单链表void mainmenu(); /主菜单选择void showall(); /输出单链表void searchmemu(); /查询菜单node* searchnum(); /按序号查询node* searchbynpa(); /按名字、电话号码、地址、邮箱、邮编查询void deletemenu(); /删除菜单void deletebynpan(); /按名字、电话号码、地址、序号、邮箱、邮编删除void deleteall(); /删除所有信息void insertmenu(); /插入菜单-插入一条信息(按序号插入)void listmenu(); /排序菜单void savemenu(); /菜单-保存到文件void writetofile(); /写入文件 void exitmenu(); /退出菜单选择7参考文献XX知道,XX文献,XX空间,c语言大全,c语言程序设计教程

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

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