可以的话请采纳。
#include
#include
#include
int cntAddr=0,i,j;
char in[12];
const char * strFmt="\n%d\t%s\t%s\t%s\t%s\n";
typedef struct ADDRESSD {
int ID;
char name[12];
char workPlace[12];
char teleOff[12];
char teleHome[12];
}ADDRESS;
ADDRESS addrTmp[100],adTmp;
int load(ADDRESS adr[]){
FILE *fp;
if((fp=fopen("c:\\txl.txt","r"))!=NULL){
cntAddr=0;
while(!feof(fp)){
fscanf(fp,"%d %s %s %s %s ",&(adr[cntAddr].ID),adr[cntAddr].name,adr[cntAddr].workPlace,adr[cntAddr].teleOff,adr[cntAddr].teleHome);
++cntAddr;
}
}
fclose(fp);
return cntAddr;
};
void list(ADDRESS addr[],int length){
for(i=0;i
void display(ADDRESS addr[]){
for(i=0;i
for(i=0;i
void namesort(ADDRESS addr[],int length){
for(i=0;i
for(i=0;i
void save(ADDRESS adr[],int length){
FILE *fp;
fp=fopen("c:\\txl.txt","w");
for(i=0;i
};
void unitssort(ADDRESS addr[],int length){
for(i=0;i
for(i=0;i
void namesearch(ADDRESS addr[],int length){
printf("请输入姓名:\n");
scanf("%s",&in);
for(i=0;i
void unitssearch(ADDRESS adr[],int length){
printf("请输入工作单位:\n");
scanf("%s",&in);
for(i=0;i
void officenumbersearch(ADDRESS adr[],int length){
printf("请输入办公电话:\n");
scanf("%s",&in);
for(i=0;i
void homenumbersearch(ADDRESS adr[],int length){
printf("请输入家庭电话:\n");
scanf("%s",&in);
for(i=0;i
int delet(ADDRESS adr[],int length){
printf("要修改第几条记录:\n");
scanf("%d",&j);
for(i=j;i
};
void rewrite(ADDRESS adr[],int length){
printf("要修改第几条记录:\n");
scanf("%d",&j);
printf("请输入ID:\n");
scanf("%d",&i);
adr[j].ID=i;
printf("请输入姓名:\n");
scanf("%s",in);
strcpy(adr[j].name,in);
printf("请输入工作单位:\n");
scanf("%s",in);
strcpy(adr[j].workPlace,in);
printf("请输入办公电话:\n");
scanf("%s",in);
strcpy(adr[j].teleOff,in);
printf("请输入家庭电话:\n");
scanf("%s",in);
strcpy(adr[j].teleHome,in);
};
int add(ADDRESS adr[],int length){
printf("请输入ID:\n");
scanf("%d",&i);
adr[length].ID=i;
printf("请输入姓名:\n");
scanf("%s",in);
strcpy(adr[length].name,in);
printf("请输入工作单位:\n");
scanf("%s",in);
strcpy(adr[length].workPlace,in);
printf("请输入办公电话:\n");
scanf("%s",in);
strcpy(adr[length].teleOff,in);
printf("请输入家庭电话:\n");
scanf("%s",in);
strcpy(adr[length].teleHome,in);
return ++cntAddr;
};
void copy(){
FILE *fp,*fc;
printf("请输入新文件名(路径中的反斜杠用\\表示)\n");
scanf("%s",&in);
if((fp=fopen("c:\\txl.txt","r"))!=NULL){
fc=fopen(in,"w");
while(!feof(fp)){
fscanf(fp,"%d %s %s %s %s ",&(adTmp.ID),adTmp.name,adTmp.workPlace,adTmp.teleOff,adTmp.teleHome);
fprintf(fc,"%d %s %s %s %s ",adTmp.ID,adTmp.name,adTmp.workPlace,adTmp.teleOff,adTmp.teleHome);
}
fclose(fc);
}
fclose(fp);
};
int enter(ADDRESS adr[]){
cntAddr=0;
printf("请按次序输入数据,结束按CTRL+z:\n");
while(1){
printf("请输入ID:\n");
if(scanf("%d",&i)==EOF)break;
adr[cntAddr].ID=i;
printf("请输入姓名:\n");
if(scanf("%s",in)==EOF)break;
strcpy(adr[cntAddr].name,in);
printf("请输入工作单位:\n");
if(scanf("%s",in)==EOF)break;
strcpy(adr[cntAddr].workPlace,in);
printf("请输入办公电话:\n");
if(scanf("%s",in)==EOF)break;
strcpy(adr[cntAddr].teleOff,in);
printf("请输入家庭电话:\n");
if(scanf("%s",in)==EOF)break;
strcpy(adr[cntAddr].teleHome,in);
++cntAddr;
}
return cntAddr;
};
void showpaixu(ADDRESS adr[],int length)
{
int choice;
menu1:
system("cls");
printf("\n\n\n\n *************************通讯录信息管理系统*************************\n\n");
printf(" 1. 全部显示通讯录信息\n\n");
printf(" 2. 按序号显示通讯录信息\n\n");
printf(" 3. 按姓名排序\n\n");
printf(" 4. 按工作单位排序\n\n");
printf(" 0. 返回上一级菜单\n\n");
printf(" ********************************************************************\n");
printf(" 请选择(0~4)\n ");
scanf("%d",&choice);
switch(choice)
{
case 1:
list(adr,length);
printf(" 请按任意键返回...\n");
system("pause");
break; /*显示全部记录*/
case 2:
display(adr);
printf(" 请按任意键返回...\n");
system("pause");break; /*按序号显示记录*/
case 3:
namesort(adr,length);
printf(" 请按任意键返回...\n");
system("pause");
break; /*按姓名排序*/
case 4:
unitssort(adr,length);
printf(" 请按任意键返回...\n");
system("pause");
break; /*按工作单位排序*/
case 0: return;
}
goto menu1;
}
/*通讯录信息查找功能*/
void chazhao(ADDRESS adr[],int length)
{
int choice;
menu2:
system("cls");
printf("\n\n\n\n *************************通讯录信息管理系统*************************\n\n");
printf(" 1. 通过姓名查找\n\n");
printf(" 2. 通过工作单位查找\n\n");
printf(" 3. 通过办公电话查找\n\n");
printf(" 4. 通过家庭电话查找\n\n");
printf(" 0. 返回上一级菜单\n\n");
printf(" ********************************************************************\n");
printf(" 请选择(0~4)\n ");
scanf("%d",&choice);
switch(choice)
{
case 1:
namesearch(adr,length);
printf(" 请按任意键返回...\n");
system("pause");
break; /*按姓名查找记录*/
case 2:
unitssearch(adr,length);
printf(" 请按任意键返回...\n");
system("pause");
break; /*按工作单位查找记录*/
case 3:
officenumbersearch(adr,length);
printf(" 请按任意键返回...\n");
system("pause");
break; /*按办公电话查找记录*/
case 4:
homenumbersearch(adr,length);
printf(" 请按任意键返回...\n");
system("pause");
break; /*按住宅电话查找记录*/
case 0: return;
}
goto menu2;
}
/*通讯录信息变更功能*/
void biangeng(ADDRESS adr[],int length)
{
int choice;
menu3:
system("cls");
printf("\n\n\n\n *************************通讯录信息管理系统*************************\n\n");
printf(" 1. 删除记录\n\n");
printf(" 2. 修改记录\n\n");
printf(" 3. 添加记录\n\n");
printf(" 0. 返回上一级菜单\n\n");
printf(" ********************************************************************\n");
printf(" 请选择(0~3)\n ");
scanf("%d",&choice);
switch(choice)
{
case 1:
length=delet(adr,length);
save(adr,length);
printf(" 请按任意键返回...\n");
getchar();
break; /*删除记录*/
case 2:
rewrite(adr,length);
save(adr,length);
printf(" 请按任意键返回...\n");
getchar();
break; /*修改记录*/
case 3:
length=add(adr,length);
save(adr,length);
printf(" 请按任意键返回...\n");
getchar();
break; /*插入记录*/
case 0: return;
}
goto menu3;
}
int wenjian(ADDRESS adr[],int length)
{
int choice;
menu4:
system("cls");
printf("\n\n\n\n *************************通讯录信息管理系统*************************\n\n");
printf(" 1. 导入文件到通讯录\n\n");
printf(" 2. 把当前文件复制到新文件上\n\n");
printf(" 0. 返回上一级菜单\n\n");
printf(" ********************************************************************\n");
printf(" 请选择(0~2)\n ");
scanf("%d",&choice);
switch(choice)
{
case 1: length=load(adr);
printf("您已经成功的导入文件到通讯录!\n");
printf(" 请按任意键返回...\n");
system("pause");break;
case 2: copy();
printf("复制成功!\n");
printf(" 请按任意键返回...\n");
system("pause");break;
case 0: return length;
}
goto menu4;
}
/*关于*/
void about()
{
system("color 87");
system("cls");
printf("\n\n\n\n 《通讯录信息管理系统》\n\n\n");
printf(" *****************************************\n\n\n");
printf(" 版权所有(C) 2009-2010 DIY软件\n\n\n");
printf(" 制作人:西北民族大学计算机科学与信息09级计算机3班 王元波\n\n\n");
printf(" *****************************************\n\n\n");
printf(" 请按任意键返回主菜单...");
system("pause");
}
/******主函数开始*******/
void main()
{
int choice;
int length; /*保存记录长度*/
ADDRESS adr[100] ; /*定义结构体数组*/
menu:
system("color f9");
system("cls");
printf("\n\n\n\n *************************通讯录信息管理系统*************************\n\n");
printf(" 请选择以下通讯录管理功能:\n\n");
printf(" 1. 通讯录信息输入\n\n");
printf(" 2. 通讯录信息浏览及排序\n\n");
printf(" 3. 通讯录信息查询\n\n");
printf(" 4. 通讯录信息更改\n\n");
printf(" 5. 通讯录及文件操作\n\n");
printf(" 6. 关于通讯录信息管理系统\n\n");
printf(" 0. 退出通讯录管理系统\n\n");
printf(" ********************************************************************\n");
printf(" 请选择(0~6)\n ");
scanf("%d",&choice);
switch(choice)
{
case 1: length=enter(adr);
save(adr,length);
printf("\n 请按任意键返回...\n");
system("pause");break;/*输入记录*/
case 2: showpaixu(adr,length);break;
case 3: chazhao(adr,length);break;
case 4: biangeng(adr,length);break;
case 5: length=wenjian(adr,length);break;
case 6: about();break;/*关于*/
case 0: return; /*如返回值为则程序结束*/
}
goto menu;
}
#include
#include
#include
#define M 500
struct Man //定义结构体
{
char Name[8]; //名字
char Depart[20]; //工作单位
char QQ[10]; //QQ号码
char Email[30]; //邮箱
};
void text(); //相当于主函数
void text1(); //菜单输出
char text2(); //开始的版权信息输出
int Delete(Man Man[], int Size);//删除信息
void Display(Man man[]); //显示所有记录
void getch();
int Insert(Man Man[], int Size); //插入模块
void Modify(Man Man[], int Size); //修改模块
int S_asname(Man Man[], int Size, int n); //查找信息
void S_asqq(Man Man[], int Size); //按QQ查找模块
int Save(Man Man[], int Size); //把数据写入文件
int Scan(Man Man[]); //从文本中读取数据
void main() //主函数
{
text(); //(这边纯属蛋疼,最多加长系统运行时间)
}
void text() //相当于主函数
{
Man man[M]; //500人的结构体数组
char control=0; //菜单选择控制变量
int size=0; //保存当前已有的记录
if ( text2() ) //这边可不要if,直接调用text2,显示版权信息。
{
size=Scan(man); //判断文件是否存在
while(1) //菜单生成
{
text1(); //菜单显示
scanf(
实现一个通讯录管理系统;
通讯录管理系统可以用来存储1000个人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址
**提供方法:
1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人
7. 以名字排序所有联系人**
1、linkman.h(头文件)
2、test.c(测试)
3、程序运行结果部分示范: