|
1楼 #include<string.h> #include<stdlib.h> void add(); void name(); void dz(); void xm(); void del(); char flag='y'; int i,j,l,n; struct tels { char name[50]; int dh; char dz[20]; }; void main() { printf("/*****************************电话号码存储系统*******************************/\n"); printf(" /*****************************制作:刘山*******************************/\n"); while(n!=6) { printf("1.增加电话\n2.按姓名修改纪录\n3.按地址查询\n4.按姓名查询\n5.删除\n6.退出\n请选择:"); scanf("%d",&n); if(n==1) add();//增加电话 else if(n==2) name();//按姓名修改 else if(n==3) dz();//按地址查询 else if(n==4) xm();//按姓名查询 else if(n==5) del(); } } void add() { char flag='y'; struct tels tel; FILE *fp; if((fp=fopen("d:/c.txt","a+b"))==NULL) { exit(0); } while(flag=='y') { printf("请输入姓名:"); scanf("%s",tel.name); printf("请输入电话:"); scanf("%d",&tel.dh); printf("请输入地址:"); scanf("%s",tel.dz); fwrite(&tel,sizeof(struct tels),1,fp); printf("是否继续y/n:\n"); scanf(" %c",&flag); } fclose(fp); } void name() { FILE *fp; struct tels tel; char flag='y',find; char name[30]; if((fp=fopen("d:/c.txt","r+w"))==NULL) printf("\n\tThe system can't open the file!!"); while(flag=='y') { printf("请输入您要修改的用户名"); scanf("%s",name); find='n'; rewind(fp); while((fread(&tel,sizeof(tel),1,fp))==1&&find=='n') { if(strcmp(tel.name,name)==0) { find='y'; break; } } if(find=='y') { printf("姓名%s\n",tel.name); printf("地址%s\n",tel.dz); printf("电话:%d\n",tel.dh); printf("请输入姓名"); scanf("%s",tel.name); printf("请输入地址"); scanf("%s",tel.dz); printf("请输入电话:"); scanf("%d",&tel.dh); fseek(fp,-(long)(sizeof(struct tels)),1);/*文件标记向下*/ fwrite(&tel,sizeof(tel),1,fp); } printf("是否继续:");/*提示是否继续修改另一已存用户信息*/ scanf(" %c",&flag); } fclose(fp); /*关闭文件*/ } void dz() { char flay='y'; char find='n'; char dz[30]; FILE *fp; struct tels tel; if((fp=fopen("d:/c.txt","r+b"))==NULL) printf("\n\tThe system can't open the file!!"); while(flay=='y') { printf("请输入您要查的地址:"); scanf("%s",dz); rewind(fp); while((fread(&tel,sizeof(tel),1,fp))==1&&find=='n') { if(strcmp(dz,tel.dz)==0) { find='y'; break; } } if(find=='y') { printf("姓名%s\n",tel.name); printf("地址%s\n",tel.dz); printf("电话:%d\n",tel.dh); } printf("是否继续y/n\n"); scanf(" %c",&flay); } fclose(fp); } void xm()//姓名查询 { char flay='y'; char find='n'; char xm[30]; FILE *fp; struct tels tel; if((fp=fopen("d:/c.txt","r+b"))==NULL) printf("\n\tThe system can't open the file!!"); while(flay=='y') { printf("请输入您要查的姓名:"); scanf("%s",xm); rewind(fp); while((fread(&tel,sizeof(tel),1,fp))==1&&find=='n') { if(strcmp(xm,tel.name)==0) { find='y'; break; } } if(find=='y') { printf("姓名%s\n",tel.name); printf("地址%s\n",tel.dz); printf("电话:%d\n",tel.dh); } printf("是否继续y/n\n"); scanf(" %c",&flay); } fclose(fp); } void del() { struct tels tel; FILE *fp; if((fp=fopen("d:/c.txt","r+w"))==NULL) printf("打开文件出错"); char flag='y'; char find='n'; char xm[30]; char n; while(flag=='y') { printf("请输入姓名:"); scanf("%s",xm); rewind(fp); while((fread(&tel,sizeof(tel),1,fp))==1&&find=='n') { if(strcmp(xm,tel.name)==0) { find='y'; break; } } if(find=='y') { printf("姓名%s\n",tel.name); printf("地址%s\n",tel.dz); printf("电话:%d\n",tel.dh); printf("是否确定删除y/n:"); scanf(" %c",&n); if(n=='y') strcpy(tel.name,""); strcpy(tel.dz,""); tel.dh=0; fseek(fp,-(long)(sizeof(struct tels)),1); fwrite(&tel,sizeof(tel),1,fp); printf("删除成功\n"); } printf("是否继续删除y/n:\n"); scanf(" %c",&flag); } fclose(fp); } |
|
|
|
| 61.149.79.* |
2楼 |
|
|
| 220.174.176.* |
3楼 |
|
|
| 222.17.252.* |
4楼 |
|
|
| 221.216.70.* |
5楼 |
|
|
| 61.49.237.* |
6楼 |
|
|
| 218.87.193.* |
7楼 |
|
|
|
8楼 #include <stdlib.h> #include <string.h> #define NOFOUND -1 typedef struct { char name[16]; /* 名字 */ char no[16]; /* 号码 */ }info; int load(char* filename, info* head) /* 从文件load */ { FILE* fp; char tmp[16] = ""; int flag, count; fp = fopen(filename, "rb"); if (fp) { flag = 0; count = 0; while (fscanf(fp, "%s", tmp) != EOF) { if (flag == 0) { strcpy(head->name, tmp); flag = 1; } else { strcpy(head->no, tmp); flag = 0; head++; count++; } } fclose(fp); return count; } else { return 0; } } int save(char* filename, info* head, int count) /*保存到文件*/ { FILE* fp; int i = 0; fp = fopen(filename, "wb"); if (fp) { while (i < count) { fprintf(fp, "%s\n%s\n", head->name, head->no); head++; i++; } fclose(fp); return 1; } else { return 0; } } int find(info* head, char* name, int count) /* 查找 name 从head里 */ { int i; for (i = 0; i < count ; i++,head++) { if (strcmp(name, head->name) == 0) return i; } return NOFOUND; } int del(info* head, char* name, int count) /* 从head里删除 name的那人 */ { int i; i = find(head, name, count); if (i != NOFOUND) { while (i < count - 1) { strcpy((head + i)->name, (head + i + 1)->name); strcpy((head + i)->no, (head + i + 1)->no); i++; } count -= 1; } return count; } void list(info* head, int count) /* 列表 */ { int i; printf("Name\t\tNumber\n---------------------------------------\n"); for (i = 0; i < count ; i++) { printf("%s\t\t%s\n", (head + i)->name, (head + i)->no); } } int input(info* head, int count) /* 输入新人 */ { printf("Name ? : "); scanf("%s", (head + count)->name); printf("Number ? : "); scanf("%s", (head + count)->no); return count + 1; } void help(void) { printf("usage : help list new delete find save quit\n"); } int main(void) { int i; int count = 0; /* myinfo数组中保存数据的个数 */ info myinfo[100]; /* 信息储存在这个数组里 */ char command[80]; /* 接受命令行 */ if (count = load("t.txt", myinfo)) { printf("Load default file successed.\n"); } while (1) { printf("> "); scanf("%s", command); if (strcmp(command, "quit") == 0) { save("t.txt", myinfo, count); exit(0); } else if (strcmp(command, "new") == 0) { if (count < 100) count = input(myinfo, count); } else if (strcmp(command, "delete") == 0) { printf("Name ? : "); scanf("%s", command); count = del(myinfo, command, count); } else if (strcmp(command, "save") == 0) { if (save("t.txt", myinfo, count)) printf("saved!\n"); } else if (strcmp(command, "list") == 0) { list(myinfo, count); } else if (strcmp(command, "help") == 0) { help(); } else if (strcmp(command, "find") == 0) { printf("Name ? : "); scanf("%s", command); i = find(myinfo, command, count); if (i != NOFOUND) { printf("name : %s\n", command); printf("number : %s\n", myinfo[i].no); } else { printf("No found!\n"); } } } return 0; } |
|
|
|
| 221.232.181.* |
9楼 你们怎么都没考虑到 如果有同名呢..... |
|
|
| 219.144.73.* |
10楼 |
|
|
| 222.90.139.* |
12楼 #include <stdlib.h> #include <string.h> #include <conio.h> #define N 100 void input();//添加新用户函数 void amend();//修改用户信息函数 void delete_client();//删除用户信息函数 void demand_client();//用户信息查询函数 void collect_telephone();//用户信息汇总函数 void save_client(struct telephone message);//保存函数 void demand_name();//按用户名查询 void demand_telephone();//按电话号码查询 void paixu();//排序 struct telephone { char client_name[20]; char client_address[30]; char client_telephone[15]; }; void main() { char choice[10]=""; int len=0; while (choice[0]!='7') { system("cls"); printf("\n电话管理系统\n"); printf("\n===========================\n"); printf("\n 1、添加新用户\n"); printf("\n 2、修改用户信息\n"); printf("\n 3、删除用户信息\n"); printf("\n 4、用户信息查询\n"); printf("\n 5、用户信息汇总\n"); printf("\n 6、排序\n"); printf("\n 7、退出\n"); printf("\n===========================\n"); printf("\n请选择(1-7):"); scanf("%s",choice); len=strlen(choice); if (len>1) { printf("\n请输入1-6之间的整数\n"); printf("\n按任意键返回主菜单……\n"); getchar(); getchar(); continue; } switch (choice[0]) { case '1': input(); break; case '2': amend(); break; case '3': delete_client(); break; case '4': demand_client(); break; case '5': collect_telephone(); break; case '6': char show(); break; default: break; } } } //添加新用户函数 void input() { struct telephone message; char reply='y'; char save='y'; while (reply=='y') { system("cls"); printf("\n用户姓名:"); scanf("%s",message.client_name); printf("\n家庭住址:"); scanf("%s",message.client_address); printf("\n电话号码:"); scanf("%s",message.client_telephone); printf("\n要保存吗?(y/n):"); scanf(" %c",&save); if (save=='y') { save_client(message); } printf("\n要继续吗?(y/n):"); scanf(" %c",&reply); } printf("\n按任意键返回主菜单……\n"); getchar(); getchar(); } //保存函数 void save_client(struct telephone message) { FILE *fp; fp=fopen("message.dat","a+"); if (fp!=NULL) { fwrite(&message,sizeof(struct telephone),1,fp); } else { printf("\n打开文件时出现错误,按任意键返回……\n"); getchar(); return; } fclose(fp); } //修改用户信息函数 void amend() { struct telephone message; FILE *fp; char amend_name[20]; char reply='y'; char found='y'; char save='y'; int size=sizeof(struct telephone); while (reply=='y') { found='n'; fp=fopen("message.dat","r+w"); if (fp!=NULL) { system("cls"); printf("\n请输入你要修改的姓名:"); scanf("%s",amend_name); while ((fread(&message,size,1,fp))==1) { if ((strcmp(amend_name,message.client_name))==0) { found='y'; break; } } if (found=='y') { printf("\n==========================================\n"); printf("\n用户姓名:%s\n",message.client_name); |
|
|
| 222.90.139.* |
13楼 printf("\n电话号码:%s\n",message.client_telephone); printf("\n==========================================\n"); printf("\n修改用户信息:\n"); printf("\n用户姓名:"); scanf("%s",message.client_name); printf("\n家庭住址:"); scanf("%s",message.client_address); printf("\n电话号码:"); scanf("%s",message.client_telephone); printf("\n要保存吗?(y/n):"); scanf(" %c",&save); if (save=='y') { fseek(fp,-size,1); fwrite(&message,sizeof(struct telephone),1,fp); } } else { printf("\n无此人信息!\n"); } } else { printf("\n打开文件时出现错误,按任意键返回……\n"); getchar(); return; } fclose(fp); printf("\n要继续吗?(y/n):"); scanf(" %c",&reply); } printf("\n按任意键返回主菜单……\n"); getchar(); getchar(); } //删除用户信息函数 void delete_client() { struct telephone message[N]; struct telephone temp_str; struct telephone delete_str; int i=0,j=0; char reply='y'; char found='y'; char confirm='y'; char delete_name[20]; FILE *fp; while (reply=='y') { system("cls"); fp=fopen("message.dat","r"); if (fp!=NULL) { i=0; found='n'; printf("\n请输入你的姓名:"); scanf("%s",delete_name); while ((fread(&temp_str,sizeof(struct telephone),1,fp))==1) { if ((strcmp(delete_name,temp_str.client_name))==0) { found='y'; delete_str=temp_str; }//查找要删除的记录 else { message[i]=temp_str; i++; }//将其它无关记录保存起来 } } else { printf("\n打开文件时出现错误,按任意键返回……\n"); getchar(); return; } fclose(fp); if (found=='y') { printf("\n==========================================\n"); printf("\n用户姓名:%s\n",delete_str.client_name); printf("\n家庭地址:%s\n",delete_str.client_address); printf("\n电话号码:%s\n",delete_str.client_telephone); printf("\n==========================================\n"); } else { printf("\n无此人信息,按任意键返回……\n"); getchar(); break; } printf("\n确定要删除吗?(y/n):"); scanf(" %c",&confirm); if (confirm=='y') { fp=fopen("message.dat","w"); if (fp!=NULL) { for(j=0;j<i;j++) { fwrite(&message[j],sizeof(struct telephone),1,fp); } printf("\n记录已删除!!!\n"); } else { printf("\n打开文件时出现错误,按任意键返回……\n"); getchar(); return; } fclose(fp); } printf("\n要继续吗?(y/n):"); scanf(" %c",&reply); } printf("\n按任意键返回主菜单……\n"); getchar(); } //用户信息查询函数 void demand_client() { int choice=1; while (choice!=3) { system("cls"); printf("\n电话查询菜单\n"); printf("\n 1 按用户姓名查询\n"); printf("\n 2 按电话号码查询\n"); printf("\n 3 返回主菜单\n"); printf("\n请选择(1-3):"); scanf("%d%*c",&choice); if (choice>3) { printf("\n请输入1-6之间的整数\n"); printf("\n按任意键返回菜单……\n"); |
|
|
| 222.90.139.* |
14楼 continue; } if (choice==1) { demand_name(); } else if (choice==2) { demand_telephone(); } } } //按用户名查询 void demand_name() { struct telephone message; FILE *fp; char amend_name[20]; char reply='y'; char found='y'; while (reply=='y') { found='n'; fp=fopen("message.dat","r+w"); if (fp!=NULL) { system("cls"); printf("\n请输入你的姓名:"); scanf("%s",amend_name); while ((fread(&message,sizeof(struct telephone),1,fp))==1) { if ((strcmp(amend_name,message.client_name))==0) { found='y'; break; } } if (found=='y') { printf("\n==========================================\n"); printf("\n用户姓名:%s\n",message.client_name); printf("\n家庭地址:%s\n",message.client_address); printf("\n电话号码:%s\n",message.client_telephone); printf("\n==========================================\n"); } else { printf("\n无此人信息!\n"); } } else { printf("\n打开文件时出现错误,按任意键返回……\n"); getchar(); return; } fclose(fp); printf("\n要继续吗?(y/n):"); scanf(" %c",&reply); } printf("\n按任意键返回主菜单……\n"); getchar(); getchar(); } //按电话号码查询 void demand_telephone() { struct telephone message; FILE *fp; char telephone[20]; char reply='y'; char found='y'; while (reply=='y') { found='n'; fp=fopen("message.dat","r+w"); if (fp!=NULL) { system("cls"); printf("\n请输入你的电话号码:"); scanf("%s",telephone); while ((fread(&message,sizeof(struct telephone),1,fp))==1) { if ((strcmp(telephone,message.client_telephone))==0) { found='y'; break; } } if (found=='y') { printf("\n==========================================\n"); printf("\n用户姓名:%s\n",message.client_name); printf("\n家庭地址:%s\n",message.client_address); printf("\n电话号码:%s\n",message.client_telephone); printf("\n==========================================\n"); } else { printf("\n无此电话号码的有关信息!\n"); } } else { printf("\n打开文件时出现错误,按任意键返回……\n"); getchar(); return; } fclose(fp); printf("\n要继续吗?(y/n):"); scanf(" %c",&reply); } printf("\n按任意键返回主菜单……\n"); getchar(); getchar(); } //用户信息汇总函数 void collect_telephone() { struct telephone message; FILE *fp; fp=fopen("message.dat","r"); if (fp!=NULL) { system("cls"); printf("\n用户姓名\t\t家庭地址\t\t电话号码\n"); while ((fread(&message,sizeof(struct telephone),1,fp))==1) { printf("\n%-24s",message.client_name); printf("%-25s",message.client_address); printf("%-12s\n",message.client_telephone); } } else { printf("\n打开文件时出现错误,按任意键返回……\n"); getchar(); return; } fclose(fp); printf("\n按任意键返回主菜单……\n"); getch(); } //按照用户的姓名进行排序 void paixu() { FILE *fp; struct telephone message,temp[N],a; int i,j,k; fp=fopen("message.dat","r"); for (i=0;(fread(&message,sizeof(struct telephone),1,fp))==1;i++) { temp[i]=message; } for (k=0;k<i-1;k++) { for (j=k+1;j<i;j++) { if ((strcmp(temp[k].client_name,temp[j].client_name))>0) { a=temp[k]; temp[k]=temp[j]; temp[j]=a; } } } fclose(fp); fp=fopen("message.dat","w"); if (fp!=NULL) { for (j=0;j<i;j++) { fwrite(&temp[j],sizeof(struct telephone),1,fp); } } fclose(fp); getch(); } |
|
|
| 61.167.60.* |
15楼 |
|
|
| 61.177.161.* |
16楼 |
|
|
| 220.166.100.* |
17楼 |
|
|
| 193.63.37.* |
18楼 |
|
|
| 220.169.1.* |
19楼 |
|
|
| 218.94.94.* |
20楼 |
|
|
| 218.62.34.* |
21楼 |
|
|
| 222.182.119.* |
22楼 #include<string.h> #include<stdlib.h> void add(); void name(); void address(); void index(); void del(); int i,j,l,n; struct tels { char name[20]; int numbers; char address[50]; }; void main() { printf("/*****************************电话号码存储系统*******************************/\n"); while(n!=6) { printf("1.增加电话\n2.按姓名修改纪录\n3.按地址查询\n4.按姓名查询\n5.删除\n6.退出\n请选择:"); scanf("%d",&n); if(n==1) add();//增加电话 else if(n==2) name();//按姓名修改 else if(n==3) address();//按地址查询 else if(n==4) index();//按姓名查询 else if(n==5) del(); } } /******************** 增加电话记录 ********************/ void add() { char flag='y'; struct tels tel; FILE *fp; if((fp=fopen("d:/c.txt","ab+"))==NULL) { exit(0); } while(flag=='y') { printf("请输入姓名:"); scanf("%s",tel.name); printf("请输入电话:"); scanf("%d",&tel.numbers); printf("请输入地址:"); scanf("%s",tel.address); fwrite(&tel,sizeof(struct tels),1,fp); printf("是否继续y/n:\n"); scanf(" %c",&flag); } fclose(fp); } /******************** 按姓名修改纪录 ********************/ void name() { FILE *fp; struct tels tel; char flag='y',find; char name[20]; if((fp=fopen("d:/c.txt","a+"))==NULL) printf("\n\tThe system can't open the file!!"); while(flag=='y') { printf("请输入您要修改的用户名"); scanf("%s",name); find='n'; rewind(fp); while((fread(&tel,sizeof(tel),1,fp))==1&&find=='n') { if(strcmp(tel.name,name)==0) { find='y'; break; } } if(find=='y') { printf("姓名%s\n",tel.name); printf("地址%s\n",tel.address); printf("电话:%d\n",tel.numbers); printf("请输入姓名"); scanf("%s",tel.name); printf("请输入地址"); scanf("%s",tel.address); printf("请输入电话:"); scanf("%d",&tel.numbers); fseek(fp,-(long)(sizeof(struct tels)),1);/*文件标记向下*/ fwrite(&tel,sizeof(tel),1,fp); } printf("是否继续:");/*提示是否继续修改另一已存用户信息*/ scanf(" %c",&flag); } fclose(fp); /*关闭文件*/ } /******************** 按地址查询 ********************/ void address() { char flay='y'; char find='n'; char address[50]; FILE *fp; struct tels tel; if((fp=fopen("d:/c.txt","r+"))==NULL) printf("\n\tThe system can't open the file!!"); while(flay=='y') { printf("请输入您要查的地址:"); scanf("%s",address); rewind(fp); while((fread(&tel,sizeof(tel),1,fp))==1&&find=='n') { if(strcmp(address,tel.address)==0) { find='y'; break; } } if(find=='y') { printf("姓名%s\n",tel.name); printf("地址%s\n",tel.address); printf("电话:%d\n",tel.numbers); } printf("是否继续y/n\n"); scanf(" %c",&flay); } fclose(fp); } /******************** 按姓名查询 ********************/ void index() { char flay='y'; char find='n'; char index[20]; FILE *fp; struct tels tel; if((fp=fopen("d:/c.txt","r+"))==NULL) printf("\n\tThe system can't open the file!!"); while(flay=='y') { printf("请输入您要查的姓名:"); scanf("%s",index); rewind(fp); while((fread(&tel,sizeof(tel),1,fp))==1&&find=='n') { if(strcmp(index,tel.name)==0) { find='y'; break; } } if(find=='y') { printf("姓名%s\n",tel.name); printf("地址%s\n",tel.address); printf("电话:%d\n",tel.numbers); } printf("是否继续y/n\n"); scanf(" %c",&flay); } fclose(fp); } /******************** 删除一条记录 ********************/ void del() { struct tels tel; FILE *fp; char flag='y'; char find='n'; char index[20]; char n; if((fp=fopen("d:/c.txt","a+"))==NULL) printf("打开文件出错"); while(flag=='y') { printf("请输入姓名:"); scanf("%s",index); rewind(fp); while((fread(&tel,sizeof(tel),1,fp))==1&&find=='n') { if(strcmp(index,tel.name)==0) { find='y'; break; } } if(find=='y') { printf("姓名%s\n",tel.name); printf("地址%s\n",tel.address); printf("电话:%d\n",tel.numbers); printf("是否确定删除y/n:"); scanf(" %c",&n); if(n=='y') strcpy(tel.name,""); strcpy(tel.address,""); tel.numbers=0; fseek(fp,-(long)(sizeof(struct tels)),1); fwrite(&tel,sizeof(tel),1,fp); printf("删除成功\n"); } printf("是否继续删除y/n:\n"); scanf(" %c",&flag); } fclose(fp); } |
|
|
| 218.83.192.* |
23楼 |
|
|
| 210.29.252.* |
24楼 我选的也是它 做成了字符界面和键盘控制的哦 源代码和EXE说明都在邮箱里 jurozn@163.com 密码是171835 谁有兴趣可以去看一下 值得一看啊 我交作业的时候老师都很满意啊 |
|
|
| 60.167.112.* |
26楼 |
|
|
| 218.22.69.* |
29楼 #include<string.h> struct ps { char num[10]; char name[10]; char sex[3]; int age; char addr[40]; char phone[12]; }; int total=0; char RecFile[]="class.dat"; main() { void SaveRec(struct ps *pt); void InputRec(struct ps *pt); void ProcessList(struct ps *pt); void ProcessSearch(struct ps *pt); void ProcessInsert(struct ps *pt); void ProcessDelete(struct ps *pt); void ProcessCmd(struct ps *pt); struct ps person[100],*pt; int i,j; FILE *fp; pt=person; fp=fopen(RecFile,"r"); if(fp==NULL){ InputRec(pt); }else{ printf("Loading exists file %s\n",RecFile); for(i=0;i<100;i++){ if (fread(&person[i],sizeof(struct ps),1,fp)==0) break; total++; } fclose(fp); printf("Completed!\n\n"); ProcessList(pt); } pt=person; ProcessCmd(pt); } void SaveRec(struct ps *pt) { FILE *fp; int i; fp=fopen(RecFile,"w"); for(i=0;i<total;i++){ fwrite(pt,sizeof(struct ps),1,fp); pt++; } fclose(fp); } void InputRec(struct ps *pt) { int b; struct ps *temppt; b=1; temppt=pt; pt+=total; while(b){ printf("Please input No.%d student info\n",total+1); do{ printf("Num:"); gets(pt->num); } while(!strcmp(pt->num,"\0")); do{ printf("Name:"); gets(pt->name); } while(!strcmp(pt->name,"\0")); do{ printf("Sex:"); gets(pt->sex); } while(!strcmp(pt->sex,"\0")); printf("Age:"); scanf("%d",&pt->age); getchar(); do{ printf("Address:"); gets(pt->addr); } while(!strcmp(pt->addr,"\0")); do{ printf("Phone:"); gets(pt->phone); } while(!strcmp(pt->phone,"\0")); pt++; total++; printf("\nInserted! Continue? (y/n)"); if(getchar()=='n') b=0; printf("\n"); getchar(); } SaveRec(temppt); } void ProcessList(struct ps *pt) { int i; printf("No.\tNum\tName\t Sex\tAge\tPhone\t Address\n"); for(i=0;i<total;i++){ printf("%d%10s\t%-10s%-3s%5d\t%-12s%-26s\n",i+1,pt->num,pt->name,pt->sex,pt->age,pt->phone,pt->addr); pt++; } } void ProcessSearch(struct ps *pt) { char cmd[10]; int i,found=0; printf(">search:"); gets(cmd); printf("No.\tNum\tName\t Sex\tAge\tPhone\t Address\n"); for(i=0;i<total;i++){ if((!strcmp(cmd,pt->num))||(!strcmp(cmd,pt->name))){ printf("%d%10s\t%-10s%-3s%5d\t%-12s%-26s\n",i+1,pt->num,pt->name,pt->sex,pt->age,pt->phone,pt->addr); found++; } pt++; } printf("\n"); if(found==0) printf("Not Found!"); else if(found==1) printf("Found 1 Record!"); else printf("Found %d Records!",found); printf("\n"); } void ProcessInsert(struct ps *pt) { InputRec(pt); } void ProcessDelete(struct ps *pt) { int i,j,count=0; char cmd[10]; struct ps *temppt; temppt=pt; printf(">delete:"); gets(cmd); for(i=0;i<total;i++){ if((!strcmp(cmd,pt->num))||(!strcmp(cmd,pt->name))){ for(j=0;j<total-i-1;j++){ strcpy(pt[j].num,pt[j+1].num); strcpy(pt[j].name,pt[j+1].name); strcpy(pt[j].sex,pt[j+1].sex); pt[j].age=pt[j+1].age; strcpy(pt[j].addr,pt[j+1].addr); strcpy(pt[j].phone,pt[j+1].phone); } count++; total--; } pt++; } if(count==0) printf("Can't Find the Record!\nNo Record Deleted!"); else if(count==1) printf("Deleted 1 Record!"); else printf("Deleted %d Records!",count); printf("\n"); SaveRec(temppt); } void ProcessCmd(struct ps *pt) { char cmd[10]; while(1){ printf("\t--------------------------------\n"); printf("\t|List|Search|Insert|Delete|Exit|\n"); printf("\t--------------------------------\n"); printf(">"); gets(cmd); if(!strcmp(cmd,"list")) ProcessList(pt); if(!strcmp(cmd,"search")) ProcessSearch(pt); if(!strcmp(cmd,"insert")) ProcessInsert(pt); if(!strcmp(cmd,"delete")) ProcessDelete(pt); if(!strcmp(cmd,"exit")) break;; } } |
|
|
|
30楼 |
|
|
|
| 221.12.26.* |
31楼 |
|
|
|
32楼 #include <string.h> struct person { char name[18]; char tel[15]; char addr[50]; }; char filename[20]; FILE *fp; void create(); void output(); void search(); void append(); void modify(); void delet(); main() { int m; create(); while(1) { printf("\n\n添加,请按1"); printf("\n查找,请按2"); printf("\n修改,请按3"); printf("\n删除,请按4"); printf("\n输出,请按5"); printf("\n退出,请按0\n"); scanf("%d",&m); if(m>=0&&m<=5) { switch(m) { case 1 : append(); break; case 2 : search(); break; case 3 : modify(); break; case 4 : delet(); break; case 5 : output(); break; case 0 : exit(); } printf("\n\n操作完毕,请再次选择!"); } else printf("\n\n操作错误,请重新选择!"); } } void create() { struct person one; //long s1; printf("\n 请输入通讯簿名:"); scanf("%s",filename); if((fp=fopen(filename,"w"))==NULL) { printf("\n不能建立通讯簿!"); //exit(); } fprintf(fp,"%-10s%-20s%-50s%\n","姓名","电话号码","住址"); printf("\n请输入姓名,电话号码及住址(以0结束)\n"); scanf("%s",one.name); while(strcmp(one.name,"0")) { scanf("%s%s",one.tel,one.addr); fprintf(fp,"%-10s%-20s%-50s%\n",one.name,one.tel,one.addr); scanf("%s",one.name); } fclose(fp); } void output() { struct person one; if((fp=fopen(filename,"r"))==NULL) { printf("\n不能打开通讯簿!"); //exit(); } printf("\n\n%20s\n","通 讯 簿"); while(!feof(fp)) { fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr); printf("%-10s%-20s%-50s%\n",one.name,one.tel,one.addr); } fclose(fp); } void append() { struct person one; if((fp=fopen(filename,"a"))==NULL) { printf("\n不能打开通讯簿!"); //exit(); } printf("\n请输入添加的姓名,电话号码及住址\n"); scanf("%s%s%s\n",one.name,one.tel,one.addr); fprintf(fp,"%-10s%-20s%-50s%\n",one.name,one.tel,one.addr); fclose(fp); } void search() { int k=0; char namekey[8]; struct person one; printf("\n请输入要查找的姓名:"); scanf("%s",namekey); if((fp=fopen(filename,"rb"))==NULL) { printf("\n不能打开通讯簿!"); //exit(); } while(!feof(fp)) { fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr); if(!strcmp(namekey,one.name)) { printf("\n\n已查找到,记录为:"); printf("%-10s%-20s%-50s%\n",one.name,one.tel,one.addr); k=1; } } if(!k) printf("\n\n对不起!通讯簿中没有此人。"); fclose(fp); } // 修改以前的打开方式! void modify() { int k=0; long offset; char namekey[8]; struct person one; printf("\n请输入姓名:"); scanf("%s",namekey); if((fp=fopen(filename,"r+"))==NULL) { printf("\n不能打开通讯簿!"); //exit(); } while(!feof(fp)) { offset=ftell(fp); fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr); if(strcmp(namekey,one.name)) { k=1; break; } } if(k) { printf("\n已找到,记录为:"); printf("%-10s%-20s%-50s%\n",one.name,one.tel,one.addr); printf("\n请输入新姓名,电话号码及住址:"); scanf("%s%s%s\n",one.name,one.tel,one.addr); fseek(fp,offset,SEEK_SET); printf("%ld",ftell(fp)); fprintf(fp,"%-10s%-20s%-50s%\n",one.name,one.tel,one.addr); } else printf("\n对不起!通讯簿中没有此人"); fclose(fp); } void delet() { int m,k=0; long offset1; char namekey[8]; struct person one; printf("\n请输入姓名:"); scanf("%s",namekey); if((fp=fopen(filename,"r+"))==NULL) { printf("\n不能打开通讯簿!"); //exit(); } while(!feof(fp)) { offset1=ftell(fp); fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr); if(!strcmp(namekey,one.name)) { k=1; break; } } if(k) { printf("\n已找到,记录为:"); printf("%-10s%-20s%-50s%\n",one.name,one.tel,one.addr); printf("\n确实要删除,按1,不删除,按0:"); scanf("%d",&m); if(m) { fseek(fp,offset1,SEEK_SET); fprintf(fp,"%-10s%-20s%-50s%\n","","",""); } } else printf("\n对不起!通讯簿中没有此人"); fclose(fp); } |
|
|
|
