通讯录管理系统—优化版 (C语言 期末大作业 课程设计)

文章目录

  • 通讯录管理系统 --- 优化版
    • 一、设计要求
    • 二、总体设计
      • 1.系统具体功能
      • 2.数据结构设计
      • 3.函数功能
      • 4.磁盘文件
    • 三、详细设计
      • 主界面
      • 管理员模块
      • 用户模块
    • 四、程序测试
        • 1.查看文件
        • 2.主界面测试
        • 3.管理员界面测试
        • 4.用户界面测试
        • 5.退出测试
    • 五、系统使用说明
        • 使用说明:

通讯录管理系统 — 优化版

一、设计要求

设计一个完整的通讯录管理系统。信息至少包含编号、姓名、年龄、电话、籍贯、单位等。
功能要求如下:

1.管理员功能
(1)建立通讯录信息;(通讯录信息利用文件存储)
(2)能够提供添加、删除和修改通讯录信息的功能;
(3)能够按表格方式输出通讯录信息;
(4)按籍贯或单位统计通讯录人员信息。

2.普通用户功能
(1)按姓名或单位查询;
(2)实现电话的模糊查询(即输入电话的前几位即可查询);
(3)根据您输入单位自动生成某单位的内部通讯录(按照年龄从大到小保存在一个新的文件中);
(4)输出某单位的内部通讯录信息。

二、总体设计

1.系统具体功能

本通讯录管理系统具有两个用户状态下的模式,可以通过用户账号进行登录,也可通过管理员账号进行登录;具体如下图所示。
通讯录管理系统—优化版 (C语言 期末大作业 课程设计)_第1张图片

2.数据结构设计

定义一个结构体类型list,包括姓名、年龄、编号、电话、籍贯、单位,共6个结构体成员;使用define定义结构体的长度LEN。

#define LEN sizeof(struct list)  //宏定义结构体长度
struct list 
{ 
	char name[30];  //名字 
	char age[30]; //年龄
	int number;  //编号 自动生成
	char handset[30]; //电话
	char address[30]; //籍贯
	char unit[30];//单位
}; 

3.函数功能

函数名 功能说明
void admin 管理员界面
void user 用户界面
void exit 退出
void admin_est 建立通讯录
void est_add 添加通讯录
void est_delet 删除通讯录
void est_renew 修改通讯录
void admin_print_all 输出通讯录全部信息
void admin_tongji 统计通讯录信息
void user_jqcx 精确查找
void user_mhcx 模糊查找
void user_save 保存通讯录到文件
sort_computer 按计算机成绩排序
void user_paixu 按姓名字母排序
void user_print 输出单位通讯录

4.磁盘文件

注意!这里的文件不能忘记了登录系统时所必须的!文件与CPP程序在同一个目录下,也可以根据个人需要更改位置,但对应的源程序文件读写位置也应做相应的更改。

本系统使用两个磁盘文件:
(1)存放通讯录联系人信息的文件(test.txt)
(2)存放成绩单信息的文件(安工.dat)
(3)存放管理员与用户进入系统密码的文件(num_key.txt)

三、详细设计

主界面

主界面显示本系统名称及制作者学号和姓名。在本界面中显示两个用户,分别为管理员和用户。选择1管理员,进入管理员模块,需要输入管理员密码;选2用户,进入用户模块,需要输入用户密码;选择3退出系统,离开该系统。
此模块主函数**main()**代码如下:

