通讯录管理系统设计报告
- 格式:docx
- 大小:120.57 KB
- 文档页数:21
通讯录管理系统设计报告
课程名称: C语言程序设计能力教程
实验名称: 通讯录管理系统
姓 名: 陶 星
学 号: 1140810621
指导老师: 杨 剑
实践时间: 2012年12月26日
1 设计题目的内容、任务及具体要求
本程序是非数值计算型算法设计,主要使用的是数组的相关操作,包括结构体数组的输入、输出、查询、删除等。我们设计的这个通讯录系统也初步实现了人员信息的显示、删除、查询、修改等必要的功能。
(1) 录入联系人信息:以链表形式存放联系人信息并以文件形式存放通讯录信息。
(2) 浏览:按录入先后为序进行通讯录信息浏览。
(3) 查询:能实现指定联系人姓名查询或指定电话号码查询功能。
(4) 修改:能修改定联系人信息。
(5) 删除:能将指定联系人信息删除。
(6) 系统以菜单方式工作,界面友好,易于操作,容错性好。
2 总体设计思路
我们首先设计出了主函数,然后根据去要实现的功能分别设计录入联系人信息、浏览、查询、修改、删除功能的子函数。删除函数的设计是首先从文件内找到要删除的人,然后通过写一个实现删除目的的FOR循环实现删除。修改也大体和删除相同,添加函数在设计时通过申请一片空间,然后通过指针将需要添加的信息添加进去,从而实现添加功能。
3 系统功能设计
本系统除主函数外,一共采用8个函数来完成系统功能。函数名及功能说明如下:
(1) 系统主菜单:menu_select()
(2) 初始时加载数据:LoadData()
(3) 录入联系人信息:Input() (4) 浏览所有联系人信息:Display()
(5) 查找联系人:Search( )
(6) 修改联系人:Modify( )
(7) 删除联系人:Delete( )
(8) 保存联系人Save();
(9) 显示某一个联系人的所有信息:DisplayDetails()
函数间的调用关系如下图所示:
=1开始LoadDatamenu_selectInputSaveDisplaySearchDisplayDetailsModifyDelete=2=3=4=5=0SaveSave退出DisplayDetailsDisplayDetails4程序功能结构图及功能描述
本程序主要分为六个模块。它们分别为:录入联系人信息、浏览所有联系人、查找联系人、修改联系人、删除联系人和退出系统。程序功能结构图如下图所示:通讯录管理系统录入联系人信息浏览所有联系人查找联系人修改联系人删除联系人退出系统
(1) 在程序的主界面,显示系统的所有功能,包括:录入联系人信息、浏览所有联系人、查找联系人、修改联系人、删除联系人和退出系统。系统应提示用户如何选择相应功能。
(2) 当用户选择录入联系人信息后,系统进入录入联系人信息界面,在该界面应提示用户输入相应信息,当用户正确录入联系人信息后,自动生成一个不重复的联系人ID号,并将该联系人的信息以链表形式存放并以文件形式存放在通讯录文件的最后,并给出录入成功的提示并提示用户是否需要继续录入,根据用户的选择做出相应的处理。
(3) 当用户选择浏览所有联系人后,系统进入浏览所有联系人界面,在该界面中显示所有联系人的主要信息(所显示信息由用户确定)。
(4) 当用户选择查找联系人后,系统提示用户选择查询的关键字(基本要求是:可按联系人姓名、电话号码进行查询,该项用户可以扩展,可适当增加其他关键字)。当用户选择查询关键字,并按提示输入其值后,系统显示查询后的结果(如有该联系人,则显示该联系人的详细信息,否则给出适当提示)。
(5) 当用户选择修改联系人后,提示用户输入需修改的联系人ID,根据该ID查询到相应的联系人信息,并显示,用户按提示输入更改后的联系人信息,系统更新相应的联系人信息并提示用户。
(6) 当用户选择删除联系人后,需提示用户输入需删除的联系人ID,根据该ID查询到相应的联系人信息,并显示,用户确认后,系统删除相应的联系人信息并提示用户。。
(7) 当用户选择退出系后,退出程序。
5 功能模块的具体设计
(1) 开始界面
(2) 查找菜单界面
(3) 修改菜单界面
6 程序部分
#include
#include
#include
#include
struct record
{
char name[20];
char post[20];
char tel[20];
char email[20];
}
TelInfo[500];
int NO;
FILE *fp;
void mainmenu(); /*主菜单*/
void newrecord(); /*新建联系人*/
void browsemenu(); /*浏览所有信息*/
void searchmenu(); /*查找菜单*/ void searchname(); /*按姓名查找*/
void searchtel(); /*按电话查找*/
void modifymenu(); /*修改菜单*/
void deletemenu(); /*删除菜单*/
void deleteall(); /*删除所有*/
void deletesingle(); /*删除单个*/
void deletename(); /*按姓名删除*/
void deletetel(); /*按电话删除*/
int loadfile(); /*导入或建立文件*/
void savefile(); /*保存文件*/
void main()
{
printf("\n\t\t :)欢迎使用乐乐通讯录管理系统 beta");
printf("\n\t\t\t\t 文件导入中……请稍后……\n\n\n\n\n");
system("cls"); /*清屏*/
loadfile();
while (1)
mainmenu();
}
void mainmenu()
{
char choice;
system("cls");
printf("\n\n");
printf("\n\t\t┏━━━━━━━━━ 主菜单 ━━━━━━━━━━┓");
printf("\n\t\t┃ ┃");
printf("\n\t\t┃ 欢迎你使用“通讯录查询系统” ┃");
printf("\n\t\t┃ ┃");
printf("\n\t\t┃ 预祝您使用愉快! ┃"); printf("\n\t\t┃ ┃");
printf("\n\t\t┃ ┃");
printf("\n\t\t┃ ┃");
printf("\n\t\t┃***************** 1-新建菜单 *****************┃");
printf("\n\t\t┃ ┃");
printf("\n\t\t┃***************** 2-浏览菜单 *****************┃");
printf("\n\t\t┃ ┃");
printf("\n\t\t┃***************** 3-查找菜单 *****************┃");
printf("\n\t\t┃ ┃");
printf("\n\t\t┃***************** 4-修改菜单 *****************┃");
printf("\n\t\t┃ ┃");
printf("\n\t\t┃***************** 5-删除菜单 *****************┃");
printf("\n\t\t┃ ┃");
printf("\n\t\t┃***************** 6-退 出 ********************┃");
printf("\n\t\t┃ ┃");
printf("\n\t\t┗━━━━━━━━━━━━━━━━━━━━━━━┛");
printf("\n\t\t 请选择:");
choice=getch();
switch (choice)
{
case '1':
newrecord();
break;
case '2':
browsemenu();
break;
case '3':
searchmenu();
break;
case '4':
modifymenu(); break;
case '5':
deletemenu();
break;
case '6':
printf("\n\t\t\t谢谢您对通讯录管理系统的使用!!! \n");
exit(0);
default:
mainmenu();
}
}
void newrecord()
{
system("cls");
printf("\n\t\t**************** 请输入联系人信息 ****************\n");
printf("\n\t\t 输入姓名:");
scanf("%s",&TelInfo[NO].name);
printf("\n\t\t 输入工作单位:");
scanf("%s",&TelInfo[NO].post);