桂林电子科技大学职业技术学院
?
?
?
?
《C语言程序设计》
实训报告
?
?
实训题目: 学生通讯录管理系统
?
?
?
专业: 计算机信息管理
班级:
姓名:
学号:
?
?
?
一、需求分析
1、问题
根据需求,该系统所应包含的信息有以下一些:
通讯录的基本信息:
姓名、地址、电话
根据需求,该系统所应实现的功能有以下一些:
各种基本数据的录入。如:通讯录基本信息录入。
各种基本数据的修改。即:允许对已经录入的数据重新进行编辑、修改。例如修改通讯录中张三的电话信息
各种基本数据的删除。例如将张三的信息从通讯录中删除
基于各种数据的查询。例如输入张三姓名,查询张三的电话和地址。
数据导出:将通讯录中信息导出到指定文件。
数据导入:从指定文件导入通讯录信息到。
2、系统
采用C语言实现,开发环境为VC,可以运行在操作系统windows98及以上皆可。
3、运行要求
能不受限制的录入通讯录信息
界面友好,操作方便,例如删除前需要提示用户是否删除
容错性强,例如数据导出时,如果文件不存在需要提示用户。
二、总体设计
1、系统流程设计
根据系统要求,设计如下的系统流程
2、系统模块设计
根据系统的功能设计,如下模块
主界面模块:完成系统菜单的显示
功能选择模块:根据用户的选择,完成其相应的功能
通讯录信息录入:完成用户从界面输入通讯录,保存入系统的功能
通讯录信息修改:完成用户从界面输入通讯录,在系统中查询定位,并将录入的数据保存入系统的功能
通讯录信息修改:完成用户从界面输入查询条件,在系统查询符合条件的通讯录信息,并在界面上显示的功能。
通讯录信息导入:完成用户从界面输入需要导入的文件路径名称,读取该文件的内容,保存入系统,并在界面上显示导入内容的功能。
通讯录信息导出:完成用户从界面输入需要导出的文件路径名称,将系统中通讯录信息保存入文件中。
通讯录信息删除:完成用户从界面输入需要的通讯录信息的姓名,并将其从系统中删除。
三、详细设计
1、数据结构设计
根据系统要求,系统中需要保存的数据有通讯录的信息,其结构如下:
数据项名称数据项系统表示数据类型数据长度备注姓名name字符串20地址address字符串100电话tele字符串20为了能实现不受限制的增加通讯录信息,采用链表的结构保存通讯录的信息,在增加通讯录的基本信息时,创建一个通讯录的节点,将其插入到链表中,示意图如下。
使用C语言创建的结构体如下:
typedef struct /*定义数据结构*/
{
char name[20]; /*姓名*/
char address[100]; /*地址*/
char tele[20]; /*电话*/
typedef struct * next;
};
2、界面设计
主界面:
根据系统要求,设计一个字符界面,显示系统的菜单,为了体现友好性,将在每个菜单前显示该菜单项对应的数字
用户输入菜单项前面的数字,主菜单消失,进入该模块的相应界面,进行相应的操作,完成后,回到主界面。
输入界面:
在光标下输入通讯录的信息,用空格将信息隔开
修改界面:
首先输入通讯录的姓名,显示该通讯录的详细信息,输入修改后的信息,将原来信息修改。
删除界面:
输入需要删除的姓名,将其从通讯录中删除
导出界面:
输入需要导出的文件路径,将通讯录信息导出到文件。
列表显示页面:
将通讯录中所有记录显示,每页显示10条
导入页面:
略
查询界面:
略
3、模块实现
主界面实现:调用printf()函数,在屏幕上打印需要显示的字符信息,需要在显示之前调用system(“cls”)函数将前面的界面清空。
对应的实现函数menu_show();
功能选择模块实现:
接受从键盘输入的菜单选择,判断并调用相应的功能函数,完成其对应的功能。实现功能选择。
对应的函数:menu_select();
通讯录信息录入模块实现:
模块说明:从键盘接收输入的通讯录信息,在动态存储区中创建通讯录的节点,遍历链表,将其插入到通讯录链表的最后位置。
模块流程:
对应函数:add(struct phone * head)
通讯录信息修改模块实现:
模块说明:从键盘接收输入的需要修改通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入修改后的信息,保存在该节