通讯录管理系统(简洁版 课程设计)

通讯录管理系统 — 简洁版

一、设计要求

程序设计格式要求如下:

(1)要求使用多文方式实现设计。
(2)要求在各个文件内实现结构化设计。
(3)每个模块作为一个单独的C文件。
(4)系统的各个功能用函数调用的形式实现。
(5)宏和数据结构等放在头文件中,并使用条件编译。
(6)界面友好(良好的人机互交),程序要有注释。

完成一个学生成绩管理系统,具体要求如下:
1. 建立通讯录信息,信息至少包含编号、姓名、年龄、电话、通讯地址、电子邮箱等
2. 能够提供添加、删除和修改通讯录信息的功能
3. 能够提供安不同方式查询的功能;如按姓名或年龄、电话等查询
4. 将通讯录保存在文件中
5. 能够按表格方式输出通讯录信息
6. 退出程序

二、概要设计

1.数据结构设计
定义一个结构体类型address_list ,结构体中包含姓名、学号、编号、手机号、邮箱和地址,以及指向下一人信息的指针,共7个结构体成员。

struct address_list 
{ 
	char name[30];  //名字 
	char age[30]; //生日
	int number;  //编号 
	char handset1[30]; //手机1
	char handset2[30];//手机2
	char email[30]; //电子邮件 
	char address[30]; //通讯地址 
	struct address_list *next; 
}; 

2.函数功能说明、调用关系
根据功能模块划分,通讯录管理系统所需的函数以及各函数的功能说明,如下表所示。

函数名功能说明
void print()创建函数,创建不带头节点的链表
void add()输出函数,表格方式输出通讯录信息
void delet()增加函数,新增通讯录信息
void order()删除函数,删除多余人的信息
void search()显示函数,单个地表格化地显示所需的信息
void renew()排序函数,按照姓名大小将通讯录信息排序
void out()查找函数,按指定方式查找所需信息
void set()创建用户函数,用于创建新的用户
void enter()进入系统函数,用于进入管理系统
void person()系统界面函数,管理系统的菜单界面
3.磁盘文件
这里只有一个文件,就是保存我们用户名和密码的文件(jilu.txt);需要说明的是,这个通讯录系统没有管理员和用户之分,但它的特色功能是可以自己注册用户名和密码。 这里的jilu.txt文件就是用来保存我们的用户名和密码的;另外,这并不代表我们程序只有这一个文件,只是需要我们知道的有这一个文件,因为其他的文件在我们创建用户时程序就已经自动生成了对应的文件。

三、详细设计

1.登录系统

系统的执行从登录系统的菜单开始,允许用户输入1~3之间的数值来选择要进行的操作要进行的操作。
其处理过程如下:

  1. 若用户输入1,则进行用户登录操作,用户需输入正确的账号密码,才可以进入通讯录管理系统;
  2. 若用户输入2,则进行创建用户操作,用户可以创建新的账号密码,不同 的账号通讯录内的联系人不同,由不同的用户设定;
  3. 若用户输入3,则退出登录系统;
  4. 若输入其他数字、字符或字符串,则系统会给出出错的提示信息,重新 进行选择。

登录系统的处理流程,如下图所示。
在这里插入图片描述

2.通讯录管理系统

当用户从登录界面输入正确的账号和密码后,会进入到个人的通讯录管理系统,系统允许用户输入1~7之间的不同数字进行相应的操作。
其处理过程如下:

  1. 用户输入1,则会显示出该通讯录内现有联系人的信息;
  2. 若用户输入2,则会进行增加联系人的操作;可输入增加联系人的信息,包括姓名、出生日期、电话1、电话2、email、地址,其中输入电话时,系统会检测电话是否为有效的11位阿拉伯数字,并且如果联系人的无电话2,可不进行输入,进行下一项输入。
  3. 若用户输入3,则会进行查找联系人的操作,其中查找操作内包含精确查找 和模糊查找,分别可以输入手机号和姓名进行精确查找或模糊查找;
  4. 若用户输入4,则系统会按通讯录内联系人的姓名长短,由短到长进行排序,并输出排序后的通讯录内容;
  5. 若用户输入5,则进行修改信息操作,其中修改可以对手机号和地址进行修改;
  6. 若用户输入6,则进行删除信息的操作,输入需要删除人的姓名,该联系人的信息将会被清空;
  7. 若用户输入7,则退出整个系统;
  8. 若输入其他数字、字符或字符串,则系统会给出出错的提示信息,重新进行 选择;

通讯录管理系统的处理流程,如下图所示。
在这里插入图片描述

3.查找操作模块

