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