#include /* 标准输入 /输出头文件 */
#include /* 包含字符串处理函数头文件 */
#include /* 包含动态储存与释放函数头文件 */
#include /*包含绘制图形函数等头文件(包括getch()函数)*/
struct pho_book
{
long int num; /*电话号码*/
char name[20];
char work[10]; /*工作单位*/
char company[20]; /*公司名称*/
char addr[50]; /*公司地址*/
};
void input(); /*录入模块*/
void pnodeadd(); /*个人信息节点添加*/
void cnodeadd(); /*公司信息节点添加 */
void modify(); /*修改模块*/
void pnodemodify(); /*个人信息节点修改*/
void cnodemodify(); /*公司信息节点修改*/
void del(); /*删除模块*/
void pnodedel(); /*个人信息节点删除*/
void cnodedel(); /*公司信息节点删除*/
void pnodesearch(); /*个人信息节点查找*/
void cnodesearch(); /*公司信息节点查找*/
void admin(); /*管理员登录函数*/
void guest(); /*客人登录函数*/
void main()
{
char message[]={" ★ 电话查询系统使用说明 ★ \n"
" 本系统是一个电话号码簿,供客人查询电话号码。 \n"
" 管理员可以录入、修改、删除电话号码信息;客人只能进行查询。 \n"
" 欢迎你来使用电话查询系统! \n" };
char menu[]={" *1. admin entry \n"
" *2. guest entry \n"
" *0. quit entry \n"};
int sel;
printf("%s ",message);
printf("按任意键进入主菜单:");
getch();
do
{ system("color 46");
system("cls");
printf("%s",menu);
printf("请在1-2之间选择登录方式,选择0退出系统:\n");
scanf("%d",&sel);
switch(sel)
{
case 1: admin();
break;
case 2: guest( );
break;
case 0:
printf(" ★ See You ! ★ \n");
break;
}
}while(sel!=0);
}
void admin()
{
int m,password;
password='258';
printf("请输入密码:\n");
scanf("%d",&m);
while(m!=258)
{
printf("密码错误!请重新输入:\n");
scanf("%d",&m);
}
printf("成功登录!\n");
printf("按任意键进入菜单:\n");
getch();
char menu1[]={" *1.input information \n"
" *2.modify information \n"
" *3.delete information \n"
" *0.quit \n"
};
int sel1;
do
{ system("cls");
system("color 2");
printf("%s",menu1);
printf("请在1-3之间选择所要的操作的类型,选择0退出系统:");
scanf("%d",&sel1);
switch(sel1)
{
case 1: input();
break;
case 2: modify();
break;
case 3: del();
break;
case 0:
printf(" ★See You Next Time! ★ \n");
break;
}
}while(sel1!=0);
}
void guest()
{
printf(" ★欢迎您查询电话号码!★ \n");
printf("*************请选择所查号码类型!");
printf("按任意键进入选择菜单!*************\n");
getch();
char menu2[]={" *1.单位号码 \n"
" *2.私人号码 \n"
" *0.返回上一菜单 \n"
};
int sel2;
do
{
system("cls");
system("color 14");
printf("%s",menu2);
scanf("%d",&sel2);
switch(sel2)
{
case 1: cnodesearch();
break;
case 2: pnodesearch();
break;
case 0:
printf("Back to the previous menu!\n");
break;
}
}while(sel2!=0);
}
void input()
{
char menu3[]={" *1. 公司电话信息添加 \n"
" *2. 个人电话信息添加 \n"
" *0. 返回上一菜单 \n"
};
int sel3;
do
{ printf("%s",menu3);
printf("请在1-2之间选择,选择0返回上一菜单:\n");
scanf("%d",&sel3);
switch(sel3)
{
case 1: cnodeadd();
break;
case 2: pnodeadd();
break;
case 0:
printf("Back to the previous menu!\n");
break;
}
}while(sel3!=0);
}
void modify()
{
char menu4[]={" *1. 公司电话信息修改 \n"
" *2. 个人电话信息修改 \n"
" *0. 返回上一菜单 \n"
};
int sel4;
printf("按任意键确定:");
getch();
do
{ printf("%s",menu4);
printf("请在1-2之间选择,选择0返回上一菜单:\n");
scanf("%d",&sel4);
switch(sel4)
{
case 1: cnodemodify();
break;
case 2: pnodemodify();
break;
case 0:
printf("Back to the previous menu!\n");
break;
}
}while(sel4!=0);
}
void del()
{
char menu5[]={" *1. 公司电话信息删除 \n"
" *2. 个人电话信息删除 \n"
" *0. 返回上一菜单 \n"
};
int sel5;
printf("按任意键确定:");
getch();
do
{ printf("%s",menu5);
printf("请在1-2之间选择,选择0返回上一菜单:\n");
scanf("%d",&sel5);
switch(sel5)
{
case 1: cnodedel();
break;
case 2: pnodedel();
break;
case 0:
printf("Back to the previous menu!\n");
break;
}
}while(sel5!=0);
}
void cnodeadd()
{
FILE *fp;
pho_book bk[700];
int i=0,c;
if((fp=fopen("c:\\companyhaoma.txt","a"))==NULL)
{
printf("\nerror on opening company file");
return;
}
printf("\n要添加几条记录(填整数)?");
scanf("%d",&c);
for(i=0;i {
printf("\n输入公司名称:");
scanf("%s",&bk[i].company);
printf("\n输入公司地址:");
scanf("%s",&bk[i].addr);
printf("\n输入电话号码:");
scanf("%ld",&bk[i].num);
fprintf(fp,"%s\n",bk[i].company);
fprintf(fp,"%s\n",bk[i].addr);
fprintf(fp,"%ld \n",bk[i].num);
}
fclose(fp);
}
void pnodeadd()
{
FILE *fp;
pho_book bk[700];
int i=0,c;
if((fp=fopen("c:\\privatehaoma.txt","a"))==NULL)
{
printf("\nerror on opening guest file");
return;
}
printf("\n要添加几条记录(填整数)?");
scanf("%d",&c);
for(i=0;i {
printf("\n输入姓名:");
scanf("%s",&bk[i].name);
printf("\n输入工作单位:");
scanf("%s",&bk[i].work);
printf("\n输入电话号码:");
scanf("%ld",&bk[i].num);
fprintf(fp,"%s\n",bk[i].name);
fprintf(fp,"%s\n",bk[i].work);
fprintf(fp,"%ld\n",bk[i].num);
}
fclose(fp);
}
void cnodemodify()
{ FILE *fp;
struct pho_book bk[500];
struct pho_book bkt;
int i,sf,s,ii=0,it;
char sear[100];
char temp[100];
if((fp=fopen("c:\\companyhaoma.txt","r+"))==NULL)
{
printf("\n error on opening company file");
exit(1);
}
while((fread(&bkt,sizeof(struct pho_book),1,fp))==1)
{
strcpy(bk[ii].company,bkt.company);
strcpy(bk[ii].addr,bkt.addr);
ii++;
}
fclose(fp);
it=ii;
cc:
printf("\n1公司名称\n2公司地址\n3电话号码 你要修改什么?");
scanf("%d",&s);
if(s==1)
{
printf("\n请输入要查的公司名称:");
scanf("%s",&sear);
}else if(s==2){
printf("\n请输入要查的公司地址:");
scanf("%s",&sear);
}else if(s==3){
printf("\n请输入要查的电话号码");
scanf("%ld",&sear);
printf("\n公司名称:\t公司地址:\t电话号码");
i=0;
ii=0;
for(;ii {
if(s==1)
{
if(!strcmp(bk[ii].company,sear))
{
printf("\n%s\t%s\t",bk[ii].company,bk[ii].addr);
i++;
printf("\n请输入修改后的公司名称:");
scanf("%s",&temp);
strcpy(bk[ii].company,temp);
}
}
if(s==2)
{
if(!strcmp(bk[ii].addr,sear))
{
printf("\n%s\t%s\t",bk[ii].company,bk[ii].addr);
i++;
printf("\n请输入修改后的公司地址:");
scanf("%s",&temp);
strcpy(bk[ii].addr,temp);
}
}
}
if(i==0)
{
printf("\n对不起!没有你要找的数据");
}else
{ if((fp=fopen("c:\\companyhaoma.txt","wb"))==NULL)
printf("\nerro on opening company file");
exit(0);
for(ii=0;ii fwrite(&bk[ii],sizeof(struct pho_book),1,fp);
printf("\n修改完成!.");
fclose(fp);
}
printf("继续修改(1/0)?");
scanf("%d",&sf);
if(sf==1)
goto cc;
}
}
void pnodemodify()
{
FILE *fp;
struct pho_book bk[500];
struct pho_book bkt;
int i,sf,s,ii=0,it;
char sear[100];
char temp[100];
if((fp=fopen("c:\\privatehaoma.txt","r+"))==NULL)
{
printf("\n erro on opening private file");
exit(0);
}
while((fread(&bkt,sizeof(struct pho_book),1,fp))==1)
{
strcpy(bk[ii].company,bkt.company);
strcpy(bk[ii].addr,bkt.addr);
ii++;
}
fclose(fp);
it=ii;
cc:
printf("\n1姓名\n2工作单位\n3电话号码 你要修改什么?");
scanf("%d",&s);
if(s==1)
{
printf("\n请输入要查的姓名:");
scanf("%s",&sear);
}else if(s==2){
printf("\n请输入要查的工作单位:");
scanf("%s",&sear);
}else if(s==3){
printf("\n请输入要查的电话号码");
scanf("%ld",&sear);
printf("\n姓名:\t工作单位:\t电话号码");
i=0;
ii=0;
for(;ii {
if(s==1)
{
if(!strcmp(bk[ii].company,sear))
{
printf("\n%s\t%s\t",bk[ii].company,bk[ii].addr);
i++;
printf("\n请输入修改后的姓名:");
scanf("%s",&temp);
strcpy(bk[ii].company,temp);
}
}
if(s==2)
{
if(!strcmp(bk[ii].addr,sear))
{
printf("\n%s\t%s\t",bk[ii].company,bk[ii].addr);
i++;
printf("\n请输入修改后的工作单位:");
scanf("%s",&temp);
strcpy(bk[ii].addr,temp);
}
}
}
if(i==0)
{
printf("\n对不起!没有你要找的数据");
}else
{ if((fp=fopen("c:\\haoma.txt","wb"))==NULL)
printf("\nerro on opening target file");
exit(0);
for(ii=0;ii fwrite(&bk[ii],sizeof(struct pho_book),1,fp);
printf("\n修改完成!.");
fclose(fp);
}
printf("继续修改(1/0)?");
scanf("%d",&sf);
if(sf==1)
goto cc;
}
}
void cnodedel()
{
FILE *fp;
struct pho_book bk[700];
struct pho_book bkt;
int i,sf,s,ii=0,it,cv;
char sear[100];
if((fp=fopen("c:\\haoma.txt","rb"))==NULL){
printf("\nERROR oening customet file");
exit(0);
}
while((fread(&bkt,sizeof(struct pho_book),1,fp))==1)
{
strcpy(bk[ii].company,bkt.company);
strcpy(bk[ii].addr,bkt.addr);
ii++;
}
fclose(fp);
it=ii;
cc:
printf("\n1公司名称\n2公司地址\n你要查找那一条记录来删除?");
scanf("%d",&s);
if(s==1)
{
printf("\n请输入要查的公司名称:");
scanf("%s",&sear);
}else if(s==2){
printf("\n请输入要查的公司地址:");
scanf("%s",&sear);
}
printf("\n公司名称:\t公司地址:");
i=0;
ii=0;
for(;ii{
if(s==1)
{
if(!strcmp(bk[ii].name,sear))
{
printf("\n%s\t%s\t",bk[ii].company,bk[ii].addr);
i++;
printf("确定要删除吗(1/0)?");
scanf("%d",&cv);
for(;ii {
if(ii==it-1)
break;
strcpy(bk[ii].company,bk[ii+1].company);
strcpy(bk[ii].addr,bk[ii+1].addr);
}
}
}
if(s==2)
{
if(!strcmp(bk[ii].company,sear))
{
printf("\n%s\t%s\t",bk[ii].company,bk[ii].addr);
i++;
printf("/n确定要删除吗(1/0)?");
scanf("%d",&cv);
if(cv==1)
for(;ii {
if(ii==it-1)
break;
strcpy(bk[ii].company,bk[ii+1].company);
strcpy(bk[ii].addr,bk[ii+1].addr);
}
}
}
}
if(i==0){
printf("\n对不起!没有你要找的数据");
}else
{ if((fp=fopen("c:\\haoma.txt","wb"))==NULL)
{
printf("\nERROR oening customet file");
exit(0);
}
for(ii=0;ii fwrite(&bk[ii],sizeof(struct pho_book),1,fp);
printf("\n该记录已被删除!.");
fclose(fp);
}
printf("继续删除(1/0)?");
scanf("%d",&sf);
if(sf==1)
goto cc;
}
void pnodedel()
{
}
void pnodesearch()
{
FILE *fp;
char c;
if((fp=fopen("c:\\privatehaoma.txt","r+"))==NULL)
{
printf("Cannot open file strike any key exit!");
getchar();
exit(1);
}
c=fgetc(fp);
while(c!=EOF)
{
putchar(c);
c=fgetc(fp);
}
system("pause");
fclose(fp);
}
void cnodesearch()
{
FILE *fp;
char c;
if((fp=fopen("c:\\companyhaoma.txt","r+"))==NULL)
{
printf("Cannot open file strike any key exit!");
getchar();
exit(1);
}
c=fgetc(fp);
while(c!=EOF)
{
putchar(c);
c=fgetc(fp);
}
system("pause");
fclose(fp);
}
此系统存在缺陷,只是实现了信息的录入和打印输出。希望有时间用数据结构的知识解决。