C语言 电话簿管理系统VC++6.0运行通过

上传人:仙*** 文档编号:28592727 上传时间:2021-09-01 格式:DOC 页数:16 大小:77.50KB
收藏 版权申诉 举报 下载
C语言 电话簿管理系统VC++6.0运行通过_第1页
第1页 / 共16页
C语言 电话簿管理系统VC++6.0运行通过_第2页
第2页 / 共16页
C语言 电话簿管理系统VC++6.0运行通过_第3页
第3页 / 共16页
资源描述:

《C语言 电话簿管理系统VC++6.0运行通过》由会员分享,可在线阅读,更多相关《C语言 电话簿管理系统VC++6.0运行通过(16页珍藏版)》请在装配图网上搜索。

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(tempn.name,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(tempn.name,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.name,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.name,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.name,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.name,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.name,tempp.phonenum,tempp.address);printf(n请输入要修改的联系人的相关信息:n);stringinput(tempp.name,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(newrecord.name,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

24、)函数,利用选择排序法完成对电话簿/记录的排序操作,可以按照编号排序,或者按照姓名排序/*/void SelectSort(TELEBOOK temp,int n)int select,k,i,j;TELEBOOK tt;if(n=0)printf(n=No telephone record !n);getch();return ;printf(排序前的电话簿记录为:n);Disp(temp,n);printf(=1 sort by number =2 sort by namen);printf(请选择排序方式:n);scanf(%d,&select);if(select=1)for(i=0;

25、in-1;i+)k=i;for(j=i+1;jn;j+)if(tempj.numtempk.num)k=j;tt=tempi;tempi=tempk;tempk=tt;printf(排序成功!n);saveflag=1;printf(排序后的电话簿记录为:n);Disp(temp,n);return;else if(select=2)for(i=0;in-1;i+)k=i;for(j=i+1;jn;j+)if(strcmp(tempj.name,tempk.name)open file failed!n);getch();return;for(i=0;i0)getch();printf(n=save file complete,total saveds record number is %dn,i);getch();saveflag=0;elseprintf(n=the current link is empty,no telephone record is saved!n);getch();fclose(fp); /关闭此文件

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!