void main()  //主函数 主界面
{
	printf(">>>>>>>>>>>>>>>>>>>>>>>>>\n");
	printf("<   程序作者:Mye_Strive     >\n");
	printf("<   班级:计算机 >\n");
	printf("<   学号:123456    >\n");
	printf("<<<<<<<<<<<<<<<<<<<<<<<<<\n");
	printf("\n");
	while(1)
	{
		char num[10];
		printf("       ┌─────────┐\n");
		printf("       │  主界面 │\n");
		printf("       └─────────┘\n");
		printf("     ┌─────────────┐\n");
		printf("     │ 1 管理员系统│\n");
		printf("     │ 2 用户系统  │\n");
		printf("     │ 3 退出      │\n");
		printf("     └─────────────┘\n");
		printf("\n");
		printf("     =*=*=*=*=*=*=*=*=\n");
		printf("      请输入您的操作\n");
		printf("     =*=*=*=*=*=*=*=*=\n");
		printf("\n");
		gets(num);
		printf("\n");
		if(strlen(num)>1)
		{
			printf("     =*=*=*=*=*=\n");
			printf("      操作错误!\n");
			printf("     =*=*=*=*=*=\n");
			printf("\n");
			continue;
		}
		switch(*num)
		{
		case '1':
			{
				admin();
			}
			break;
		case '2':
			{
				user();
			}
			break;
		case '3':
			{
				exit(); 
				return ;
			}break;
		default :
			{
				printf("     =*=*=*=*=*=\n");
				printf("      操作错误!\n");
				printf("     =*=*=*=*=*=\n");
				printf("\n");
			}
			break;
		}
	}
}

管理员模块

该模块主要由三大模块组成:建立通讯录信息模块、输出通讯录信息模块、统计通讯录信息模块。各模块的主要功能如下:
建立通讯录信息模块:此模块下包括添加、删除、修改操作。
此模块函数void admin_est() 代码如下:

void admin_est() //建立通讯录  管理
{
	while(1)
	{
		char num[10];
		printf("     ┌─────────────┐\n");
		printf("     │ 1 添加通讯录│\n");
		printf("     │ 2 删除通讯录│\n");
		printf("     │ 3 修改通讯录│\n");
		printf("     │ 4 退出      │\n");
		printf("     └─────────────┘\n");
		printf("\n");
		printf("     =*=*=*=*=*=*=*=\n");
		printf("     请输入您的操作\n");
		printf("     =*=*=*=*=*=*=*=\n");
		printf("\n");
		gets(num);
		printf("\n");
		if(strlen(num)>1)
		{
			printf("     =*=*=*=*=*=\n");
			printf("      操作错误!\n");
			printf("     =*=*=*=*=*=\n");
			printf("\n");
			continue;
		}
		switch(*num)
		{
		case '1':
			{
				est_add();
			}
			break;
		case '2':
			{
				est_delet();
			}
			break;
		case '3':
			{
				est_renew();
			}
			break;
		case '4':return ;break;
		default :
			{
				printf("     =*=*=*=*=*=\n");
				printf("      操作错误!\n");
				printf("     =*=*=*=*=*=\n");
				printf("\n");
			}break;
		}
	}
}

输出通讯录信息模块:按表格的方式输出通讯录内所有联系人的信息,让使用者更加清晰直观地了解通讯录内部的所有信息。
此模块函数void admin_print_all()代码如下:

void admin_print_all() //输出通讯录全部信息  管理
{
	FILE *fp;
	struct list *p;
	int i=0;
	p=(struct list *)malloc(LEN);
	fp=fopen("test.txt","r");
	if(fp==NULL)
	{
		printf("     =*=*=*=*=*=*=*=*=*=*=\n");
		printf("      can not open file !\n");
		printf("     =*=*=*=*=*=*=*=*=*=*=\n");
		printf("\n");
		return ;
	}
	while(fread(p,LEN,1,fp))
	{
		i++;
	}
	rewind(fp);
	if(i==0)
	{
		fclose(fp);
		printf("     =*=*=*=*=*=*=*=*=*=*=\n");
		printf("     通讯录为空!无法输出!\n");
		printf("     =*=*=*=*=*=*=*=*=*=*=\n");
		printf("\n");
		return ;
	}
	printf("     =*=*=*=*=*=*=*=*=*=\n");
	printf("      该通讯录共有%d人\n",i);
	printf("     =*=*=*=*=*=*=*=*=*=\n");
	printf("\n");
	i=0;
	while(fread(p,LEN,1,fp))
	{
		i++;
		if(i==1)
		{
			printf("=======================================================================\n");
			printf("|姓名        |编号   |年龄  |电话         |籍贯        |单位          |\n");
		}
		printf("-----------------------------------------------------------------------\n");
		printf("|%-12s|%-7d|%-6s|%-13s|%-12s|%-14s|\n",p->name,p->number,p->age,p->handset,p->address,p->unit);
	}
	printf("=======================================================================\n");
	fclose(fp);
}

