c语言图书管理系统实践报告 下载本文

{

定义一个结构体类型_book,使用typedef 语句自定义一个新类型book,其中成员有一个结构体变量bi和指向下一本图书的指针变量。(此结构是存储图书信息的链表。)

typedef struct _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(); //桉图书类型查询图书

book_info bi; struct _book* next;

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;

(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.h 1.常量定义

#define MAX_USERNAME 10 #define MAX_PASSWORD 10

定义一个枚举类型_USER_TYPE,使用typedef 语句自定义一个新枚举类型USER_TYPE,枚举类型可能取两种值,0是管理员,1是普通用户。 typedef enum _USER_TYPE {

2.结构体类型定义

定义一个结构体类型_user_info,使用typedef 语句自定义一个新类型user_info,新类型中共3个成员,分别是用户名,密码,用户权限,用来描述用户的基本信息。

typedef struct _user_info {

定义一个结构体类型_user,使用typedef 语句自定义一个新类型user,其中成员有一个结构体变量ui和指向下一个用户的指针变量。(此结构是存储用户信息的链表。)

typedef struct _user {

user_info ui; struct _user* next;

char username[MAX_USERNAME]; char password[MAX_PASSWORD]; USER_TYPE user_type; ADMIN = 0, USER

}USER_TYPE;

}user_info;

}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.c

2.函数指针数组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.c 1.预处理

增加了两个语句:

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();

均加了借书还书代码。

while (p != NULL)

{ }

if (count == 0) {

printf(\没有找到图书%s。继续查找吗?(y or n):\if (findstr(p->bi.book_name, s) != -1) { }

p = p->next;

show_book(&(p->bi));//显示查到的图书信息 if(strcmp(borrow_user,\{ } count++;

if((p->bi.borrow_size) == 'N') else

_return(p);//在user.c中定义 save_books();

borrow(p);//在user.c中定义