开发工具:
文件大小: 8kb
下载次数: 0
上传时间: 2008-06-24
详细说明: #include
#include
/* 程序多次调用biodkey(),应包含头文件bios.h */
#include
/* 程序多次调用clrscr(),应包含头文件conio.h */
#include
#define MAX 100
#define PAGE 2
#define PRINT1 printf("--------------------------------------\n")
#define PRINT2 printf("NUM---NAME---AGE---MOBILE---ADDRESS\n")
#define PRINT3 printf("%d,%s,%d,%s,%s,\n",message[i].num,message[i].name,m essage[i].age,message[i].mobile[15],message[i].address);
int sum;
struct message_type
{
int num;
char name[15]; /* name应是数组 */
int age;
char mobile[15];
char address[30]; /* address应是数组 */
}message[MAX];
main()
{
int choice;
sum = read_message();
bioskey(0);
do
{
clrscr();
printf("\n\n\n ********通讯录管理系统********\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(" 7.资料整理\n\n");
printf(" 0.退出系统\n\n");
printf("请选择(0-7):");
scanf("%d",&choice);
switch(choice)
{
case 1: input_message();break;
case 2: output_message();break;
case 3: inquire_message();break;
case 4: insert_message();break;
case 5: del_message();break;
case 6: revise_message();break;
case 7: sort_message();break;
case 0: break;
}
}while(choice!=0);
save_message(sum);
printf("\n -以上资料已保存!-(文件名:messagenotes.txt)\n");
}
/*保存信息*/
save_message(int sum)
{FILE *fp;
int i;
if((fp=fopen("messagenotes.txt","wb"))==NULL)
{printf("读文件错误!\n");
return;
}
for(i=0;iif(fwrite(&message[i],sizeof(struct message_type),1,fp)!=1)
printf("写文件错误!\n");
fclose(fp);
}
/* Function: input_message() */
input_message()
{
int i=0; /* 变量s无用,已删除 */
clrsrc();
printf("\n\n 录入通讯录\n"); /* 笔误 */
printf("\n -------------------------------\n");
do
{
printf("\n 第%d号录入",i+1);
printf("\n 编号:");
scanf("%d",&message[i].num);
if(message[i].num == 0)
break;
printf("\n 姓名:");
scanf("%s",message[i].name);
printf("\n 年龄:");
scanf("%d",&message[i].age);
printf("\n 电话:");
scanf("%s",message[i].mobile); /* message的mobile是数组,不用取址 */
printf("\n 地址:");
scanf("%s",message[i].address);
i++;
}while(i
printf("\n --第%d号录入完毕 --\n",i);
sum = i;
printf("\n 按任意键返回住菜单!"); /* 本语句无效,程序已自动返回菜单 */
}
/* Function: read_message() */
int read_message()
{
FILE *fp;
int i = 0;
if((fp=fopen("messagenotes.txt","rb")) == NULL)
{
printf("\n\n*****暂时没有任何保存信息,按任意键进入主菜单选择进行信息录入!*****\n");
return;
}
while(!feof(fp)) /* feof()遇文件结束标志时返回非0值,不能依赖于1 */
{
fread(&message[i],sizeof(struct message_type),1,fp);
if(message[i].num == 0)
break;
else
i++;
}
fclose(fp);
return(i);
}
/* Function: output_message() */
output_message()
{
int i=0,j=0,count,page=1;
clrscr();
printf("\n\n --通讯录资料-- 第%d页\n\n",page);
PRINT2;
PRINT1;
do
{
if(message[i].num != 0)
{
j++;
if(j%PAGE != 0) /* 本if句恒假 */
{
PRINT3;
PRINT1;
}
else
{
PRINT3;
PRINT1;
if(message[i+1].num!=0)
{
print("按任意键继续!");
bioskey(0);
clrscr();
printf("\n\n --通讯录资料-- 第%d页\n\n",++page);
PRINT2;
PRINT1;
}
}
}
i++;
}while(message[i].num != 0);
printf("按任意键返回主菜单!");
bioskey(0);
}
/* Function: insert_message() */
insert_message()
{
int i=sum,j,flag=0;
char choice;
clrscr();
printf("\n\n 添加一条资料\n");
printf(" ---------------------------\n");
do
{
message[i].num = ++sum;
printf("\n 新资料编号:%d",message[i].num);
printf("\n 姓名:");
scanf("%s",message[i].name);
printf("\n 年龄:");
scanf("%d",&message[i].age);
printf("\n 电话:");
scanf("%s",&message[i].mobile[15]);
printf("\n 地址:");
scanf("%s",message[i].address);
printf("\n 要继续吗?(Y/N)");
choice=getch();
if (choice=='y'||choice=='Y')
{printf("\n 继续!\n");
i++;
flag=1;
}
else flag=0;
}while(flag==1);
printf("\n 按任意键返回主菜单!");
bioskey(0);
}
/*删除模块*/
del_message()
{int i=sum,j,flag=0;
char choice;
clrscr();
printf("\n\n 删除一条资料\n");
printf(" ---------------------------\n");
do
{message[i].num=++sum;
printf("\n 删除资料编号:%d",message[i].num);
printf("\n 姓名:");
scanf("%s",message[i].name);
printf("\n 年龄:");
scanf("%d",&message[i].age);
printf("\n 电话:");
scanf("%s",&message[i].mobile[15]);
printf("\n 地址:");
scanf("%s",message[i].address);
printf("\n 要继续吗?(Y/N)");
choice=getch();
if (choice=='y'||choice=='Y')
{printf("\n 继续!\n");
i++;
flag=1;
}
else flag=0;
}while(flag==1);
printf("\n 按任意键返回主菜单!");
bioskey(0);
}
/*修改模块*/
revise_message()
{int i=0,choice,revise_num,flag;
do
{clrscr();
printf("\n 输入要修改的资料编号:");
scanf("%d",&revise_num);
for(i=0;iif(message[i].num==revise_num)
{printf("\n --资料信息--\n");
PRINT1;
PRINT2;
PRINT3;
printf("\n 您要修改哪一项?\n");
printf("\n 1.姓名\n");
printf("\n 2.年龄\n");
printf("\n 3.电话\n");
printf("\n 4.地址\n");
printf("\n 请选择(1-4):");
scanf("%d",&choice);
switch(choice)
{case 1: printf("\n 请输入修改后的姓名:");
scanf("%s",&message[i].name);break;
case 2: printf("\n 请输入修改后的年龄:");
scanf("%d",&message[i].age);break;
case 3: printf("\n 请输入修改后的手机:");
scanf("%s",&message[i].mobile[15]);break;
case 4: printf("\n 请输入修改后的地址:");
scanf("%s",&message[i].address);break;
}
PRINT1;
PRINT2;
PRINT3;
break;
}
if (i==sum)
{printf("\n 无该资料!");
bioskey(0);
}
printf("\n\n 继续修改吗?(Y/N)");
choice=getch();
if (choice=='Y'||choice=='y')
{flag=1;
printf("\n 继续!\n");
}
else flag=0;
}while(flag==1);
printf("\n 按任意键返回主菜单!");
bioskey(0);
}
/* Function: inquire_name() */
inquire_name()
{
int i,choice,j=0; /* 笔误 */
char inquire_name[15]; /* 变量inquire_name应为数组 */
clrscr();
printf("\n 请输入要查询的姓名:");
scanf("%s",inquire_name);
for(i=0; i{ /* 以下语句,在0if(strcmp(message[i].name,inquire_name) == 0)
{
printf("\n --资料--\n");
PRINT1;
PRINT2;
PRINT3;
break; /* 增加 */
}
else
j++;
}
if(j == sum)
printf("\n 查询信息不存在!");
bioskey(0);
}
/* Function: inquire_age() */
inquire_age() /* 对本函数作更改,参与原函数比较 */
{
int i,choice,j=0;
int inquire_age;
clrscr();
printf("\n 请输入要查询的年龄:");
scanf("%d",&inquire_age);
for(i=0; iif(message[i].age == inquire_age)
{
printf("\n --资料--\n");
PRINT1;
PRINT2;
PRINT3;
break;
}
else
j++;
if(j == sum)
printf("\n 查询信息不存在!");
bioskey(0);
}
/* Function: inquire_message() */
inquire_message()
{
int choice; /* 原语句笔误,已改 */
do
{
clrscr();
printf("\n\n\n **********查询资料**********\n\n\n");
printf(" 1.按姓名查询\n\n");
printf(" 2.按年龄查询\n\n");
scanf("%d",&choice);
switch(choice)
{
case 1: inquire_name();break; /* 为函数调用 */
case 2: inquire_age();break; /* 同上 */
case 0: break;
}
}while(choice != 0);
}
/*排序模块*/
sort_num()
{struct message_type *p,*q[MAX];
int i,j,k;
clrscr();
printf("\n 按编号排序\n");
printf("---------------------------------------------\n");
printf("\n 排名 编号 姓名 年龄 手机 地址\n");
p=message;
for(i=0;i{k=i;
for(j=i+1;jif(q[k]->numnum)
k=j;
if(k!=i)
{p=q[i];q[i]=q[k];q[k]=p;}
}
for(i=0;iprintf("\n%d %d %s %d %s %s\n",
i+1,q[i]->num,q[i]->name,q[i]->age,q[i]->mobile[15],q[i]->address);
bioskey(0);
}
...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.