统计通讯录信息模块:提示用户选择籍贯或者单位方式统计相关联系人的信息,并按表格方式输出。
此模块函数void admin_tongji()代码如下:

void admin_tongji() //统计通讯录信息  管理
{
	while(1)
	{
		FILE *fp;
		struct list *p;
		char num[10];
		p=(struct list *)malloc(LEN);
		fp=fopen("test.txt","r");
		if(fp==NULL)
		{
			printf("can not open file !\n");
			return ;
		}
		printf("     ┌─────────────┐\n");
		printf("     │ 1 按籍贯统计│\n");
		printf("     │ 2 按单位统计│\n");
		printf("     │ 3 退出      │\n");
		printf("     └─────────────┘\n");
		printf("\n");
		printf("     =*=*=*=*=*=*=*=\n");
		printf("      请输入您的操作\n");
		printf("     =*=*=*=*=*=*=*=\n");
		printf("\n");
		gets(num);
		printf("\n");
		if(strlen(num)>1)
		{
			printf("     =*=*=*=*=*=\n");
			printf("      操作错误!\n");
			printf("     =*=*=*=*=*=\n");
			printf("\n");
			continue;
		}
		代码过多,这里省略部分代码...
		代码过多,这里省略部分代码...
		代码过多,这里省略部分代码...
		case '2':
			{
				char str[30];
				int flag=0,i=0;
				printf("     =*=*=*=*=*=*=*=*=*=*=*=\n");
				printf("      请输入统计的单位名称\n");
				printf("     =*=*=*=*=*=*=*=*=*=*=*=\n");
				printf("\n");
				gets(str);
				printf("\n");
				while(fread(p,LEN,1,fp))
				{
					if(strcmp(p->unit,str)==0)
					{
						flag=1;
						break;
					}
				}
				rewind(fp);
				if(flag==0)
				{
					printf("     =*=*=*=*=*=*=*=\n");
					printf("      此单位不存在!\n");
					printf("     =*=*=*=*=*=*=*=\n");
					printf("\n");
					fclose(fp);
					return ;
				}
				while(fread(p,LEN,1,fp))
				{
					if(strcmp(p->unit,str)==0)
					{
						i++;
						if(i==1)
						{
							printf("      =*=*=*=*=*=*=\n");
							printf("      查询结果如下\n");
							printf("      =*=*=*=*=*=*=\n");
							printf("\n");
							printf("=======================================================================\n");
							printf("|姓名        |编号   |年龄  |电话         |籍贯        |单位          |\n");
						}
						printf("-----------------------------------------------------------------------\n");
						printf("|%-12s|%-7d|%-6s|%-13s|%-12s|%-14s|\n",p->name,p->number,p->age,p->handset,p->address,p->unit);
					}
				}
				printf("=======================================================================\n");
				printf("\n");
				printf("     =*=*=*=*=*=*=*=*=\n");
				printf("     该单位共有%d人\n",i);
				printf("     =*=*=*=*=*=*=*=*=\n");
				printf("\n");
				fclose(fp);
				return ;
			}
			break;
		case '3':
			{
				fclose(fp);
				return ;
			}
			break;
		default :
			{
				printf("     =*=*=*=*=*=\n");
				printf("      操作错误!\n");
				printf("     =*=*=*=*=*=\n");
				printf("\n");
				fclose(fp);
			}break;
		}
	}
}

用户模块

