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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、通讯录C语言程序设计实验五: 通讯录第一部分 本次上机目标编写程序实现对通讯录的管理,应实现以下功能: 1) 通讯录编辑(添加、删除); 2) 按不同的项进行查找; 3) 对已存在的通讯录按不同的项排序; 4) 将通讯录写入文件; 5) 从文件读入通讯录。任务1:数据类型的创建和变量的准备typedef struct /*定义数据结构*/ char name20; /*姓名*/ char units30; /*单位*/ char tele10; /*电话*/ADDRESS;任务2:各模块函数的设计 int enter(ADDRESS t); /*输入记录*/void list(ADDRESS

2、t,int n); /*显示记录*/void search(ADDRESS t,int n); /*按姓名查找显示记录*/int delete(ADDRESS t,int n); /*删除记录*/int add(ADDRESS t,int n); /*插入记录*/void save(ADDRESS t,int n); /*记录保存为文件*/int load(ADDRESS t); /*从文件中读记录*/void display(ADDRESS t); /*按序号查找显示记录*/void sort(ADDRESS t,int n); /*按姓名排序*/void qseek(ADDRESS t,i

3、nt n); /*快速查找记录*/void copy(); /*文件复制*/void print(ADDRESS temp); /*显示单条记录*/int find(ADDRESS t,int n,char *s) ; /*查找函数*/int menu_select(); /*主菜单函数*/任务3:主函数的设计 用于预期功能的测试。设计要求通过用所学的C语言知识设计出一个尽量接近实际的通讯录管理程序。、1、设计思路(1)分析总结通讯录中数据的构成,并抽象成数据类型;(2)分析通讯录管理中应该具备的功能:输入、输出、查询、修改、显示等;并设计相应的函数以实现该功能;(3)完成对数据的存盘和调取,

4、用函数的形式来确立数据保存与读取的任务;(4)设计并模拟菜单功能,单独设计实现具有菜单功能的函数,并有足够的提示信息;(5)设计主函数用以测试所有功能。2、重点难点重点是对结构体类型的定义和对结构体数组的定义和使用,以及用结构体的指针做函数参数。难点是对文件进行读写操作对于学生来说是比较难的。第二部分 上机任务分阶段完成如下任务阶段1:指导加强对函数分块概念的指导,要求学生尽量保持清晰的思路1、 训练要点对结构体的运用2、需求说明需要全面仔细的分析通讯录管理系统应该具备的功能,通讯录数据应该具有的形式,以及函数间对于通讯录数据的传递方式。3、实现思路以结构体类型为单个通讯录信息实现方式,并采用

5、结构体数组为存储多个通讯录信息的载体,并以函数为单位来实现各个功能。4、程序设计图(1) 框图5、评分标准评分重点放在面向过程设计方法和实际编写代码能力这两个方面。凡是能够基本完成程序设计,画出合理的设计框图,建立基本的代码框架,均视为及格。能够以清晰的思路设计出较为详细的程序流程图,并编写代码实现大部分功能,没有重大语法错误的可以视为良好。如果程序功能完备,运行无误,并在设计上有一定的独到之处,或者编写的代码具有良好的设计风格,规范易读,此类设计视为优秀。6、参考代码/*头文件(.h)*/#include stdio.h /*I/O函数*/#include stdlib.h /*标准库函数*

6、/#include string.h/*字符串函数*/#include ctype.h /*字符操作函数*/#define M 50 /*定义常数表示记录数-宏定义*/typedef struct /*定义数据结构*/ char name20; /*姓名*/ char units30; /*单位*/ char tele10; /*电话*/ADDRESS;/*以下是函数原型*/int enter(ADDRESS t); /*输入记录*/void list(ADDRESS t,int n); /*显示记录*/void search(ADDRESS t,int n); /*按姓名查找显示记录*/in

7、t delete(ADDRESS t,int n); /*删除记录*/int add(ADDRESS t,int n); /*插入记录*/void save(ADDRESS t,int n); /*记录保存为文件*/int load(ADDRESS t); /*从文件中读记录*/void display(ADDRESS t); /*按序号查找显示记录*/void sort(ADDRESS t,int n); /*按姓名排序*/void qseek(ADDRESS t,int n); /*快速查找记录*/void copy(); /*文件复制*/void print(ADDRESS temp);

