1、图书管理系统源代码#includestdio.h#includestdlib.h#includestring.h#define MENU_ADMIN_COUNT 2#define MENU_SEARCH_BOOK_COUNT 6#define MENU_USER_COUNT 7#define BOOK_FILE books.dat#define USER_FILE user.dat#define MAX_BOOK_NAME 20#define MAX_PUBLISHER 20#define MAX_DATE 10#define MAX_AUTHOR 20#define MAX_ISBN 20t
2、ypedef struct _book_info char book_nameMAX_BOOK_NAME; char authorMAX_AUTHOR; char publisherMAX_PUBLISHER; char pub_dateMAX_DATE; char ISBNMAX_ISBN; int pages;book_info;typedef struct _book book_info bi; struct _book* next;book;#define MAX_USERNAME 10#define MAX_PASSWORD 10typedef enum _USER_TYPE ADM
3、IN=0, USERUSER_TYPE;typedef struct _user_infochar usernameMAX_USERNAME; char passwordMAX_PASSWORD; USER_TYPE user_type;user_info;typedef struct _user user_info ui; struct _user* next;user;void init_user();void load_users();USER_TYPE login();void add_user();void search_user();void save_users();void c
4、lear_users();void save_users_to_file();user* get_last_user();user* get_previous_user(user* 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);void init_book();void load_books();void add_book();void view_
5、book();void delete_book();void save_books();void clear_books();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();int findstr(char *source,char *str);void save_books_to_file();book* get_last_book();book* ge
6、t_previous_book(book* p);void input_book(book_info* info);void show_book(book_info* info);void show_admin_menu();void show_search_book_menu();void show_user_menu();void admin_exit();void user_exit();book *first_book=NULL;user* first_user=NULL;char menu_title=n| 图书管理系统 |n+-+n;char menu_admin=| |n| (1
7、)图书管理 |n| (2)用户管理 |n| (3)退出系统 |n+-+n;char admin_menu1=-n| 图书管理 |n-|n| 新增图书 |n| 浏览图书 |n| 查找图书 |n| 删除图书 |n| 保存图书 |n| 返回主菜单 |n-n;char admin_menu2=-n 用户管理 |n-|n| 新增用户 |n| 查找用户 |n| 保存用户 |n| 返回主菜单 |n|-|n;void(*menu1_fun)()=add_book,view_book,show_search_book_menu,delete_book,save_books,;void(*menu2_func)(
8、)=add_user,search_user, save_users,;char menu_admin_search_book=| 查找图书: |n| 按书名查找 |n| 按作者查找 |n| 按出版社查找 |n| 按出版日期查找 |n| 按国际标准书号(ISBN)查找 |n| 返回主菜单 |n+-+n;void (*admin_search_book_func)()= search_book_by_name, search_book_by_author, search_book_by_publisher, search_book_by_pubdate, search_book_by_isbn,
9、;char menu_user=| 浏览图书 |n| 按书名查找图书 |n| 按作者查找图书 |n| 按出版社查找图书 |n| 按出版日期查找图书 |n| 按国际标准书号(ISBN)查找图书 |n| 退出系统 |n+-+n;void (*user_func)()= view_book, search_book_by_name, search_book_by_author, search_book_by_publisher, search_book_by_pubdate, search_book_by_isbn, user_exit;void add_book() char try_again=
10、Y; book *p=NULL; book *new_book=NULL; while(try_again=Y | try_again=y) new_book=(book*)malloc(sizeof(book); memset(new_book,0,sizeof(book); new_book-next=NULL; printf(新增图书.n); input_book(&(new_book-bi); p=get_last_book(); if(p=NULL) first_book=new_book; else p-next=new_book; printf(继续添加图书吗?(y or n):
11、); getchar(); try_again=getchar(); void view_book() book *p=NULL; char input=Y; int count=0; while(input=y | input=Y) count=0; p=first_book; printf(+-+n); printf(| 书名 | 作者 |n); printf(+-+n); while(p!=NULL) printf(|%20s|%20s|n,p-bi.book_name,p-bi.author); printf(+-+n); count+; if(count=5) count=0; pr
12、intf(显示下一页吗?(y or n):); getchar(); input=getchar(); if(input!=y & input!=Y) break; p=p-next; printf(再次浏览图书吗?(y or n):); getchar(); input=getchar(); void search_book_by_name() book *p=NULL; char sMAX_BOOK_NAME=0; char input=Y; int count=0; int i=0; printf(查找图书.n); while(input=Y | input=y) count=0; p=
13、first_book; memset(s,0,MAX_BOOK_NAME); printf(请输入书名(最大长度为%d):,MAX_BOOK_NAME); scanf(%s,s); while(p!=NULL) if(findstr(p-bi.book_name,s)!=-1) show_book(&(p-bi); count+; p=p-next; if(count=0) printf(没有找到图书%s。继续查找吗?(y or n):,s); getchar(); input=getchar(); continue; printf(共找到%d本图书.n,count); printf(继续查找
14、吗?(y or n):); getchar(); input=getchar(); void search_book_by_author() book *p=NULL; char sMAX_AUTHOR=0; char input=Y; int count=0; int i=0; printf(查找图书.n); while(input=Y | input=y) count=0; p=first_book; memset(s,0,MAX_AUTHOR); printf(请输入作者(最大长度为%d):,MAX_AUTHOR); scanf(%s,s); while(p!=NULL) if(find
15、str(p-bi.author,s)!=-1) show_book(&(p-bi); count+; p=p-next; if(count=0) printf(没有找到作者为%s的图书。继续查找吗?(y or n):,s); getchar(); input=getchar(); continue; printf(共找到%d本图书.n,count); printf(继续查找吗?(y or n):); getchar(); input=getchar(); void search_book_by_publisher() book *p=NULL; char sMAX_PUBLISHER=0; c
16、har input=Y; int count=0; printf(查找图书.n); while(input=Y | input=y) count=0; p=first_book; memset(s,0,MAX_AUTHOR); printf(请输入出版社(最大长度为%d):,MAX_PUBLISHER); scanf(%s,s); while(p!=NULL) if(findstr(p-bi.publisher,s)!=-1) show_book(&(p-bi); count+; p=p-next; if(count=0) printf(没有找到出版社为%s的图书。继续查找吗?(y or n)
17、:,s); getchar(); input=getchar(); continue; printf(共找到%d本图书.n,count); printf(继续查找吗?(y or n):); getchar(); input=getchar(); void search_book_by_pubdate() book *p=NULL; char sMAX_DATE=0; char input=Y; int count=0; int i=0; printf(查找图书.n); while(input=Y | input=y) count=0; p=first_book; memset(s,0,MAX_
18、DATE); printf(请输入出版日期(最大长度为%d):,MAX_DATE); scanf(%s,s); while(p!=NULL) if(findstr(p-bi.pub_date,s)!=-1) show_book(&(p-bi); count+; p=p-next; if(count=0) printf(没有找到出版日期为%s的图书。继续查找吗?(y or n):,s); getchar(); input=getchar(); continue; printf(共找到%d本图书.n,count); printf(继续查找吗?(y or n):); getchar(); input
19、=getchar();void search_book_by_isbn() char input=Y; char isbnMAX_ISBN=0; book *p=NULL; book *result=NULL; while(input=Y | input=y) printf(查找图书.n); printf(请输入ISBN(最大长度为%d):,MAX_ISBN); scanf(%s,isbn); p=first_book; result=NULL; while(p!=NULL) if(strcmp(p-bi.ISBN,isbn)=0) result=p; break; p=p-next; if(
20、result!=NULL) printf(查找到图书.n); show_book(&(result-bi); else printf(没有找到ISBN为%s的图书。n,isbn); printf(继续查找吗?(y or n)); getchar(); input=getchar(); void delete_book() char input=Y; char isbnMAX_ISBN=0; book *p=NULL; book *result=NULL; while(input=Y | input=y) printf(删除图书.n); printf(请输入ISBN(最大长度为%d):,MAX_
21、ISBN); scanf(%s,isbn); p=first_book; result=NULL; while(p!=NULL) if(strcmp(p-bi.ISBN,isbn)=0) result=p; break; p=p-next; if(result!=NULL) show_book(&(result-bi); printf(确认删除吗?(y or n)); getchar(); input=getchar(); if(input=y | input=Y) if(p=NULL) get_previous_book(p)-next=p-next; free(p); else get_p
22、revious_book(p)-next=p-next; else printf(没有找到ISBN为%s的图书。n,isbn); printf(继续删除其他图书吗?(y or n)); getchar(); input=getchar(); void save_books() save_books_to_file(); printf(保存成功!按任意键返回.); getchar(); getchar();void save_books_to_file() FILE *fp=fopen(BOOK_FILE,wb); book *p=first_book; while(p!=NULL) fwrit
23、e(&(p-bi),sizeof(book_info),1,fp); fseek(fp,0,SEEK_END); p=p-next; fclose(fp);void init_book() FILE *fp=NULL; fp=fopen(BOOK_FILE,r); if(fp=NULL) fp=fopen(BOOK_FILE,w); if(fp=NULL) printf(不能创建文件,按任意键退出.); getchar(); exit(0); fclose(fp);void load_books() book *b=NULL; book *last=NULL; FILE *fp=NULL; i
24、nt count=0; b=(book*)malloc(sizeof(book); memset(b,0,sizeof(book); b-next=NULL; fp=fopen(BOOK_FILE,rb); while(fread(&(b-bi),sizeof(book_info),1,fp)=1) if(first_book=NULL) first_book=b; else last=get_last_book(); last-next=b; count+; fseek(fp,count * sizeof(book_info),SEEK_SET); b=(book*)malloc(sizeo
25、f(book); memset(b,0,sizeof(book); b-next=NULL; free(b); b=NULL; fclose(fp);void clear_books() book *p=NULL; while(first_book!=NULL) if(first_book-next!=NULL) p=first_book; first_book=first_book-next; free(p); p=NULL; else free(first_book); first_book=NULL; int findstr(char *source,char *str) int pos=-1; int i=0; int j=0; int m=strlen(source); int n=strlen(str); if(m=0 | n=0 | mn) return pos; if(m=n) if(strcmp
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1