主要由六大模块组成:精确查询模块、模糊查询模块、保存到文件模块、姓名排序后输出模块、输出单位通讯录信息模块。各模块的主要功能如下:
精确查找模块:引导使用者输入要在其中查找需要查找类型的信息,从而找到该人的完整信息,并输出。
此模块函数void user_jqcx()代码如下:

void user_jqcx()  //精确查找  用户
{
	while(1)
	{
		FILE *fp;
		struct list *p;
		char num[10];
		p=(struct list *)malloc(LEN);
		printf("     ┌───────────────┐\n");
		printf("     │ 1 姓名精确查找│\n");
		printf("     │ 2 电话精确查找│\n");
		printf("     │ 3 退出        │\n");
		printf("     └───────────────┘\n");
		printf("\n");
		printf("     =*=*=*=*=*=*=*=*=\n");
		printf("      请输入您的操作\n");
		printf("     =*=*=*=*=*=*=*=*=\n");
		printf("\n");
		gets(num);
		printf("\n");
		if(strlen(num)>1)
		{
			printf("操作错误!\n");
			continue;
		}
		switch(*num)
		{
		case '1':
			{
				char str[30];
				printf("     =*=*=*=*=*=*=\n");
				printf("      请输入姓名\n");
				printf("     =*=*=*=*=*=*=\n");
				printf("\n");
				gets(str);
				printf("\n");
				fp=fopen("test.txt","r"); //打开文件
				if(fp==NULL)
				{
					printf("can not open file !\n");
					return ;
				}
				while(fread(p,LEN,1,fp))
				{
					if(strcmp(p->name,str)==0) //判断名字是否相同
					{
						printf("     =*=*=*=*=*=*=*=*=*=\n");
						printf("     查询到此人信息如下\n");
						printf("     =*=*=*=*=*=*=*=*=*=\n");
						printf("\n");
						printf("=======================================================================\n");
						printf("|姓名        |编号   |年龄  |电话         |籍贯        |单位          |\n");
						printf("-----------------------------------------------------------------------\n");
						printf("|%-12s|%-7d|%-6s|%-13s|%-12s|%-14s|\n",p->name,p->number,p->age,p->handset,p->address,p->unit);
						printf("=======================================================================\n");
						fclose(fp);//关闭文件
						break;
					}
				}
			}
			break;
		case '2':
			{
				char str[30];
				printf("     =*=*=*=*=*=*=\n");
				printf("      请输入电话\n");
				printf("     =*=*=*=*=*=*=\n");
				printf("\n");
				gets(str);
				printf("\n");
				fp=fopen("test.txt","r");//打开文件
				if(fp==NULL)
				{
					printf("     =*=*=*=*=*=*=*=*=*=\n");
					printf("     can not open file !\n");
					printf("     =*=*=*=*=*=*=*=*=*=\n");
					return ;
				}
				while(fread(p,LEN,1,fp))
				{
					if(strcmp(p->handset,str)==0) //判断电话是否相同
					{
						printf("查询到此人信息如下:\n");
						printf("=======================================================================\n");
						printf("|姓名        |编号   |年龄  |电话         |籍贯        |单位          |\n");
						printf("-----------------------------------------------------------------------\n");
						printf("|%-12s|%-7d|%-6s|%-13s|%-12s|%-14s|\n",p->name,p->number,p->age,p->handset,p->address,p->unit);
						printf("=======================================================================\n");
						fclose(fp);//关闭文件
						break;
					}
				}
			}
			break;
		case '3':
			{
				return ;
			}
			break;
		default :
			{
				printf("     =*=*=*=*=*=\n");
				printf("      操作错误!\n");
				printf("     =*=*=*=*=*=\n");
				printf("\n");
			}break;
		}
	}
}

模糊查找模块:引导使用者输入要在其中查找需要查找类型的信息,从而找到该人的完整信息,并输出。
此模块函数void user_mhcx()代码如下:

