| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1049 人关注过本帖
标题:实用的东西,超菜发!!!
只看楼主 加入收藏
ysfabm
Rank: 1
等 级:新手上路
威 望:1
帖 子:274
专家分:0
注 册:2004-11-9
收藏
得分:0 
/********************************************************************* ***编一个通讯录管理系统,分为录入、查询、修改、删除、退出几部分。 ***先将通讯录中的资料读入结构体变量中,以便查询等操作 ***录入名字、地址、电话、电子邮箱、QQ号码。 *********************************************************************/

#include <stdio.h> #include <dos.h> #include <string.h> #include <stdlib.h> #include <alloc.h> #define N 6 #define Esc 27 #define InitAmount 20 struct Infomation{ char name[10]; char QQ[12]; char phone[15]; char Email[20]; char address[30]; }record[InitAmount]; int cnt=0; char buffer[N*14*2];

/*---输入通讯资料---*/ void InputInfo() { int row=N; char key; struct Infomation temp; gotoxy(1,row+1); printf("\n输入姓名: "); gets(temp.name); printf("输入 QQ 号: "); gets(temp.QQ); printf("输入电话号码: "); gets(temp.phone); printf("输入 E-mail: "); gets(temp.Email); printf("输入地址: "); gets(temp.address); printf("\n记录下这个人的资料吗 ? (Y/N)"); while(1){ if((key=getch())=='Y'||key=='y'){ record[cnt++]=temp; printf("\n记录成功!!!"); getch(); break; } if(key=='N'||key=='n'){ printf("\n你已放弃这份资料!!!"); getch(); break; } } kbhit(); clrscr(); puttext(1,1,14,N,buffer); }

/*---显示所有人的资料---*/ void ShowAll() { int i; clrscr(); printf("所有人的资料:\n"); printf("\n姓名 QQ 电话 E-mail 地址\n"); for(i=0;i<cnt;i++){ printf("%-10s",record[i].name); printf("%-12s",record[i].QQ); printf("%-15s",record[i].phone); printf("%-20s",record[i].Email); printf("%s\n",record[i].address); } getch(); clrscr(); puttext(1,1,14,N,buffer); }

/*---搜索某个人的资料---*/ void Search() { clrscr(); printf("1.根据姓名搜索\n2.根据 QQ 号搜索\n(按 Esc 键可以退出这个功能区)"); while(1){ int i,status=0; char *temp=(char *)malloc(sizeof(char)); switch(getch()){ case '1': printf("\n输入要搜索的姓名: "); scanf("%s",temp); printf("\n"); printf("\n姓名 QQ 电话 E-mail 地址\n"); for(i=0;i<cnt;i++) if(!strcmp(temp,record[i].name)){ printf("%-10s",record[i].name); printf("%-12s",record[i].QQ); printf("%-15s",record[i].phone); printf("%-20s",record[i].Email); printf("%s\n",record[i].address); status=1; } getch(); break; case '2': printf("\n输入要搜索的 QQ 号: "); scanf("%s",temp); printf("\n"); printf("\n姓名 QQ 电话 E-mail 地址\n"); for(i=0;i<cnt;i++) if(!strcmp(temp,record[i].QQ)){ printf("%-10s",record[i].name); printf("%-12s",record[i].QQ); printf("%-15s",record[i].phone); printf("%-20s",record[i].Email); printf("%s\n",record[i].address); status=1; break; } getch(); break; case Esc: status=1; } if(status) break; else{ clrscr(); printf("1.根据姓名搜索\n2.根据 QQ 号搜索\n"); } } kbhit(); clrscr(); puttext(1,1,14,N,buffer); }