8、 /*显示单条记录*/int find(ADDRESS t,int n,char *s) ; /*查找函数*/int menu_select(); /*主菜单函数*/*主函数开始*/main() int i; ADDRESS adrM; /*定义结构体数组*/ int length; /*保存记录长度*/ clrscr(); /*清屏*/ for(;)/*无限循环*/ switch(menu_select() /*调用主菜单函数,返回值整数作开关语句的条件*/ case 0:length=enter(adr);break;/*输入记录*/ case 1:list(adr,length);bre

9、ak; /*显示全部记录*/ case 2:search(adr,length);break; /*查找记录*/ case 3:length=delete(adr,length);break; /*删除记录*/ case 4:length=add(adr,length); break; /*插入记录*/ case 5:save(adr,length);break; /*保存文件*/ case 6:length=load(adr); break; /*读文件*/ case 7:display(adr);break; /*按序号显示记录*/ case 8:sort(adr,length);brea

10、k; /*按姓名排序*/ case 9:qseek(adr,length);break; /*快速查找记录*/ case 10:copy();break; /*复制文件*/ case 11:exit(0); /*如返回值为11则程序结束*/ /*菜单函数,函数返回值为整数,代表所选的菜单项*/menu_select() char s80; int c; gotoxy(1,25);/*将光标定为在第25行,第1列*/ printf(press any key enter menu.n);/*提示压任意键继续*/ getch(); /*读入任意字符*/ clrscr(); /*清屏*/ gotox

11、y(1,1); printf(*MENU菜单*nn); printf( 0. Enter recordn); printf( 1. List the filen); printf( 2. Search record on namen); printf( 3. Delete a recordn); printf( 4. add record n); printf( 5. Save the filen); printf( 6. Load the filen); printf( 7. display record on ordern); printf( 8. sort to make new fil

12、en); printf( 9. Quick seek recordn); printf( 10. copy the file to new filen); printf( 11. Quitn); printf(*n); do printf(n Enter you choice(011):); /*提示输入选项*/ scanf(%s,s); /*输入选择项*/ c=atoi(s); /*将输入的字符串转化为整型数*/ while(c11); /*选择项不在011之间重输*/ return c; /*返回选择项,主程序根据该数调用相应的函数*/*输入记录,形参为结构体数组,函数值返回类型为整型表示

13、记录长度*/int enter(ADDRESS t) int i,n; char *s; clrscr(); /*清屏*/ printf(nplease input num n); /*提示信息*/ scanf(%d,&n); /*输入记录数*/ printf(please input record n); /*提示输入记录*/ printf(name unit telephonen); printf(-n); for(i=0;in;i+) scanf(%s%s%s,ti.name,ti.units,ti.tele); /*输入记录*/ printf(-n); return n; /*返回记录

14、条数*/*显示记录,参数为记录数组和记录条数*/void list(ADDRESS t,int n) int i; clrscr(); printf(nn*ADDRESS*n); printf(name unit telephonen); printf(-n); for(i=0;in-1) /*如果整数i值大于n-1,说明没找到*/ printf(not foundn); else print(ti); /*找到,调用显示函数显示记录*/*显示指定的一条记录*/void print(ADDRESS temp) clrscr(); printf(nn*n); printf(name unit t

15、elephonen); printf(-n); printf(%-20s%-30s%-10sn,temp.name,temp.units,temp.tele); printf(*end*n);/*查找函数,参数为记录数组和记录条数以及姓名s */int find(ADDRESS t,int n,char *s) int i; for(i=0;in-1) /*如果in-1超过了数组的长度*/ printf(no found not deletedn); /*显示没找到要删除的记录*/ else print(ti); /*调用输出函数显示该条记录信息*/ printf(Are you sure d

16、elete it(1/0)n); /*确认是否要删除*/ scanf(%d,&ch); /*输入一个整数0或1*/ if(ch=1) /*如果确认删除整数为1*/ for(j=i+1;j=i;j-) /*从最后一个结点开始向后移动一条*/ strcpy(tj+1.name,tj.name); /*当前记录的姓名拷贝到后一条*/ strcpy(tj+1.units,tj.units); /*当前记录的单位拷贝到后一条*/ strcpy(tj+1.tele,tj.tele); /*当前记录的电话拷贝到后一条*/ strcpy(ti.name,temp.name); /*将新插入记录的姓名拷贝到第i

17、个位置*/ strcpy(ti.units,temp.units); /*将新插入记录的单位拷贝到第i个位置*/ strcpy(ti.tele,temp.tele); /*将新插入记录的电话拷贝到第i个位置*/ n+; /*记录数加1*/ return n; /*返回记录数*/*保存函数,参数为结构体数组和记录数*/void save(ADDRESS t,int n) int i; FILE *fp; /*指向文件的指针*/ if(fp=fopen(record.txt,wb)=NULL) /*打开文件,并判断打开是否正常*/ printf(can not open filen);/*没打开*

18、/ exit(1); /*退出*/ printf(nSaving filen); /*输出提示信息*/ fprintf(fp,%d,n); /*将记录数写入文件*/ fprintf(fp,rn); /*将换行符号写入文件*/ for(i=0;in;i+) fprintf(fp,%-20s%-30s%-10s,ti.name,ti.units,ti.tele);/*格式写入记录*/ fprintf(fp,rn); /*将换行符号写入文件*/ fclose(fp);/*关闭文件*/ printf(*save success*n); /*显示保存成功*/*读入函数,参数为结构体数组*/int loa

19、d(ADDRESS t) int i,n; FILE *fp; /*指向文件的指针*/ if(fp=fopen(record.txt,rb)=NULL)/*打开文件*/ printf(can not open filen); /*不能打开*/ exit(1); /*退出*/ fscanf(fp,%d,&n); /*读入记录数*/ for(i=0;i=0&idn) /*判断序号是否在记录范围内*/ fseek(fp,(id-1)*sizeof(ADDRESS),1); /*移动文件指针到该记录位置*/ print(tid); /*调用输出函数显示该记录*/ printf(rn); else pr

20、intf(no %d number record!n ,id); /*如果序号不合理显示信息*/ fclose(fp); /*关闭文件*/*排序函数,参数为结构体数组和记录数按姓名*/void sort(ADDRESS t,int n) int i,j,flag; ADDRESS temp; /*临时变量做交换数据用*/ for(i=0;in;i+) flag=0; /*设标志判断是否发生过交换*/ for(j=0;j0) /*比较大小*/ flag=1; strcpy(temp.name,tj.name); /*交换记录*/ strcpy(temp.units,tj.units); strc

21、py(temp.tele,tj.tele); strcpy(tj.name,tj+1.name); strcpy(tj.units,tj+1.units); strcpy(tj.tele,tj+1.tele); strcpy(tj+1.name,temp.name); strcpy(tj+1.units,temp.units); strcpy(tj+1.tele,temp.tele); if(flag=0)break; /*如果标志为0,说明没有发生过交换循环结束*/ printf(sort sucess!n); /*显示排序成功*/*快速查找,参数为结构体数组和记录数*/void qseek(ADDRESS t,int n) char s20; int l,r,m; prin

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

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