本文实例为大家分享了C语言实现通讯录系统的具体代码,供大家参考,具体内容如下
设计要求
1.单位、个人信息查询
2.打开、写入保存这些信息的文件
完整代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Userinfo // 定义结构体类型;封装个人的信息
{
char name[20]; // 用户姓名
char sex[2]; // 性别
char cname[20]; // 单位
char mobileNumber[11]; // 手机
} Userinfo;
typedef struct Companyinfo // 定义结构体类型;封装个人的信息
{
char companyname[20]; // 姓名
char companyaddress[200]; // 单位地址
char telphone[8]; // 电话
} Companyinfo;
int count = 0; //系统中的现有人数
int countu = 0; //系统中的现有人数
void insertuserinfo(Userinfo *userinfo, int *countu)
{
printf("请输入要添加人的姓名:> ");
scanf("%s", (userinfo + (*countu))->name);
//flag:
printf("请输入要添加人的性别(男/女):> ");
scanf("%s", (userinfo + (*countu))->sex);
printf("请输入要添加人的工作单位:> ");
scanf("%s", &(userinfo + (*countu))->cname);
printf("请输入要添加的电话:> ");
scanf("%s", (userinfo + (*countu))->mobileNumber);
printf("添加成功!\n");
(*countu)++;
}
void insertcompanyinfo(Companyinfo *companyinfo, int *count)
{
printf("请输入要添加单位的名称:> ");
scanf("%s", (companyinfo + (*count))->companyname);
printf("请输入要添加单位的地址:> ");
scanf("%s", &(companyinfo + (*count))->companyaddress);
printf("请输入要添加单位的电话:> ");
scanf("%s", (companyinfo + (*count))->telphone);
printf("添加成功!\n");
(*count)++;
}
void DeleteUserinfo(Userinfo *userinfo, int *countu)
{
char _name[20];
if ((*countu) <= 0)
{
printf("此系统中还没有人员信息!\n");
return;
}
printf("请输入您要删除人员的姓名:> ");
scanf("%s", _name);
for (int i = 0; i < (*countu); i++)
{
if (strcmp((userinfo + i)->name, _name) == 0)
{
for (int j = i; j < (*countu) - 1; j++)
{
strcpy((userinfo + j)->name, (userinfo + j + 1)->name);
strcpy((userinfo + j)->sex, (userinfo + j + 1)->sex);
strcpy((userinfo + j)->cname ,(userinfo + j + 1)->cname);
strcpy((userinfo + j)->mobileNumber, (userinfo + j + 1)->mobileNumber);
}
(*countu)--;
printf("删除成功!\n");
return;
}
}
printf("当前系统中没有此人!\n");
}
void DeleteCompanyinfo(Companyinfo *companyinfo, int *count)
{
char _name[20];
if ((*count) <= 0)
{
printf("此系统中还没有单位信息!\n");
return;
}
printf("请输入您要删除单位名称:> ");
scanf("%s", _name);
for (int i = 0; i < (*count); i++)
{
if (strcmp((companyinfo + i)->companyname, _name) == 0)
{
for (int j = i; j < (*count) - 1; j++)
{
strcpy((companyinfo + j)->companyname, (companyinfo + j + 1)->companyname);
strcpy((companyinfo + j)->companyaddress, (companyinfo + j + 1)->companyaddress);
strcpy((companyinfo + j)->telphone, (companyinfo + j + 1)->telphone);
}
(*count)--;
printf("删除成功!\n");
return;
}
}
printf("当前系统中没有此单位!\n");
}
void Search(const Companyinfo *companyinfo, const int count)
{
char _name[20];
printf("请输入您要查找的单位名称:> ");
scanf("%s", _name);
for (int i = 0; i < count; i++)
{
if (strcmp((companyinfo + i)->companyname, _name) == 0)
{
printf("*********=======您查单位信息为=======*********\n");
printf(" ********* 单位名称:> %s\n", (companyinfo + i)->companyname);
printf(" ********* 单位地址:> %s\n", (companyinfo + i)->companyaddress);
printf(" ********* 单位电话:> %s\n", (companyinfo + i)->telphone);
return;
}
}
printf("没有找到您要查找的单位!\n");
}
void SearchUser(const Userinfo *userinfo, const int countu)
{
char _name[20];
printf("请输入您要查找人的信息:> ");
scanf("%s", _name);
for (int i = 0; i < countu; i++)
{
if (strcmp((userinfo + i)->name, _name) == 0)
{
printf("*********=======您查个人信息为=======*********\n");
printf(" ********* 姓名:> %s\n", (userinfo + i)->name);
printf(" ********* 性别:> %s\n", (userinfo + i)->sex);
printf(" ********* 单位:> %d\n", (userinfo + i)->cname);
printf(" ********* 电话:> %d\n", (userinfo + i)->mobileNumber);
return;
}
}
printf("没有找到您要查找的人员!\n");
}
void Alter(Companyinfo *companyinfo, const int count)
{
char _name[20];
printf("请输入您要修改的单位的名称:> ");
scanf("%s", _name);
for (int i = 0; i < count; i++)
{
if (strcmp((companyinfo + i)->companyname, _name) == 0)
{
printf("请输入修改后的单位名称:> ");
scanf("%s", (companyinfo + i)->companyname);
printf("请输入修改后的单位地址:> ");
scanf("%s", (companyinfo + i)->companyaddress);
printf("请输入修改后的单位电话:> ");
scanf("%s", (companyinfo + i)->telphone);
printf("修改成功!\n");
return;
}
}
printf("没有找到您要查找的单位!\n");
}
void Show(const Companyinfo *companyinfo, const int count)
{
if (count == 0)
{
printf("没有找到您要查找的单位!\n");
}
else
{
for (int i = 0; i < count; i++)
{
printf("%5s |%13s |%s\n", (companyinfo + i)->companyname, (companyinfo + i)->telphone, (companyinfo + i)->companyaddress);
}
}
}
void OpenFile()
{
FILE *fp = NULL;
char buff[255];
fp = fopen("/Teldict.txt", "r");
printf("打开文件名:Teldict.text \n");
printf("内容如下:\n");
fgets(buff, 255, (FILE*)fp);
printf("1: %s\n", buff );
fclose(fp);
}
void WriteFile()
{
char s[100];
FILE *fp = NULL;
fp = fopen("/Teldict.txt", "w+");
printf("请输入写入文件的内容: ");
scanf("%s",&s);
fprintf(fp,s);
fputs(s, fp);
// fputs("This is testing for fputs...\n", fp);
fclose(fp);
}
int StcCmp(const void*num1, const void *num2)
{
return (strcmp(((Companyinfo *)num1)->companyname, ((Companyinfo *)num2)->companyname) > 0) ? 1 : -1;
}
int switchuserinfo(Userinfo *userinfo)
{
int b;
printf("\n");
printf("1)新建个人信息\n");
printf("2)修改个人信息\n");
printf("3)删除个人信息\n");
printf("4)返回上一菜单\n");
printf("请选择上面序号进行相应的操作: ");
scanf("%d",&b);
switch(b)
{
case 1:
{
insertuserinfo(userinfo,&countu);
break;
}
case 2:
{
void Alter(Companyinfo *companyinfo, const int count);
break;
}
case 3:
{
void Alter(Companyinfo *companyinfo, const int count);
break;
}
case 4:break;
}
return 0;
}
int switchcompanyinfo(Companyinfo *companyinfo)
{
int b;
printf("\n");
printf("1)新建单位信息\n");
printf("2)修改单位信息\n");
printf("3)删除单位信息\n");
printf("4)查询单位信息\n");
printf("5)显示单位信息\n");
printf("6)返回上一菜单\n");
printf("请选择上面序号进行相应的操作: ");
scanf("%d",&b);
switch(b)
{
case 1:
{
insertcompanyinfo(companyinfo,&count);
break;
}
case 2:
{
Alter(companyinfo,count);
break;
}
case 3:
{
DeleteCompanyinfo(companyinfo,&count);
break;
}
case 4:
{
Search(companyinfo,count);
break;
}
case 5:
{
Show(companyinfo,count);
break;
}
case 6:break;
}
return 0;
};
int main()
{
Userinfo userinfo[10];
Companyinfo companyinfo[10];
int inputkey;
printf("欢迎使用电话薄查询系统!\n\n");
qq:
printf("请输入登录账号:");
scanf("%d",&inputkey);
int input = 1;
if (inputkey==1001)
{
while (input)
{
printf("\n");
printf("请选择对应序号:(1) 单位信息管理; (2)个人信息管理 (3)重新登录 (4)退出 :");
scanf("%d",&input);
switch (input)
{
case 1: //单位信息管理
switchcompanyinfo(companyinfo);
break;
case 2: //个人信息管理
switchuserinfo(userinfo);
break;
case 3: //
goto qq;
break;
case 4:
printf("感谢您试用本服务系统,欢迎您的下次使用!\n");
system("pause");
return 0;
};//while
}
}
else
{
while (input)
{
printf("请选择操作序号 :\n\n");
printf("1)单位查询\n");
printf("2)个人信息查询\n");
printf("3)打开文件\n");
printf("4)写入文件\n");
printf("5)重新登录\n");
printf("6)退出\n");
scanf("%d",&input);
switch (input)
{
case 1: //单位查询
Search(companyinfo, count);
break;
case 2: //个人信息查询
SearchUser(userinfo, countu);
break;
case 3: //打开文件
OpenFile();
break;
case 4: //写入文件
WriteFile();
break;
case 5 :
goto qq; break;
case 6:
printf("感谢您试用本服务系统,欢迎您的下次使用!\n");
system("pause");
return 0;
};//while
}
}
printf("\n");
system("pause");
return 0;
}
运行结果
本代码设置的登录账号是1,当然你也可以进行修改。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。