




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/*电话簿管理系统*/the telephon management system/created by tengzhenfang/data:2010.12.24/*/#include#include#include#include/*预定义*/#define header1 -telephone book-n#define header2 | num | name | phonenumber | address |n#define header3 |-|-|-|-|n#define format %-10s | %-10s | %-15s | %-20s |n#define data p-n
2、um,p-name,p-phonenum,p-address#define end -n#define n 100/*定义全局变量*/int saveflag=0; /是否需要存盘的标志变量/*定义系统的数据结构-电话簿相关信息组成的结构体*/typedef struct telebookint num; /编号char name15; /姓名char phonenum15; /电话号码char address20; /地址telebook;/*用户自定义函数原型说明*/void menu();void disp(telebook temp,int n);void wrong();int ad
3、d(telebook temp,int n);void qur(telebook temp,int n);int del(telebook temp,int n);void modify(telebook temp,int n);int insert(telebook temp,int n);void selectsort(telebook temp,int n);void save(telebook temp,int n);/*主函数*/void main()telebook telen; /定义了n条电话簿记录file *fp; /定义文件指针int select; /保存选择结果变量ch
4、ar ch; /保存(y,y,n,n)int count=0;fp=fopen(.telephonebook4.dat,ab+);/以追加方式打开二进制文件 c:telephonebook4.data,可读可写,若此文件不存在,则会自动创建此文件if(fp=null)printf(n=can not open file!n);exit(0); /程序退出函数,exit(0)为正常退出,在头文件 stdlib.h 里while(!feof(fp)if(fread(&telecount,sizeof(telebook),1,fp)=1) /一次从文件读取一条电话簿记录count+;fclose(f
5、p); /关闭文件printf(n=open file success,the total records number is :%d.n,count);getchar();/menu();while(1)system(cls);menu();printf(n please enter your choice(09):);scanf(%d,&select);if(select=0)if(saveflag=1) /对数组的数据有修改且未存盘fflush(stdin);getchar();printf(n=whether save the modified record to file?(y/n)
6、:);scanf(%c,&ch);if(ch=y|ch=y)save(tele,count); /保存记录至文件printf(n=thank you for useness!);fflush(stdin);getchar();break;switch(select)case 1:count=add(tele,count); /增加电话簿记录 break; case 2:system(cls); disp(tele,count); /显示电话簿记录 break;case 3:count=del(tele,count); /删除电话簿记录 break;case 4:qur(tele,count);
7、 /查询电话簿记录 break;case 5:modify(tele,count); /修改电话簿记录 break;case 6:count=insert(tele,count); /插入电话簿记录 break;case 7:selectsort(tele,count); /排序电话簿记录 break;case 8:save(tele,count); /保存电话簿记录 break;default:wrong(); fflush(stdin); getchar(); /按键有误,必须为数值09 break; /*主菜单界面*/用户进入电话簿管理系统时,需要显示主菜单,提示用户进行选择,完成相应任
8、务。此函数被主函数调用。/*/void menu()system(cls); /清屏,与clrscr()功能相同printf( the telephone-book management system n);printf(*menu*n);printf( * 1 input record 2 display record *n);printf( * 3 delete record 4 search record *n);printf( * 5 modify record 6 insert record *n);printf( * 7 sort record 8 save record *n);
9、printf( * 0 quit system n);printf(*n);/*显示电话簿记录*/显示从数组temp第一个元素开始的n条记录/*/输出表格头部,单独在一个函数里实现void printheader()printf(-telephone book-n);printf(| num | name | phonenumber | address |n);printf(|-|-|-|-|n);void disp(telebook temp,int n)int i;if(n=0)printf(n=not telephone record!n);fflush(stdin);getchar()
10、;return;printf(nnnn);printheader(); /输出表格的头部for(i=0;i=lens)printf(n长度超出,请重新输入。n);while(strlen(n)=lens);strcpy(t,n); /将输入的字符串拷贝到字符串t中/int add(telebook temp,int n)int number;int i=0;/char ch20;int flag=0;char ch1;disp(temp,n); /先打印出已有的电话簿记录/printf(请输入增加的电话簿的编号:n);while(1)while(1)printf(请输入增加的电话簿的编号:n)
11、;scanf(%d,&number);if(number=0)return n;while(i=15)printf(长度超出,请重新输入.n);elsebreak;strcpy(,ch);printf(请输入电话号码:);while(1)scanf(%s,ch);if(strlen(ch)=15)printf(长度超出,请重新输入.n);elsebreak;strcpy(tempn.phonenum,ch);printf(请输入地址:);while(1)scanf(%s,ch);if(strlen(ch)=20)printf(长度超出,请重新输入.n);elsebreak;
12、strcpy(tempn.address,ch);*/stringinput(,15,请输入姓名);stringinput(tempn.phonenum,15,请输入电话号码:);stringinput(tempn.address,20,请输入地址:);saveflag=1;n+; return n;/*记录查找定位函数*/在对记录进行查询、修改、删除的时候,都要进行记录的定位操作,因此,将/记录的定位操作作为一个单独的函数进行处理,这样可以节省代码率,优化代码质量/以下locate()函数完成了记录的查找定位功能,可以按联系人查找或者按电话号码查找/findmess保存要
13、查找的具体内容,nameorphonenum保存按什么在数组中查找/*/int locate(telebook temp,int n,char findmess,char nameorphonenum)int i=0;/printf(%s %sn,nameorphonenum,findmess);if(strcmp(nameorphonenum,phonenum)=0) /按电话号码查询for(i=0;in;i+)if(strcmp(tempi.phonenum,findmess)=0)return i;else if(strcmp(nameorphonenum,name)=0) /按姓名查询
14、for(i=0;inot telephone record!n);fflush(stdin);getch();return;printf(n = 1 search by name = 2 search by telephone numbern);printf(please choice1,2:);scanf(%d,&select);if(select=1) /按姓名查询stringinput(ch,15,请输入要查询的姓名:);p=locate(temp,n,ch,name); /利用locate函数查找符合ch内容的记录,并将记录的下标返回if(p!=-1)printheader();pri
15、ntf(|%-10d|%-15s|%-15s|%-20s|n,tempp.num,,tempp.phonenum,tempp.address);printf(|-|-|-|-|n);printf(press any key to return );getch();elseprintf(the record is not foundn);getch();else if(select=2) /按电话号码查询stringinput(ch,15,请输入要查询的电话号码:);p=locate(temp,n,ch,phonenum); /利用locate函数查找符合ch内容的记录,并将
16、记录的下标返回if(p!=-1)printheader();printf(|%-10d|%-15s|%-15s|%-20s|n,tempp.num,,tempp.phonenum,tempp.address);printf(|-|-|-|-|n);printf(press any key to return );getch();elseprintf(the record is not foundn);getch();elsewrong();getch();/*删除电话簿记录*/调用del(telebook temp,int n)函数删除电话簿记录的功能。可以根据/电话簿姓名
17、删除,也可以按电话号码删除。/*/int del(telebook temp,int n)int select;char ch20,ch0;int p,i;if(n=0)printf(n=no telephone num record.n);getch();return n;printf(删除之前的电话簿记录为:n);disp(temp,n);printf(n=1 delete by name =2 delete by phonen);scanf(%d,&select);if(select=1) /按姓名删除stringinput(ch,15,请输入要删除的电话簿记录的姓名:);p=locat
18、e(temp,n,ch,name);if(p!=-1)printf(n要删除的电话簿记录为:n);printheader();printf(|%-10d|%-15s|%-15s|%-20s|n,tempp.num,,tempp.phonenum,tempp.address);printf(n确认要删除?y/n:);fflush(stdin);scanf(%c,&ch0);if(ch0=y|ch0=y)for(i=p+1;in;i+)tempi-1=tempi;n-;printf(ndeleted success!n);saveflag=1;getch();elsegetch
19、();return n;elseprintf(n所删除的联系人不存在.n);getch();else if(select=2)stringinput(ch,15,请输入要删除的电话簿记录的电话号码:);p=locate(temp,n,ch,phonenum);if(p!=-1)printf(n要删除的电话簿记录为:n);printheader();printf(|%-10d|%-15s|%-15s|%-20s|n,tempp.num,,tempp.phonenum,tempp.address);for(i=p+1;ino telephone num record.n);ge
20、tch();return ;stringinput(ch,15,请输入要查找的联系人姓名:);p=locate(temp,n,ch,name);if(p!=-1)printf(修改前的联系人的信息为:n);printheader();printf(|%-10d|%-15s|%-15s|%-20s|n,tempp.num,,tempp.phonenum,tempp.address);printf(n请输入要修改的联系人的相关信息:n);stringinput(,15,请输入修改后的姓名:);stringinput(tempp.phonenum,15,请输入
21、修改后的电话号码:);stringinput(tempp.address,20,请输入修改后的地址:);saveflag=1;elseprintf(您所要修改的联系人不存在,请返回。);getch();/*插入电话簿记录*/调用insert(telebook temp,int n)函数,完成在数组temp中插入电话簿记录的/功能。在插入记录操作中,系统会先按记录编号查找到要插入的元素的位置,然后/在该记录编号处插入一个新记录。/*/int insert(telebook temp,int n)int number,i;int flag=0,k;char ch;telebook newrecor
22、d;disp(temp,n);while(1)printf(n请输入要插入的记录的编号:);scanf(%d,&number);for(i=0;in;i+)if(tempi.num=number)flag=1;break;if(flag=1)printf(编号已经存在,是否要重新输入(y/n):);fflush(stdin);scanf(%c,&ch);if(ch=y|ch=y)continue;elsereturn n;elsebreak;for(i=0;in;i+) /按编号的先后顺序,找到编号应该插入的位置,为下标kif(number=k;i-) /从下标 k 开始元素逐个后移tempi
23、+1=tempi;printf(请输入要插入的新记录的信息:n);newrecord.num=number;stringinput(,15,请输入姓名:);stringinput(newrecord.phonenum,15,请输入电话号码:);stringinput(newrecord.address,20,请输入地址:);tempk=newrecord;n+;saveflag=1;printf(插入记录成功!n);disp(temp,n);getch();return n;/*对电话簿记录进行排序*/调用selectsort(telebook temp,int n)函数,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年上海财大考研试题及答案
- 二级汽修学习资料复习试题含答案
- 科学研究计划
- 2025年卤菜考试试题及答案
- 2025年人保健康笔试试题及答案
- 机电设备故障诊断与维修 第3版 课件 第4章 机械零件修复技术
- 2025年高数联考试题及答案
- 2025年财务雇员笔试题库及答案
- 2025年ct技师考试试题及答案全套
- 2025年衡水中学考试题及答案
- 2025年开封文化艺术职业学院单招职业技能测试题库含答案
- 2025年辽宁冶金职业技术学院单招职业适应性测试题库有完整答案
- 2025年安徽扬子职业技术学院单招职业适应性测试题库(各地真题)
- 2025年共青科技职业学院单招职业适应性测试题库完整版
- 2025年上半年潜江市城市建设发展集团招聘工作人员【52人】易考易错模拟试题(共500题)试卷后附参考答案
- 统编版语文二年级下册15古诗二首 《晓出净慈寺送林子方》公开课一等奖创新教学设计
- 旅游电子商务(第2版) 课件全套 周春林 项目1-8 电子商务概述-旅游电子商务数据挖掘
- 创新创业项目计划书撰写
- 2024年上海市杨浦区复旦大学附中自主招生数学试卷
- 2025年安徽警官职业学院单招职业适应性测试题库带答案
- 广东广东省钱币学会招聘笔试历年参考题库附带答案详解
评论
0/150
提交评论