资源描述
面向过程程序设计(C语言)课程设计
设计阐明书
通讯录管理系统
起止日期: 年 12 月 18 日 至 年 12月 23日
学生姓名
班级
学号
成绩
指引教师(签字)
计算机与通信学院
年 12 月 23 日
通讯录管理系统
一、 设计规定
综合运用C语言程序设计课程重要知识,设计一种用于通讯录管理程序,设计指标由程序功能规定和技术规定详细阐明。
1、 功能规定
通信录管理程序至少应具备如下功能:
(1) 输入功能:能通过键盘向通信录输入数据。规定随时都能使用该项功能实现记录输入,一次可以输入一条记录,也可以输入多条记录。所谓一条记录,是指通信录中一种人员完整信息。
(2) 显示功能:能显示通信录存储记录信息,在显示时能提供下列显示方式:
①按自然顺序显示。即按照向通信录输入数据时各条记录先后顺序,显示通信录中已有记录信息。
②按照一定排列顺序显示通信录信息。排序顺序有各种,如按姓名查询、按所在都市查询,任何一种查询都要有明确查询成果。
(3) 查询功能:能查询通信录信息。规定至少提供两种查询方式,如按照姓名查询、按所在都市查询,任何一种查询都要有明确查询成果。
(4) 修改功能:能对通信录存储信息进行修改。规定至少提供两种修改方式,如按照姓名修改、按照通信录记录序号修改。记录序号是通信录记录自然顺序编号。
(5) 删除功能:能对通信录信息进行删除。规定删除时以记录为单位,既能一次删除一条记录,也能一次删除多条记录。
(6) 保存功能:能将记录保存在任何自定义文献中,如保存在:c:\score。
(7) 读取功能:能将保存在文献中记录读取出来,并在屏幕上显示。
(8) 通信录管理结束后,可以正常退出通信录管理程序。
2、 技术规定
(1) 每个通信录记录至少涉及如下信息:姓名、电话、所在都市、所在单位、年龄、备注等。
(2) 通信录信息以磁盘文献形式存储,存储位置、文献名、文献格式由设计者拟定。
(3) 对于通信录功能中数据输入、显示、查询、修改、删除、保存、读取等功能,规定编写功能独立函数或主控函数予以实现,其所属各项功能尽量由独立函数实现。
(4) 以菜单方式实现功能选取控制。
(5) 本通信录管理程序可以实现100条记录管理。
二、 程序功能设计
依照题目功能规定,设计通信录管理程序功能如图1所示。
通讯录管理功能框图
通信录信息输入
通信录信息显示
通信录信息查询
通信录信息修改
通信录信息删除
按自然顺序显示
建立通信录文献
按排序顺序显示
按姓名查询
按都市查询
浏览显示信息
编辑修改信息
按姓名删除信息
按序号删除信息
按姓名排序显示
按都市排序显示
图1 通信录管理程序功能图
各功能详细阐明如下:
1、 通信录信息录入
(1) 通过显示信息项目,逐项输入通信录记录信息。
(2) 每次输入记录后,通过询问方式决定与否继续进行记录输入。因而,使用该功能既可以录入一条记录,也可持续录入多条记录。
(3) 每次录入记录之前,显示通信录中已有记录数。
2、 通信录信息显示
(1)按自然顺序显示,即以通信录文献中记录顺序为序,逐个对文献记录进行显示。
(2)按排序顺序显示,即对通信录中记录进行排序后,再按照排序成果显示出来,但不论使用何种排序算法,排序显示不能变化通信录记录物理顺序。
(3)当通信录信息较多时,实行分屏显示,每屏最多显示20条记录信息。
(4)显示记录时,对每一条记录增长与显示顺序一致序号。
3、 通信录信息查询
(1)提供按姓名查询和按都市查询两种查询方式。
(2)查找成功后显示每一条符号条件记录完整信息,当一屏不能完毕显示时,实行分屏显示,每屏最多显示20条符合条件记录信息。当找不到符合条件记录时,给出相应提示信息。
4、 通信录信息修改
(1)按照指定记录序号,对通信录记录进行修改。一方面显示指定记录当前数据,然后通过重新输入该记录数据办法,完毕数据修改操作。
(2)为以便确认记录序号,该功能项同步提供通信录记录浏览功能。
5、 通信录信息删除
(1)提供按姓名删除和按序号删除两种方式,当找到指定记录时,进行删除操作。找不到指定记录时,给出相应提示信息。
(2)所有删除均为物理删除,即将制定记录从通讯录文献中彻底清除掉。
6、 建立通讯录文献
第一次使用通讯录管理程序时,用于建立存储通讯录信息文献。
三、 程序数据设计
(1)每个通讯录记录由各种不同数据项构成,是一种构造体数据,因而需要定义构造体数据,因而需要定义构造体数据类型。依照题目规定,拟定每个记录涉及数据项目为:姓名、电话、所在都市、所在单位、年龄、备注等。据此定义如下构造体数据类型:
Struct record
{
Char name[20] / /姓名
Int age; / /年龄
Char tele[15]; / /电话号码
Char city[20]; / /所在都市
Char units[30]; / /所在单位
Char note[20]; / /备注
};
(2)考虑到struct record是通讯录管理程序中通用数据类型,将在各种函数中使用,故将其在头文献中定义。
(3)使用文献address.txl 存储数据类型为stuct record通讯录数据。
四、 程序函数设计
1、 函数功能描述
(1)main()函数
通讯录管理程序主函数,实现程序功能主菜单显示,通过各功能函数调用,实现整个程序功能控制。
(2) append()函数
函数原型为void append(),是输入数据函数,它实现通讯录数据键盘输入。
(3)display()函数
函数原型为void display(),是显示通讯录信息主控函数,它实现显示功能菜单显示,并进行不同显示功能函数调用,以实现程序显示功能。
(4)locate()函数
函数原型为void locate(),是查询通讯录信息主控函数,它显示查询功能菜单,并依照查询规定,进行相应函数调用,以实现查询查询功能。
(5)modify()函数
函数原型为void modify(),修改通讯录信息主控函数,它显示查询功能菜单,进行相应函数调用,以实现程序修改功能。
(6)dele()函数
函数原型为void dele(),是删除通讯录记录主控函数,它显示删除功能菜单,并依照删除规定,并进行相应函数调用,以实现程序修改功能。
(7)disp_arr()函数
函数原型为void disp_arr(struct record[],int),功能是显示struct record型构造体数组所有数据,其第二个参数是构造体数组长度。这里构造体数组相应于存储通讯录文献address.txl数据,数组长度相应于通讯录文献记录数。
(8)disp_name()函数
函数原型为void disp_row(struct record),功能是显示一种struct record型构造体数据,disp_arr()函数进行数组输出时,每一种数组元素都调用disp_row()函数实现输出。
(9)sort()函数
函数原型为void sort(struct record[],int),是排序主控函数,它显示排序功能菜单,并依照显示排序规定,进行相应函数调用,以实现程序排序显示功能。
(10)sort_name()函数
函数原型为void sort_name(struct record[],int),功能是对struct record型构造体数组实现按姓名排序操作。
(11)sort_city()函数
函数原型为void sort_city(struct record[],int ),功能是对struct record型构造体数组实现按都市排序操作。
(12)modi_seq()函数
函数原型为void modi_seq(struct record[],int),功能是对struct record型构造体数组实现按序号修改操作。
(13)dele_name()函数
函数原型为void dele_name(struct record[],int*),功能是对struct record型构造数组实现按姓名删除操作。
(14)dele_sequ()函数
函数原型为void dele_sequ(struct record[],int*),功能是对struct record型构造体数组实现按序号删除操作。
(15)disp_str()函数
函数原型为disp_str(char,int),功能是输出n个字符,用于菜单字符显示,每一种有菜单显示功能函数都调用该函数。
(16)disp_table()函数
函数原型为void disp_table(),功能是显示一行表头,用于输出记录时标题显示。
(17)creat()函数
函数原型为void creat(),功能是建立存储通讯录信息文献address,txl。
2、 函数直接调用关系
(1)main()函数直接调用函数:disp_str()函数、append()函数、display()函数、locate()函数、modify()函数、dele()函数。
(2)append()函数直接调用函数:无。
(3)display()函数直接调用函数:disp_str()、disp_arr()、sort()。
……
……。
五、 程序编码及调试
1、 头文献address.h设计
头文献address.h包括如下信息:
(1) 通讯录记录构造体类型定义。
(2) 通讯录管理程序中使用C语言系统宏包括命令。
(3) 通讯录管理程序中自定义函数原型声明。
(4) 通讯录管理程序中使用构造体数组长度。
下面是头文献address.h详细内容:
#define M 100 用于定义构造体数组长度
如下是通讯录管理程序所用系统头文献宏包括命令
#include “stdio.h”
#include”stdib.h”
#include”string.h”
如下是构造体数据类型定义,与通讯录记录数据项相似
struct record
{
char name[20]; / / 姓名
int age; / /年龄
int tele[15]; / /电话号码
char city[30]; / /所在都市
char units[30]; / /所在单位
char note[20]; / /备注
};
/ /如下是顾客自定义函数声明
void creat(); / /建立通讯录文献函数
void append(); / /输入数据函数
void siaplay(); / /显示通讯录文献函数
void locate(); / /查询通讯录主控函数
void modify(); / /修改通讯录主控函数
void dele(); / /删除通讯录主控函数
void disp_arr(struct record*,int); / /显示数组函数
void disp_row(struct record); / /显示一种记录函数
void disp_table(); / /显示一行表头函数
void modi_seq(struct record [],int ); / /按序号编辑修改记录函数
void disp_str(char,int ); / /显示N个字符函数
void sort(struct record[],int ); / /排序主控函数
void sort_name(struct record[],int); / /按姓名排序函数
void sort_city(struct record[],int ); / /按都市排序函数
void dele_name(srtruct record[],int*); / /按姓名删除记录函数
void dele_sequ(struct record[],int*); / /按序号删除记录函数
以上为头文献address.h所有内容该头文献在通讯录管理程序开头位置用 include命令包括,宏包括命令为 #include”address.h”。
2、 main()函数编码及调试
main()函数是通讯录管理程序主控函数,它设计调试需要重复多次。在开始时,将它所有被调用函数都设计为简朴字符串输出函数,以设计调试main()函数菜单控制功能。然后,每实现一种主功能(输入、显示、查询、修改、删除、新建)函数,都对main()函数调用和菜单控制功能进程调试。
(1) main()函数代码
(2) disp-str()函数代码
(3) main()函数调试
3、 create()函数编码及调试
create()函数功能是建立通讯录文献,该函数不调用其她自定义函数。执行该函数,将重新建立存储通讯录信息文献address.txl。
(1)creat()函数代码
void creat() // 建立通讯录文献函数
{
FILE*fp;
if((fp=fopen(*address.txl”,”wb”))==NULL) //建立通讯录文献address.txl
{
printf(“can’t open file!\n);
retuen;
}
fclose(fp);
printf(“\n\n文献成功建立,请使用“通讯录信息输入功能”输入信息!”);
getchar();
return;
}
(2)函数功能调试
create()函数没有调用其她函数,编写完毕后即可进行函数功能调试。在主菜单选取“建立通讯录文献”功能,若屏幕显示如下信息,则函数设计成功。
显示信息:文献成功建立,请使用“通讯录信息输入功能”输入信息!
4.
……..
六、 总结
附:同构成员姓名:
展开阅读全文