模块功能:用户在管理系统界面中输入3时,进入查找信息模块,进入子菜单后,进行多种详细操作。
其处理过程如下:

  1. 用户选择查找操作后时,会进入到下一个子菜单,再次进行选择,选择精确查找或者模糊查找;
  2. 用户选择精确查找后,会再次进入选择,电话1、电话2、或者姓名查找;
  3. 用户选择模糊查找后,会再次进入选择,电话1、电话2、或者姓名查找;
  4. 查找后,用户可选择退出,返回到初始菜单界面,进行其他所需操作;

查找操作模块的处理流程,如下图所示。
在这里插入图片描述

4.修改信息模块

用户输入5,会进入修改信息操作菜单,该菜单允许用户输入1~4之间的数值进行相应的操作。
其处理过程如下:

  1. 若用户输入1,则可以修改手机号1,进入后按照提示输入修改联系人的姓名,再输入修改后的手机号1,即可完成修改操作;
  2. 若用户输入2,则可以修改手机号2,进入后按照提示输入修改联系人的姓名,再输入修改后的手机号2,即可完成修改操作;
  3. 若用户输入3,则可以修改地址,进入后按照提示输入修改联系人的姓名,再输入修改后的地址,即可完成修改操作;
  4. 如用户输入4,则返回上一级界面;
  5. 若输入其他数字、字符或字符串,则系统会给出出错的提示信息,重新进行选择;

修改信息模块的处理流程,如下图所示。
在这里插入图片描述

四、改进与增加模块说明

1.排序模块

排序模块可以对通讯录内的信息,按照联系人姓名的首字母顺序排序后储存并输出;在联系人数量较多的时候,可以对通讯录进行排序后输出,查看通讯录内的信息,这样更容易查找到用户希望查找的联系人的信息,代码如下。

void order() 
{ 
	FILE *fp;
	int z,i,j;
struct stu
{
	char name[30];
	char age[30];
	int number;
	char handset1[30];
	char handset2[30];
	char email[30];
	char address[30];
};
	struct address_list *p,*last;
	struct stu temp,s[200];
	p=(struct address_list *)malloc(sizeof(struct address_list));
	last=p;
	fp=fopen(pp,"r");//打开
	if(fp==NULL)
	{
		printf("can not open!\n");
		return ;
	}
	i=0;
	while(fread(p,LEN,1,fp))
	{
		strcpy(s[i].name,p->name);
		strcpy(s[i].age,p->age);
		s[i].number=p->number;
		strcpy(s[i].handset1,p->handset1);
		strcpy(s[i].handset2,p->handset2);
		strcpy(s[i].email,p->email);
		strcpy(s[i].address,p->address);
		i++;
	}
	z=i;
	for(i=0;i<z-1;i++)
	{
		for(j=i+1;j<z;j++)
		{
			if(‘s[i].name’>’s[j].name’)>0)
			{
				temp=s[i];
				s[i]=s[j];
				s[j]=temp;
			}
		}
	}
	fclose(fp);  //关闭
	fp=fopen(pp,"w");  //打开
	for(i=0;i<z;i++)
	{
		strcpy(p->name,s[i].name);
		strcpy(p->age,s[i].age);
		p->number=s[i].number;
		strcpy(p->handset1,s[i].handset1);
		strcpy(p->handset2,s[i].handset2);
		strcpy(p->email,s[i].email);
		strcpy(p->address,s[i].address);
		fwrite(p,LEN,1,fp);
	}
	fclose(fp);
	printf("=*=*=*=*=*=*=*=*=\n");
	printf(" 排序后信息如下:\n");
	printf("=*=*=*=*=*=*=*=*=\n");
	print();		
} 
2.菜单选项中,用户输入数字进行选择,输入非法字符将报错

例如,查询菜单下,有3个等待用户选择的子菜单项,代码如下。

void search()
{
...//源代码较长,在此省略部分代码
...
...
printf("      ┌──────────┐\n");
	printf("      │1 精确查找│\n");
	printf("      │2 模糊查找│\n");
	printf("      │3 退出    │\n");
	printf("      └──────────┘");
	printf("\n");
	printf("=*=*=*=*=*=*=*=*=\n");
	printf(" 请输入您的操作:\n");
	printf("=*=*=*=*=*=*=*=*=\n");
	printf("\n");
	gets(str);
	printf("\n");
	if(strlen(str)>1)
	{
		printf("=*=*=*=*=*=\n");
		printf("操作错误!\n");
		printf("=*=*=*=*=*=\n");
		printf("\n");
		continue;
		}
switch(*str)
{
case ‘1’: ....;break;
case ‘2’: ....;break;
case ‘3’: ....;break;
default :printf(“操作错误!\n”);break;
}
...
...
...//源代码较长,在此省略部分代码
}
3.优化了输出信息的界面

输出信息按照表格的方式输出,使输出界面看起来更清晰明了,用户体验更加舒畅,代码如下。

