c语言图书管理系统实践报告

  • 格式:doc
  • 大小:722.42 KB
  • 文档页数:26

北京师范大学珠海分校C程序设计实践报告题目:图书管理系统学院信息技术学院专业计算机科学与技术学生姓名龙海恩,郑少彬,张鑫,麦淑玲指导教师姓名肖红玉指导教师单位信息技术学院2013 年 4 月11 日1、题目与要求编写一个图书管理系统,除了书上的功能之外,还要能做到读者借书还书,查看书籍排行榜,看到书籍的借阅记录和分类状况。

2、系统总体设计(要给出必要的文字说明及图示)本报告中蓝色字体为我们小组新增的图书信息。

2.1功能需求分析(明确系统的功能需求)(1)用户登录(2)系统主控平台(3)新增图书信息处理(4)浏览图书信息处理(5)查询图书信息处理(6)删除图书信息(7)保存图书信息处理(8)普通用户借书信息处理(9)普通用户还书信息处理(10)普通用户可查看已借书籍(11)查看排行榜(12)新增用户信息(13)查找用户(14)查看所有用户(15)保存用户信息(16)退出2.2系统功能模块划分(要给出系统功能模块图)(1)登录系统(2)增加图书信息(3)浏览图书信息(4)查找图书信息((1))按书名查找((2))按作者查找((3))按出版社查找((4))按出版日期查找((5))按ISBN查找((6))按图书类型查找(5)删除图书信息保存图书信息(6)图书排行榜(7)新增用户信息(8)查找用户信息(9)更新用户信息(10)删除用户信息(11)保存用户信息(12)退出系统((1))管理员退出系统((2))普通用户退出系统3、详细设计本系统包括图书信息管理和用户管理两大方面,程序有三大模块,有三个源程序文件(management.c、book.c、user.c)和三个头文件(management.h、book.h、user.h)。

其中book.c完成的是图书信息的管理,包括新增图书、浏览图书、查询图书、删除图书、保存图书功能。

user.c完成的是用户信息的管理,包括新增用户、用户查询、保存用户等功能。

management.c完成的是用户登录,用户退出等功能。

Main函数也在这一源程序中。

book.h中的内容是图书信息的管理中涉及的常量、结构体的定义和相关函数的声明。

user.h中的内容是用户信息的管理中涉及的常量、结构体的定义和相关函数的声明。

management.h中的内容是菜单及退出函数的声明。

3.1重要数据的数据结构设计(即结构体的声明、变量的定义、文件)一.头文件management.h1.显示菜单函数声明void show_admin_menu();void show_search_book_menu();void show_user_menu();2.退出系统函数声明void admin_exit();void user_exit();二.头文件book.h1.常量定义分别定义书名、出版社、出版日期、作者、ISBN、图书类型、借书读者、借阅图书的借阅量的最大长度。

(蓝色字体为我们小组新增的图书信息。

)#define MAX_BOOK_NAME 20#define MAX_PUBLISHER 20#define MAX_DATE 10#define MAX_AUTHOR 20#define MAX_ISBN 20#define MAX_SORT 10#define MAX_BORROW_USER 20#define MAX_BOOK_COUNT 100002.结构体类型定义定义一个结构体类型_book_info,使用typedef 语句自定义一个新类型book_info,新类型中共11个成员,分别是书名、作者、出版社、出版日期、ISBN、页数、用于标记借书还书、图书类型、借阅次数、借书读者、用于标记排行榜,用来描述图书的基本信息。

typedef struct _book_info{char book_name[MAX_BOOK_NAME];char author[MAX_AUTHOR];char publisher[MAX_PUBLISHER];char pub_date[MAX_DATE];char ISBN[MAX_ISBN];int pages;char borrow_size;char sort[MAX_SORT];int borrow_time;char borrow_user[MAX_BORROW_USER];int book_load_time;}book_info;定义一个结构体类型_book,使用typedef 语句自定义一个新类型book,其中成员有一个结构体变量bi和指向下一本图书的指针变量。

