C语言实现通讯录系统课程设计
作者:成就一亿技术人
这篇文章主要为大家详细介绍了C语言实现通讯录系统课程设计,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了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)++;/*已有人数加1*/ } 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)++;/*已有人数加1*/ } 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; }/*if*/ }/*for*/ 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; }/*if*/ }/*for*/ 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; } }/*for*/ 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; } }/*for*/ 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; } }/*for*/ 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,当然你也可以进行修改。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。