void print()  
{ 
	FILE *fp;
	int n=0;
	struct address_list *p,*head,*last;
	p=(struct address_list *)malloc(LEN);
	{
		head=p;
		last=p;
	}
	fp=fopen(pp,"r");
	if(fp==NULL)
	{
		fp=fopen(pp,"w");
		printf("通讯录不存在!已重新创建一个通讯录!\n");
		//return ;
	}
	
	while(fread(p,LEN,1,fp))
	{
		n++;
		p->number=n;
		if(n==1)
		{
			printf("================================================================================================\n");
			printf("|姓名        |生日         |编号  |手机号1       |手机号2       |邮箱               |地址      |\n");
		}
		printf("------------------------------------------------------------------------------------------------\n");
		printf("|%-12s|%-13s|%-6d|%-14s|%-14s|%-19s|%-10s|\n",p->name,p->age,p->number,p->handset1,p->handset2,p->email,p->address);
	}
	if(n!=0)
		printf("================================================================================================\n");

	}
	...//源代码较长,在此省略部分代码
	...
	...
	fclose(fp);
} 
4.增加了登录、创建账户

系统采用了账号密码登录的方式,增强了系统在不同情况下通用性,方便多人添加的通讯录,并且使用了创建用户的方式来为不同的用户创建通讯录,创建用户的账号密码与通讯录文件都将保存到文件中,代码如下。

void est() //创建用户
{
		FILE *fp,*Fp;
		int flag=1;
		struct person *p;
		char Number[30],Key[30]; 
		p=(struct person *)malloc(sizeof(struct person));
		fp=fopen("jilu.txt","r");
		if(fp==NULL)
		{
			printf("=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=\n");
			printf(" 用户目录文件不存在,已重新创建.\n");
			printf("=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=\n");
			printf("\n");
			printf("=*=*=*=*=*=*=*=*=\n");
			printf(" 请重新创建用户\n");
			printf("=*=*=*=*=*=*=*=*=\n");
			printf("\n");
			fp=fopen("jilu.txt","w");
			fclose(fp);
			return ;
		}
		printf("=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=\n");
		printf(" 请设置新建用户名:(请输入英文字符)\n");
		printf("=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=\n");
		printf("\n");
		gets(Number);
		printf("\n");
		printf("=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=\n");
		printf(" 请设置用户密码:(仅限英文与数字)\n");
		printf("=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=\n");
		printf("\n");
		gets(Key);
		printf("\n");
		...//源代码较长,在此省略部分代码
		...
		...
	}
}

五、程序测试

1.测试系统能否正确显示登录选项

执行程序后,得到的界面如下图所示,该图显示有本系统的登录选项。
在这里插入图片描述

2.测试系统能否创建用户

输入如下数据:
用户名:mye 密码:12345
按照给定账号密码输入后,系统提示创建成功。如下图所示。
在这里插入图片描述

3.测试程序能否使用已创建的用户进入系统

按照已经给定的账号密码,进入到账号登陆界面,输入账号和密码,如下图所示,系统提示成功进入通讯录管理系统。
在这里插入图片描述

4.测试系统能否正确录入联系人信息

测试数据
姓名:zhangsan
生日:1998-01-01
手机号1:12345654321
手机号2:12345676543
email:123@163.com
地址:安阳
按照所给联系人信息录入到通讯录,如下图所示。
在这里插入图片描述

5.测试系统能否正确显示联系人信息

在主菜单界面输入数字1,进行显示操作,显示结果如下图所示。
在这里插入图片描述

6.测试系统能否正确查找联系人信息(以姓名查找为例)

在主菜单界面输入数字3,进入查找界面,依次测试精确查找和模糊查找,结果分别如下图所示。
精确查找
在这里插入图片描述

7.测试系统能否正确排序

在主菜单界面输入数字4,进入排序界面,排序后输出如下图所示。
在这里插入图片描述

8.测试系统能否正确修改通讯录信息(以修改电话为例)

在主菜单中输入数字5,进入修改信息界面,选择修改电话1,将zhangsan的电话1修改为18637621756,结果如下图所示。
在这里插入图片描述

9.测试系统能否删除联系人信息

在主菜单界面输入数字6,进入删除操作,删除lisi的信息,界面如下图所示。
在这里插入图片描述

10.测试程序能否退出

在主菜单中输入7,退出整个通讯录管理系统,如下图所示。
在这里插入图片描述

  • 43
    点赞
  • 347
    收藏
    觉得还不错? 一键收藏
  • 25
    评论