(此结构是存储图书信息的链表。

)typedef struct _book{book_info bi;struct _book* next;}book;3.函数声明(1)主要处理函数声明void init_book(); //图书模块初始化void load_books(); //从图书文件中加载图书信息void add_book(); //新增图书void view_book(); //浏览所有的图书void delete_book(); //删除图书void save_books(); //调用将图书信息保存到文件函数,给出提示信息void clear_books(); //从内存中清除图书链表信息void books_charts(); //排行榜void update_book(); //更新图书(2)图书查询函数声明void search_book_by_name(); //按书名查询图书void search_book_by_author(); //按作者查询图书void search_book_by_publisher(); //按出版社查询图书void search_book_by_pubdate(); //按出版日期查询图书void search_book_by_isbn(); //桉书ISBN查询图书void search_book_by_sort(); //桉图书类型查询图书(3)辅助函数声明void save_books_to_file(); //将图书信息保存到文件book* get_last_book(); //得到图书链表的最后一个节点book* get_previous_book(book* p); //取得图书链表的最后一个节点void input_book(book_info* info); //输入一本图书信息void show_book(book_info* info); //显示图书信息void update_book_data(book_info* info); //更新图书信息int findstr(char* , char*); //查找字符串void borrow(book*); //普通用户借阅书籍void _return(book*); //普通用户还书void show_books_record(); //书的借阅记录标记三.头文件user.h1.常量定义#define MAX_USERNAME 10#define MAX_PASSWORD 10定义一个枚举类型_USER_TYPE,使用typedef 语句自定义一个新枚举类型USER_TYPE,枚举类型可能取两种值,0是管理员,1是普通用户。

typedef enum _USER_TYPE{ADMIN = 0,USER}USER_TYPE;2.结构体类型定义定义一个结构体类型_user_info,使用typedef 语句自定义一个新类型user_info,新类型中共3个成员,分别是用户名,密码,用户权限,用来描述用户的基本信息。

typedef struct _user_info{char username[MAX_USERNAME];char password[MAX_PASSWORD];USER_TYPE user_type;}user_info;定义一个结构体类型_user,使用typedef 语句自定义一个新类型user,其中成员有一个结构体变量ui和指向下一个用户的指针变量。

(此结构是存储用户信息的链表。

)typedef struct _user{user_info ui;struct _user* next;}user;3.函数声明(1)主要处理函数声明void init_user(); //用户模块初始化void load_users(); //从用户文件中加载用户信息USER_TYPE login(); //用户登录,返回用户类型void add_user(); //新增一个用户void search_user(); //查找一个void save_users(); //调用将用户信息保护到文件函数,给出提示信息void clear_users(); //从内存中清除用户链表信息void view_users(); //查看所有用户(2)辅助函数声明void save_users_to_file(); //将用户信息保存到文件user* get_last_user(); //得到用户链表的最后一个节点user* get_previous_user(user* p); //得到用户节点p的前一个节点user* find_user(char* name); //从用户链表中按用户名查找一个用户信息void show_user(user_info* info); //显示一个用户信息void input_user(user_info* info); //输入一个用户信息void delete_user(user* p); //从链表中删除一个用户信息void update_user(user* p); //更新一个用户信息四.模块化设计management.c2.函数指针数组admin_func存储的是管理员权限操作主菜单所对应的函数。

void (* admin_func[])() ={add_book,view_book,show_search_book_menu,delete_book,update_book,save_books,books_charts,add_user,search_user,save_users,view_users,admin_exit};其他函数基本没多大改变,跟书中一样。

五.模块化设计book.c1.预处理增加了两个语句:int charts[MAX_BOOK_COUNT] = {0}; //声明全局变量,排行榜extern char borrow_user[20]; //调用其他源文件已声明过的变量2.主要处理函数(1).查找图书的几个函数中:void search_book_by_name();void search_book_by_author();void search_book_by_publisher();void search_book_by_pubdate();void search_book_by_isbn();void search_book_by_sort();均加了借书还书代码。