对好友信息进行管理,好友信息包括姓名、年龄、性别、住址、QQ、电话等。
要求:
(1) 系统以菜单方式工作
(2) 好友信息输入功能(好友信息以文件形式保存)。
(3) 输出好友信息功能。
(4) 查询功能,并设定子菜单,按姓名查询、按电话号码查询。
(5) 对指定好友的信息进行删除和修改功能。
问题描述:
假设自己有好友若干,首先确定输入好友的数量;然后按照姓名的排序依次输入各好友信息,并使用文件的操作保存信息于磁盘当中。
在菜单中选择查询选项并且按照按姓名或者电话号码来查找好友信息。通过输入好友姓名来删除好友信息,或者修改好友信息的任意一项,如果认识了新的好友,可以添加好友信息。
源代码:
#include
#include
#include
#include"conio.h"
#define N 30
typedef struct haoyou
{
charname[20];
charsex[6];
int age;
charadress[50];
charQQ[15];
chartel[15];
}haoyou;
void menu();
int reads(haoyoustu[N]); //读取
void save(haoyou stu[N],int n);//保存
void add();//添加
void del();//删除
void search();//查询
void change();//修改
void output();//信息显示
void main()
{
int n;
while(1)
{
menu();
scanf("%d",&n);
switch(n)
{
case1: add();break;
case2: output();break;
case3: del();break;
case4: change();break;
case5: search();break;
case 0:printf("欢迎下次使用\n");getchar();exit(0); //退出 程序
default:
printf("\t\t ***********************************\n");
printf("\t\t 输入错误,请输入列表中存在的编号 \n ");
printf("\t\t ***********************************\n");
}
printf("\t\t\t *************\n");
printf("\t\t\t 按任意键返回\n");
printf("\t\t\t *************\n");
getch();
fflush(stdin);//用来清空输入缓存,以便不影响后面输入的东西
}
}
void menu()
{
system("color 3f"); //控制台颜色操作(前景加后景)
system("cls");
printf("\t\t*************好友信息管理系统************\n");
printf("\t\t______________ 主 菜 单 _______________\n");
printf("\t\t| 1.键入好友信息 |\n");
printf("\t\t| 2.显示好友信息 |\n");
printf("\t\t| 3.删除好友信息 |\n");
printf("\t\t| 4.更改好友信息 |\n");
printf("\t\t| 5.查询好友信息 |\n");
printf("\t\t| 0.退出程序 |\n");
printf("\t\t-----------------------------------------\n");
printf("\n");
printf("\t\t\t请输入您的选项(0-5):\n");
}
int reads(haoyou stu[N]) // 读取好友文件中的内容
{
FILE*fp;
inti=0;
if((fp=fopen("d:\\haoyou","r"))==NULL)
{
printf("文件打开失败!\n");
return 0;
}
else
{
for(i=0;!feof(fp);i++)
fscanf(fp,"%s %s %s %s%s\n",stu[i].name,stu[i].sex,stu[i].adress,stu[i].QQ,stu[i].tel);
}
fclose(fp);
returni;
}
void save(haoyou stu[N],int n) //好友信息改变后更新文件
{
FILE*fp;
inti=0;
if((fp=fopen("d:\\haoyou","w"))==NULL)
{
printf("文件打开失败!\n");
return ;
}
else
{
for(i=0;i
fprintf(fp,"%s %s %s %s%s\n",stu[i].name,stu[i].sex,stu[i].adress,stu[i].QQ,stu[i].tel);
}
fclose(fp);
}
void add()
{
FILE*fp;
intn,i;
haoyoustu;
if((fp=fopen("d:\\haoyou","a"))==NULL) //如果文件已经存在,可以追加好友信息
{
if((fp=fopen("d:\\haoyou","w"))==NULL) // 文件不存在时,创建新文件,输入好友信息
{
printf("文件打开失败!\n");
return;
}
}
printf("**************************************\n");
printf(" 请输入要添加的好友数量,按回车键确认:\n");
printf("**************************************\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("**************************************************************\n");
printf(" 请输入第%d个好友的姓名、性别、地址、QQ号和电话用空格分开,并按回车键确认:\n",i);
printf("**************************************************************\n");
scanf("%s %s %s %s%s",stu.name,stu.sex,stu.adress,stu.QQ,stu.tel);
fprintf(fp,"%s %s %s %s%s\n",stu.name,stu.sex,stu.adress,stu.QQ,stu.tel);
}
fclose(fp);
}
void output() // 好友信息显示函数
{
haoyoustu[N];
int i,n;
int num;
n=reads(stu);
printf("**********************所有的好友信息如下*******************\n\n");
printf(" 序号 姓名 性别 地址 QQ号 电话 \n");
printf("*************************************************************\n");
for(i=0;i
printf("%d |%-6s |%-6s| %-6s |%-6s |%-6s |\n",i+1,stu[i].name,stu[i].sex,stu[i].adress,stu[i].QQ,stu[i].tel);
printf("*************************************************************\n");
printf("\t\t\t--------------------------\n"); //对检索的好友进行操作
printf("\t\t\t**** 1.删除该好友信息 ****\n");
printf("\t\t\t**** 2.修改该好友信息 ****\n");
printf("\t\t\t**** 3.退出本级菜单 ****\n");
printf("\t\t\t--------------------------\n");
printf("\t\t\t输入要进行的操作<1-3>\n");
scanf("%d",&num);
switch(num)
{
case1: del(); break;
case 2:change(); break;
}
}
void del()
{
haoyoustu[N];
charming[20];
intn,i,j;
n=reads(stu);
printf("********************************************\n");
printf("请输入要删除信息的好友姓名,按回车键确认:\n");
printf("********************************************\n");
scanf("%s",ming);
for(i=0;i
if(strcmp(ming,stu[i].name)==0) break;
if(i>=n)
{
printf("没有找到该好友信息!\n");
return;
}
else
{
for(j=i+1;j
stu[j-1]=stu[j];
}
save(stu,n-1);
printf("删除成功!\n");
}
void change() //好友信息更改
{
haoyoustu[N];
intn,i;
charming[20];
printf("******************************************\n");
printf("请输入要更改信息的好友姓名,按回车键确认:\n");
printf("******************************************\n");
scanf("%s",ming);
n=reads(stu);
for(i=0;i
if(strcmp(ming,stu[i].name)==0)
break;
if(i>=n)
{
printf("无此好友信息!");
return;
}
printf("**************************************************************\n");
printf("请输入更改后好友的姓名、性别、地址、QQ号、电话,按回车键确认:\n");
printf("**************************************************************\n");
scanf("%s %s%s %s%s",stu[i].name,stu[i].sex,stu[i].adress,stu[i].QQ,stu[i].tel);
save(stu,n);
}
void name_search() // 按姓名对好友信息查询
{
haoyoustu[N];
charnamed[20];
inti,n;
n=reads(stu);
printf("****************************************\n");
printf("请输入待查询的好友姓名,按回车键确认:\n");
printf("****************************************\n");
scanf("%s",named);
for(i=0;i
if(strcmp(named,stu[i].name)==0) break;
if(i>=n)
{
printf("没有找到该好友信息!\n请重新输入\n");
return;
}
else
{
printf("*************************************************************\n");
printf(" 姓名 性别 地址 QQ号 电话 \n");
printf("*************************************************************\n");
printf("\n %s %s %s %s %s\n",stu[i].name,stu[i].sex,stu[i].adress,stu[i].QQ,stu[i].tel);
printf("*************************************************************\n");
}
}
void tel_search() // 按电话对好友信息查询
{
haoyoustu[N];
charphone[20];
inti,n;
n=reads(stu);
printf("****************************************\n");
printf("请输入待查询的好友电话,按回车键确认: \n");
printf("****************************************\n");
scanf("%s",phone);
for(i=0;i
if(strcmp(phone,stu[i].tel)==0) break;
if(i>=n)
{
printf("没有找到该好友信息!\n请重新输入\n");
return;
}
else
{
printf("*************************************************************\n");
printf(" 姓名 性别 地址 QQ号 电话 \n");
printf("*************************************************************\n");
printf("\n%s %s %s %s %s\n",stu[i].name,stu[i].sex,stu[i].adress,stu[i].QQ,stu[i].tel);
printf("*************************************************************\n");
}
}
void search() //按 条件进行查询
{
int item;
printf("\t\t\t**********************\n");
printf("\t\t\t**** 1.按姓名查询 ****\n");
printf("\t\t\t**** 2.按电话查询 ****\n");
printf("\t\t\t**** 3.退出本菜单 ****\n");
printf("\t\t\t**********************\n");
printf("请选择查询项目:\n");
scanf("%d",&item);
switch(item)
{
case 1: name_search(); break;
case 2: tel_search(); break;
}
}
*****************************************---------------------***************************************
-------------------------------------------只用于学习和交流。***************************************
****************************************************************************************************