void user_mhcx()  ///模糊查找  用户
{
	while(1)
	{
		FILE *fp;
		struct list *p;
		char num[10];
		fp=fopen("test.txt","r");
		if(fp==NULL)
		{
			printf("     =*=*=*=*=*=*=*=*=*=\n");
			printf("     can not open file !\n");
			printf("     =*=*=*=*=*=*=*=*=*=\n");
			printf("\n");
			return ;
		}
		p=(struct list *)malloc(LEN);
		printf("     ┌───────────────┐\n");
		printf("     │ 1 姓名模糊查找│\n");
		printf("     │ 2 电话模糊查找│\n");
		printf("     │ 3 退出        │\n");
		printf("     └───────────────┘\n");
		printf("\n");
		printf("     =*=*=*=*=*=*=*=*=\n");
		printf("      请输入您的操作\n");
		printf("     =*=*=*=*=*=*=*=*=\n");
		printf("\n");
		gets(num);
		printf("\n");
		代码过多,这里省略部分代码...
		代码过多,这里省略部分代码...
		代码过多,这里省略部分代码...
							printf("=======================================================================\n");
							printf("|姓名        |编号   |年龄  |电话         |籍贯        |单位          |\n");
							printf("-----------------------------------------------------------------------\n");
							printf("|%-12s|%-7d|%-6s|%-13s|%-12s|%-14s|\n",p->name,p->number,p->age,p->handset,p->address,p->unit);
							printf("=======================================================================\n");
							printf("\n");
							break;
						}
									k++;
								}
								if(B==strlen(str)-1)
									break;
							}
						}
						
						if(flag==0)
						{
							printf("     =*=*=*=*=*=*=*=\n");
							printf("      未查询到此人!\n");
							printf("     =*=*=*=*=*=*=*=\n");
							printf("\n");
						}
						fclose(fp);  //case 2-2 关闭
				//------------------------------------------
			}
			break;
		case '3':
			{
				return ;
			}
			break;
		default :
			{
				printf("     =*=*=*=*=*=\n");
				printf("      操作错误!\n");
				printf("     =*=*=*=*=*=\n");
				printf("\n");
			}break;
		}
	}
}

保存通讯录到文件模块:输入需要保存通讯录的单位名称后,系统会生成以该单位名命名的磁盘文件。
此模块函数void user_save()代码如下:

void user_save()  //保存单位通讯录到文件  用户
{
	struct stu
	{
		char name[30];
		char age[30];
		int number;
		char handset[30];
		char address[30];
		char unit[30];
	};
	struct stu s[1000],temp;
	int i,j,k;
	//------------------------------
	while(1)
	{
		FILE *fp,*fp1;
		struct list *p;
		char str[30];
		int flag=0;
		p=(struct list *)malloc(LEN);
		fp=fopen("test.txt","r"); //只读方式打开文件到fp
		if(fp==NULL)
		{
			printf("     =*=*=*=*=*=*=*=*=*=\n");
			printf("     can not open file !\n");
			printf("     =*=*=*=*=*=*=*=*=*=\n");
			return ;
		}
		printf("     =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=\n");
		printf("     请输入待保存通讯录的单位名称(此名称将作为保存后的文件名)\n");
		printf("     =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=\n");
		printf("\n");
		gets(str);
		printf("\n");
		代码过多,这里省略部分代码...
		代码过多,这里省略部分代码...
		代码过多,这里省略部分代码...
		for(j=0;jname,s[j].name);
			strcpy(p->age,s[j].age);
			p->number=s[j].number;
			strcpy(p->handset,s[j].handset);
			strcpy(p->address,s[j].address);
			strcpy(p->unit,s[j].unit);
			fwrite(p,LEN,1,fp1);
		}
		//-----------------------
		fclose(fp);  //关闭fp
		fclose(fp1);  //关闭fp1
		//-----------------------
		printf("     =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=\n");
		printf("     保存成功!保存的文件名为:%s\n",str);
		printf("     =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=\n");
		printf("\n");
		return ;
	}
}

姓名排序输出模块:系统自动对通讯录内联系人姓名进行首字母排序,并输出排序后的通讯录信息。
此模块函数void user_paixu()代码如下:

