C语言程序课程设计报告标题:图书管理系统专业:软件工程类:设计主题图书馆管理系统主要包括管理图书的库存信息,每本书的借阅信息,每个人的借阅信息。
每本书的库存信息包括数量、书名、作者、出版日期、金额、类别、总入库数量、当前库存、已借出图书数量等。
每本借书包括以下信息:编号、书名、金额、借书证号、借阅日期、到期日期、罚款金额等。
每个人的图书馆信息包括借书证号、班级、学号等。
该系统的功能包括以下几个方面:一、借阅资料管理要求对图书、期刊、报纸、期刊进行分类管理,这样操作会更加灵活方便。
可以随时添加、删除、修改、查询等相关资料。
b、借贷管理(1)借贷操作(2)还书操作(3)更新治疗提示:以上处理需要相互配合,通过编辑赔偿和违约金金额来完成图书借还业务的各种登记。
例如,读者在还书时,不仅要更新图书的库存信息,还要自动计算图书的罚款金额。
并显示读者当天到期未还图书的所有信息。
c、读者管理读者等级:对借阅的读者进行分类,比如可以分为教师和学生两类。
并定义每类读者可以借阅的图书数量及相关借阅时间等信息。
读者管理:可以录入读者信息,以及挂失或注销读者、查询等服务。
D.统计分析可以随时进行统计分析,及时了解当前的借阅情况和相关数据状态。
统计分析包括借阅列表、数据状态统计、借阅统计等功能分析,显示当日所有到期未还的图书信息。
e系统参数设置:您可以设置相关的系统服务器参数,如违约金金额、最大借用天数等。
根据题目分析这项工作分为六个模块。
1.图书数据2.借款人信息3.借用模块4.还书模块5.照看书籍6.查询模块模块一:书号,书名,作者,出版时间,价格,份数,页数。
模块二:单位、借阅书目、借阅时间模块3:输入书名、书号、借书证。
模块四:登记书号,还书,处理罚款。
模块5:管理书库中的书籍,将新书入库,删除旧书,堆栈查询模块6:图书查询。
数据测试源代码汉字菜单可以参照以下代码编写:#包含“stdio.h”。
主(){ char c;int I;做{clr SCR();for(I = 0;i < 80i++)printf(" * ");printf("\t 1:添加书籍\ n ");printf("\t 2:列出书籍\ n ");printf(" \ t 3:s reach books \ n ");printf("\t 4:借书\ n ");printf("\t 5:返回图书\ n ");printf("\t6:退出\n ")printf(" \ t请选择输入选项[1 \ \ 2 \ \ 3 \ \ 4 \ \ 5 \ \ 6]:\ n ");做{c = getchar();}while(c!='1'&&c!='2'&&c!='3'&&c!='4'&&c!='5'&&!='6');getchar();开关(c){事例“1”:输入();打破;案例“2”:del();打破;事例“3”:find();打破;case“4”:arrange();打破;事例“5”:right();打破;案例“6”:出口(0);}Printf("按任意键返回主菜单:\ n ");getchar();clr SCR();} while(1);}#include <stdio.h >定义图书结构*/结构书{int _ id#include <stdlib.h >#include <string.h >#定义借入1#定义NOBORROW 0/*//数字,唯一char _ name[32];//书的名称,不唯一int _ type//书的类型,不唯一int _ status//书的状态,借出/未借出int _ count//图书借出的次数struct Book * _ next//下一本书结构书* _ prev//前一本书};定义书籍类型*/操作目录提示*/操作目录提示1 */添加图书类型并显示用户信息*/添加图书状态并显示用户信息。
*/添加书籍,id会自动编号。
*/建立图书管理的链表*/释放链接列表*/打印图书信息*/列出所有注册的书籍*/借书,返回书的指针,否则返回NULL。
这本书可能不存在,或者已被借走。
*/不存在*/返回NULLif(p--> _ status!= 0)Book * borrow _ books(Book * Book _ head,int id){书* p =书_头;while (p){if (p->_id == id)打破;p = p--> _ next;}如果(!p)/*作废清单_书籍(Book* book_head){书* p =书_头;while (p){print _ book(p);p = p--> _ next;}}/*void print_book(Book* book){printf("id:%d,名称:%s,类型:%s,状态:%s,时间:%d \n ",图书->_id,图书-> _名称,图书_类型[图书-> _类型],book_status[book->_status],book-> _ count);}/*void自由列表(Book* book_head){书*p,* p1p = book _ headwhile(p){P1 = p--> _ next;免费(p);p = p1}}/*书*创建_列表(书*书_头){if (book_head){book _ head--> _ prev = book _ head;book _ head-> _ next = NULL;book _ head-> _ id = 1;book _ head-> _ count = 0;book _ head-> _ status = 0;}还书_头;}/*int add_books(Book* head,Book* book_for_add) {书* p =头;如果(!p)return-1;while(p--> _ next){p = p--> _ next;};p-> _ next = book _ for _ add;book _ for _ add--> id = p--> id+1;book _ for _ add--> _ prev = p;book _ for _ add--> _ next = NULL;book _ for _ add--> _ count = 0;book _ for _ add--> _ status = 0;返回0;};/*char book_status[][32] ={“诺博罗”,“借来的”,"",};/*char book_types[][32] ={"类型0 ",“类型1”,“类型2”,"",};/*char book_menu_sub[][32] ={“按名称搜索书籍”,“按类型搜索图书”,"",};/*char book_menu[][32] ={"添加书籍"、"列表书籍",“搜索书籍”,“借书”,“还书”,“退出”,"",};/*typedef结构书Book;/*/*/*已被借用。
*/返回NULLp-> _ status = 1;/*图书借阅登记*/p-> _ count++;/*借来的时间+1 */查找图书名称,并返回找到的编号。
可能会有重名,一本书可能会有很多本,但是ID是唯一的。
*/查找图书类型并返回找到的书号。
一个类型会有很多书。
*/还书。
如果正常返回,会返回书的指针。
否则,它将返回NULL */Book * return _ books(Book * Book _ head,int id){书* p =书_头;while (p){if (p->_id == id && p->_status!= 0){p-> _ status = 0;int search _ books _ by _ type(Book * Book _ head,int type) {int count = 0;书* p =书_头;while (p){if (p->_type == type){print _ book(p);++计数;}p = p--> _ next;}返回计数;}/*int search _ books _ by _ name(Book * Book _ head,char* name) {int count = 0;书* p =书_头;while (p){if(strcmp(p--> _ name,name) == 0){print _ book(p);++计数;}p = p--> _ next;}返回计数;}/*返回p;}/*/*图书归还登记*/打印操作选项*/main函数*/}}int main(void){char key = 0;char ss[128];int loop = 1;Book first_book、*pBooks、* pTmpstrcpy(first_book。
_name,“倪好”);第一本书。
_ type = 0;pBooks = create _ list(& first _ book);while(循环){print _ menu(book _ menu);gets(ss);key = ss[0]-48;if(key < 0 || key > 6)printf("错误输入!\ n ");其他printf("INPUT:%d\n ",key);开关(钥匙){案例1: //添加书籍pTmp =(Book *)malloc(sizeof(Book));中频(pTmp){printf("Add_Book输入名称:");gets(ss);strncpy(pTmp--> _ name,ss,31);print _ menu(book _ types);gets(ss);key = ss[0]-48;if(key < = 0 | | key >(sizeof(book _ types)/32)) key = 1;pTmp--> _ type = key-1;add_books(pBooks,pTmp);}打破;案例2: //列出书籍list _ books(pBooks);打破;案例3: //搜索书籍print _ menu(book _ menu _ sub);gets(ss);key = ss[0]-48;printf("INPUT:%d\n ",key);开关(钥匙){案例1: //按名称搜索书籍printf("输入图书名称:");gets(ss);key = search _ books _ by _ name(pBooks,ss);if(key == 0)printf("没有找到!\ n ");案例2: //按类型搜索图书print _ menu(book _ types);gets(ss);key = ss[0]-48;key = search _ books _ by _ type(pBooks,key-1);if(key == 0)printf("没有找到!\ n ");默认值:打破;}打破;案例四://借书printf("借书,输入图书id:");gets(ss);key = atoi(ss);pTmp = borrow_books(pBooks,key);如果(!pTmp)printf("借书失败:%d\n ",key);其他{printf("借书成功!\ n ");print _ book(pTmp);}打破;案例5: //归还图书printf("归还图书,输入图书id:");gets(ss);key = atoi(ss);pTmp = return_books(pBooks,key);如果(!pTmp)printf("还书失败:%d\n ",key);其他{printf("还书成功!\ n ");print _ book(pTmp);}打破;案例6: //退出loop = 0;打破;默认值:打破;}printf("-pause-");gets(ss);}free _ list(pBooks);返回0;void print_menu(char menus[][32]){int no = 0;printf(" \ n请选择ID,如1或2..\ n ");while (strlen(menus[no])){printf("%d \t%s\n ",no+1,menus[no]);++否;}printf(" OPTION(");while(否){printf("/%d ",no-);}printf("):);}/*打破;}p = p--> _ next;}返回p;}/*。