c语言课程设计报告---通讯录管理系统 下载本文

内容发布更新时间 : 2024/5/24 11:00:24星期一 下面是文章的全部内容请认真阅读。

一、实习题目

通讯录管理系统

二、需求分析

问题描述:本程序属于非数值计算型算法设计,学生需要设计出图书馆模拟系统所需要的基本功能,并设计简单的界面(无需图形化)。 实现功能:

1、通过提示菜单选择可以进行的操作

2、将图书的信息存入文件中,并命名为BookInfo.txt 3、将图书借阅情况信息存入文件中,并命名为SendInfo.txt 4、在本系统中可以进行管理系统包含的基本操作,其中包括:

a) 查看所有图书的信息;

b) 输入一本图书的图书编号,从当前图书中进行查找,如果找到则显示该图书的相

关信息,如果没有找到则给出提示信息;

c) 添加一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的

图书,如果存在则提示重新输入,否则将该图书按照顺序插入到相应位置; d) 删除一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的

图书,如果存在则将该图书删除,否则给出提示信息,提示该图书不存在; e) 借阅一本图书,需要给出学号和图书编号,如果图书编号不存在则重新输入,直

到输入正确为止,并将学号和相应的图书编号存入SendInfo.txt文件中。

5、图书基本信息包括图书编号、书名、作者、出版社和价钱这些简单信息。 6、图书信息文件中每一行存放一本图书的信息。 7、借阅信息文件中每一行存放一本书的借阅情况。 知识点:

本程序主要考察对自定义函数的熟悉程度,本程序中主要使用到的是数组的相关操作,包括数组的输入、输出、查找、插入、删除等操作,需要对数组有比较深入的掌握。 说明:

(1)当程序执行的时候所读取的图书信息文件必须存在,否则可能会出现错误。 (2)图书信息文件中存放图书信息的时候是按照行来存放的,即一行一本书。

(3)借阅信息文件中存放学生借阅情况是按照行来存放的,即一行存放一个学号和一个图书

编号。

(4)程序执行的基本过程为:

a) 在所有操作之前,也就是加载操作菜单之前,先从文件中读取所有图书的信息,

并存入一个数组中,此时数组可以定义为包含100个元素;

b) 然后根据菜单所进行的所有操作都是对当前数组进行操作,此时也就是对数组的

查找、定位、添加、修改、删除操作;

c) 当退出系统的时候再将当前数组中的所有元素按照一本图书一行的方式写回图

书信息文件中,此时注意选择覆盖方式,这样就可以将原来的所有数据覆盖,只保留最新的数据;

当按行读取图书信息文件的时候,有可能最后一行只有一个回车,这时候实际上所读取的数据为空字符串,需要对此作判断,如果是空字符串,则说明已经没有人员,就必须将当前读入的空字符串写入数组中。

三、概要设计

系统功能模块图:

主菜单添加显示排序删除查询姓名模糊查询修改电话保存地址帮助精确查询

添加:可以添加通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱

后,会提示是否继续添加。

显示:可以以表格形式输出所有通讯录里的记录。

删除:输入欲删除的那个人的名字后,会选择删除他(她)的记录内容。 查询:可以选择用姓名、电话、地址三种方式查询。

修改:输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、通讯地址、

电子邮箱即可完成修改。

保存:输入文件名(带后缀名)后,即可将通讯录信息保存到文件。 帮助:显示帮助信息。

四、详细设计

(1).通讯录程序主体:

#include #include #include

typedef struct /*公共部分*/ { int score; /*编号*/ char name[10]; /*姓名*/ char num[15]; /*号码*/ char email[20]; /*邮箱*/ char age[8]; /*年龄*/ char adds[20]; /*住址*/ }Person;

Person pe[80],temp;

int menu_select(); /*界面函数 陆*/ int Input(Person per[],int n); /*添加记录 王*/ void Display(Person per[],int n); /*显示函数 公共*/ int Delete_a_record(Person per[],int n); /*删除函数 赵应振*/ void Query_a_record(Person per[],int n); /*查询函数 王嘉*/ void Change(Person per[],int n); /*修改函数 赵*/ void WritetoText(Person per[],int n); /*打印保存 公共*/ void rank(int n); /*排序函数 陆*/

void main() /*主函数 陆*/ { int n=0,i=0,k; FILE *fp1; /*运行之前从文件中读取之前输入的项目*/ if((fp1=fopen(\ /*如果没有文件,自动创建一个*/ { fp1=fopen(\ } do { k=fread(&pe[i],sizeof(Person),1,fp1); i++; n=i-1; }while(k!=0); /*文件读取完毕或错误时fread函数返回值为0。资料来自csdn论坛*/ fclose(fp1);