《JAVA程序设计》 课程设计说明书 班级: 学号:: 设计题目:个人通讯录管理系统 设计时间:至 指导教师: 评 语: 评阅成绩:评阅教师: 目  录 1 引 言1 1.1课程设计选题1 1.2课程设计的目的1 1.3本选题的设计背景1 2 需求分析1 2.1 功能需求1 2.2 系统的开发运行环境2 3 总体设计2 3.1 系统体系结构设计2 3.2系统功能模块与主要类设计3 3.3数据库设计5 4 详细设计与实现7 4.1 登录模块7 4.2 注册新用户模块8 4.3 查询模块9 4.4 添加模块11 4.5 修改模块13 4.6删除模块16 4.7备份模块18 4.8退出模块20 5 小结和展望21 参 考 文 献22 附 录22 使用说明书22 引 言 1 1.1课程设计选题 《个人通讯录管理系统》 2 1.2课程设计的目的 通过编写并调试一个Java应用软件,熟悉和掌握使用Java开发应用程序的完整过程。 使学生巩固和加深以Java语言为根底的面向对象编程技术理论知识的理解,提高实际 动手编程能力的培养,掌握以Java为核心的应用软件开发方案,到达能独立阅读、编制 和调试一定规模的Java程序的水平。 3 1.3本选题的设计背景 一直以来就想做一个比拟实用的通讯录管理系统,这样可以方便我对于身边联系人信 息的管理,防止遗忘和丧失。 在这样一个信息化的社会里,人们的生活也越来越离不开电脑了,本次通过做个人通 讯录管理系统,希望摈弃传统的纸质记录的弊端,发挥电脑软件的优势,方便人们对自 己的联系人信息的管理。 需求分析 4 2.1 功能需求 登陆功能。用户可以直接输入用户名和密码,登陆进入通讯录的主功能界面。 注册功能。其他用户可以输入自己的用户名和密码与确认密码,来实现注册成为该通讯 录的使用者。 查询功能。在该功能里,用户可以采用模糊查询和准确查询两种查询方式来对自己存储 的联系人信息进展查询。 添加功能。在该功能里,用户可以添加自己的常用联系人和分组信息。 修改功能。此功能里,用户可以修改数据库中已存的联系人信息和分组信息,以与个人 的登陆密码。 删除功能。在该功能里,用户可以输入自己想要删除的分组名和联系人。 备份功能。用户可以通过保存对话框,选择自己想要保存的联系人信息的路径,然后将 其保存为txt文件。 退出功能。用户可以选择退出程序,也可以选择重新登录。 系统的容错能力。在做该系统时,一定要考虑全面可能出现错误信息的地方,然后加上 try catch 语句进展捕捉,防止造成系统故障。 系统的对话框提示。当注册用户时,用户名有重复时,提示不可注册;注册密码与确认 密码不同时,也要弹出提示,不允许注册等等一系列对话框弹出提示。 在使用数据的查询语句时,尽量使用存储过程提交,方便了对数据库的查询,同时也提 高了查询速度。 便捷性。尽量用户界面做的简洁大方美观,有很好的用户界面交互能力,也使用户使用 起来更加方便。 5 2.2 系统的开发运行环境 本系统开发平台: Java +sqlserver 2008 本系统集成开发环境:Eclipse 本系统运行环境:windows7 家庭普通 总体设计 6 3.1 系统体系结构设计 在登陆界面,如果不是该系统的用户的可以点击注册用户名和密码。如果已经是该系 统的用户的,可以输入用户名和密码后,登陆进入主功能界面,在主功能界面里,用户 可以对通讯录实现以下功能:查询、添加、修改、删除、备份,退出等功能。具体功能 结构图如下: 7 3.2系统功能模块与主要类设计 本通讯录系统主要包括三大模块:用户登录模块、用户注册模块、主功能模块。 用户登录模块。在该模块里,用户可以输入用户名和密码,如果用户名或密码为空,那 么会提示"用户名不能为空〞或"密码不能为空〞;如果数据库里没有匹配的,那么提示 "用户名或密码错误!〞然后将光标返回到用户名文本框中;如果和数据库里的匹配,那 么提示"成功登陆!〞,进入主功能界面。 主功能界面。在该模块里,用户可以实现对联系人信息、分组名称的查询、添加、修改 、删除,可以对联系人信息进展备份,可以退出程序或重新登陆进入程序。 用户注册模块。在该模块里,非系统用户可以进展注册,成为该系统的使用者。在注册 的过程中,如果系统中存在用户名,那么提示"用户名已存在!〞;如果密码和确认密码 不同,那么提示"两次密码输入不一致!〞,否那么提示"恭喜您注册成功!〞。 BookManage.java。该类主要用于实现用户登录界面,包括如何使用正确的用户名、密码 进展登录,如何对面板进展布局,如何实现用户登陆界面与主界面的连接等。 (2)Add_user.java。该类主要用于实现新用户注册界面,包括新用户如何注册成为该 通讯录系统的使用者,以与一些注册界面的设计和布

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值