void user_paixu()  //姓名字母排序  用户
{
//----------------------------
	struct list1
	{
		char name[30];  //名字 
		char age[30]; //年龄
		int number;  //编号 自动生成
		char handset[30]; //电话
		char address[30]; //籍贯
		char unit[30];//单位
	};
	FILE *fp;
	struct list *p;
	struct list1 s[1000],temp;
	int i=0,j,z;
	p=(struct list *)malloc(LEN);
	fp=fopen("test.txt","r");
	if(fp==NULL)
	{
		printf("     =*=*=*=*=*=*=*=*=*=\n");
		printf("     can not open file !\n");
		printf("     =*=*=*=*=*=*=*=*=*=\n");
		return ;
	}
	代码过多,这里省略部分代码...
	代码过多,这里省略部分代码...
	代码过多,这里省略部分代码...
	fclose(fp);
	printf("     =*=*=*=*=*=*=*=*=\n");
	printf("      排序后信息如下\n");
	printf("     =*=*=*=*=*=*=*=*=\n");
	printf("\n");
	fp=fopen("test.txt","r");
	i=0;
	while(fread(p,LEN,1,fp))
	{
		i++;
		if(i==1)
		{
			printf("=======================================================================\n");
			printf("|姓名        |编号   |年龄  |电话         |籍贯        |单位          |\n");
		}
		printf("-----------------------------------------------------------------------\n");
		printf("|%-12s|%-7d|%-6s|%-13s|%-12s|%-14s|\n",p->name,p->number,p->age,p->handset,p->address,p->unit);
	}
	if(i!=0)
		printf("=======================================================================\n");
	else
	{
		printf("     =*=*=*=*=*=*=\n");
		printf("      通讯录为空!\n");
		printf("     =*=*=*=*=*=*=\n");
		printf("\n");
	}
	fclose(fp);
}

输出单位通讯录信息模块:用户按着系统提示,手动输入待输出单位的名称后,系统自动搜索该单位的所有联系人并输出。
此模块函数void user_print()代码如下:

void user_print() //输出单位通讯录  用户
{
	while(1)
	{
		FILE *fp;
		struct list *p;
		char str[30];
		int flag=0,i=0;
		p=(struct list *)malloc(LEN);
		fp=fopen("test.txt","r");
		printf("     =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=\n");
		printf("      请输入待显示通讯录的单位名称\n");
		printf("     =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=\n");
		printf("\n");
		gets(str);
		printf("\n");
		if(fp==NULL)
		{
			printf("can not open file !\n");
			return ;
		}
		while(fread(p,LEN,1,fp))
		{
			if(strcmp(p->unit,str)==0)
			{
				flag=1;
				break;
			}
		}

		if(flag==0)
		{
			printf("     =*=*=*=*=*=*=\n");
			printf("     此单位不存在!\n");
			printf("     =*=*=*=*=*=*=\n");
			printf("\n");
			fclose(fp);
			continue;
		}
		rewind(fp);
		while(fread(p,LEN,1,fp))
		{
			if(strcmp(p->unit,str)==0)
			{
				i++;
				if(i==1)
				{
					printf("=======================================================================\n");
					printf("|姓名        |编号   |年龄  |电话         |籍贯        |单位          |\n");
				}
				printf("-----------------------------------------------------------------------\n");
				printf("|%-12s|%-7d|%-6s|%-13s|%-12s|%-14s|\n",p->name,p->number,p->age,p->handset,p->address,p->unit);
			}
		}
		fclose(fp);
		if(i!=0)
			printf("=======================================================================\n");
		return ;
	}
}

四、程序测试

1.查看文件

运行本程序首先要确认与源程序同级的目录下有三个文件;存放通讯录联系人信息的文件(test.txt),存放成绩单信息的文件(安工.dat),存放管理员与用户进入系统密码的文件(num_key.txt)。这里我们需要特别介绍的是num_key.txt文件,因为这个文件是我们登陆进入系统所要用到的,在该文件中,有两串字符,第一串字符为管理员的登陆密码,第二串字符是用户的登陆密码,如下图所示。这里我们的管理员密码为1234,用户密码为4321。
在这里插入图片描述

需要特别强调的是,在我们这个系统中并没有登陆和注册管理员、用户名的功能,但可以修改这个最初始的密码。

2.主界面测试

开始运行程序后,即进入我们的主界面,如下图所示。
通讯录管理系统—优化版 (C语言 期末大作业 课程设计)_第2张图片

3.管理员界面测试

这里我们输入1按enter键选择管理员系统后,输入刚刚在num_key.txt文件中的第一串字符,即“1234”即可进入管理员系统,如下图所示。可以看到,管理员系统有如下的功能,建立通讯录信息,即新建联系人,输出通讯录信息,统计通讯录信息,统计通讯录信息可以按多种方式统计,修改管理员密码四个主要功能。
通讯录管理系统—优化版 (C语言 期末大作业 课程设计)_第3张图片

4.用户界面测试

这里我们接着刚刚的步骤,输入5退出到最初的界面,然后输入2选择进入用户系统,然后将刚刚在num_key.txt文件中看到的第二串字符,即“4321”作为密码输入,就可以进入用户系统了,结果如下图所示。可以看到,用户系统下的操作有精确查询、模糊查询、保存通讯录到文件、按姓名排序输出通讯录信息、输出单位通讯录信息、修改用户密码六个主要功能。
通讯录管理系统—优化版 (C语言 期末大作业 课程设计)_第4张图片

5.退出测试

最后,我们还是返回到最开始的界面,来进行退出程序的测试,如下图所示系统已经提示退出了,无法再进行任何操作。
通讯录管理系统—优化版 (C语言 期末大作业 课程设计)_第5张图片

由于系统功能过于繁多,在这里博主就不全部展示了,只是将其中的部分界面一遍,同学们可以自己在下面测试操作哦。

五、系统使用说明

使用说明:
  1. 在每一个菜单选项中输入选项操作时,不能输入非操作指定字符,否则系统会自动判断输入错误,并且重新输入。
  2. 进入管理员系统时需要输入密码,输入错误的密码将无法进入管理员系统,初始密码为“1234”,可修改。
  3. 添加信息时,输入电话时必须输入11位阿拉伯数字,否则系统会判断输入格式错误,重新输入。
    修改联系人信息、删除联系人信息都必须输入通讯录内已经存在的联系人,否则系统会提示未查询到此人,修改或删除失败。
  4. 统计通讯录信息时,待统计的籍贯或单位都必须是已经存在的联系人的籍贯或单位,否则系统会提示此籍贯或单位不存在。
  5. 进入用户系统时需要输入密码,输入错误的密码将无法进入用户系统,初始密码为“1234”,可修改。
  6. 修改密码后切不可忘记密码,否则无法进入系统。
  7. 精确查询需要输入完整的姓名或电话号码才能查询到该人的信息。
  8. 模糊查询不需要输入完整的信息,但需要注意通过电话模糊查询的时候,需要输入至少三位数字,否则系统会提示输入格式错误,重新输入,这是因为电话号码数字仅在0~9之间,如果输入一位数字很可能所有联系人的手机号都有这位数字,导致所有相关联系人的信息都被输出,造成查询不便。
  9. 保存通讯录信息到文件时,需要输入正确的已经存在的单位名称,系统才能将该单位所有联系人的信息保存到以该单位名称为名的文件。
  10. 输出单位通讯录信息时,需要输入正确的单位名称,系统才会输出该单位所有联系人信息。
  11. 通讯录所有信息都是储存在一个文件下的,文件可以打开,但通过此文件查看通讯录信息,若要查看通讯录内信息,需要进入管理员系统,输出文件信息,即可查看所有联系人信息。
  12. 单位通讯录保存到文件后,保存的文件格式不是常见的文件格式,无法进行查看。

你可能感兴趣的:(c语言,开发语言,后端)