/*---修改某个人的资料---*/ void Modify() { int i,status=0,position=-1; char *temp=(char *)malloc(sizeof(char)),key; gotoxy(1,N+2); printf("输入姓名: "); scanf("%s",temp); for(i=0;i<cnt;i++) if(!strcmp(temp,record[i].name)){ status++; if(status==1) position=i; } if(status>1){ printf("\n不止一个人叫这个名字,请输入 QQ 号确认身份\n"); printf("\n否则将把找到的第一个人作为你要修改其资料的人"); printf("\n输入 QQ 号: "); scanf("%s",temp); for(i=0;i<cnt;i++) if(!strcmp(temp,record[i].QQ)){ status=1; position=i; } } if(!status) printf("\n没有找到这个人的资料!"); else{ char key; clrscr(); printf("你想要修改 %s 的哪部分资料:\n",record[position].name); printf(" 1. QQ 2. 电话 3. E-mail 4. 地址\n\n"); printf(" (按 Esc 键才能退出这个功能区)\n\n"); while((key=getch())!=Esc) switch(key){ case '1': printf("输入新的 QQ 号: "); scanf("%s",record[position].QQ); break; case '2': printf("输入新的电话号码: "); scanf("%s",record[position].phone); break; case '3': printf("输入新的 E-mail: "); scanf("%s",record[position].Email); break; case '4': printf("输入新的地址: "); scanf("%s",record[position].address); } printf("\n修改成功!"); } getch(); clrscr(); puttext(1,1,14,N,buffer); }

/*---删除某个人的资料---*/ void Delete() { int i=N,status=0,position=-1; char *temp=(char *)malloc(sizeof(char)),key; gotoxy(1,i+1); printf("\n输入姓名: "); scanf("%s",temp); for(i=0;i<cnt;i++) if(!strcmp(temp,record[i].name)){ status++; if(status==1) position=i; } if(status>1){ printf("\n不止一个人叫这个名字,请输入 QQ 号确认身份\n"); printf("\n否则将把找到的第一个人作为你要删除其资料的人"); printf("\n输入 QQ 号: "); scanf("%s",temp); for(i=0;i<cnt;i++) if(!strcmp(temp,record[i].QQ)){ status=1; position=i; } } if(!status) printf("\n没有找到这个人的资料!"); else{ record[position]=record[(cnt--)-1]; printf("\n删除成功!"); } getch(); clrscr(); puttext(1,1,14,N,buffer); }

/*---将通讯录里的资料以文件形式保存起来---*/ void Save() { int i; FILE *fp=fopen("D:\\record.bat","wb"); if(cnt!=0){ FILE *fp_seen=fopen("D:\\record.txt","w"); fprintf(fp_seen,"姓名 QQ 电话 E-mail 地址\n"); for(i=0;i<cnt;i++){ fprintf(fp_seen,"%-10s",record[i].name); fprintf(fp_seen,"%-12s",record[i].QQ); fprintf(fp_seen,"%-15s",record[i].phone); fprintf(fp_seen,"%-20s",record[i].Email); fprintf(fp_seen,"%s\n",record[i].address); } fclose(fp_seen); } for(i=0;i<cnt;i++) fwrite(&record[i],sizeof(record),1,fp); _chmod("D:\\record.bat",1,FA_HIDDEN); fclose(fp); }

/*---Main function---*/ void main() { int i; FILE *fp; char *index[N]={"1.输入通讯资料", "2.显示所有资料", "3.搜索某人资料", "4.修改某人资料", "5.删除某人资料", "6.退出系统"}; clrscr(); if((fp=fopen("D:\\record.bat","rb"))!=NULL){ /*write old infomation*/ while(fread(&record[cnt++],sizeof(record),1,fp)!=0); /*null statement*/ cnt--; fclose(fp); } for(i=0;i<N;i++) printf("%s\n",index[i]); gettext(1,1,14,N,buffer); while(1) switch(getch()){ case '1': InputInfo();break; case '2': ShowAll();break; case '3': Search();break; case '4': Modify();break; case '5': Delete();break; case '6': Save();exit(0); } }


精诚所至,
       金石为开!
      PLM技术社区: [url=http://www.]www.[/url] 最专业的PLM技术讨论社区。
2005-05-10 19:22
快速回复:实用的东西,超菜发!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033959 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved