1、2) 新书入库新书采编入库,输入编号后如果有次数只需输入数量,没有则继续输入书名、作者、数量。3) 添加读者信息读者信息初始化,输入读书证号和姓名,只有输入书证号和姓名才能进行借书还书4) 退出和文件保存退出读书管理系统并保存读者和图书信息。图书管理系统图书管理模块理读者管理模块借阅操作模块查询操作模块初始化图书信息采编入库输入读者信息借书系统还书系统读者信息查询图书信息查询 四、概要设计图书信息和读者信息都采用结构体类型保存。图书信息里面包括:图书编号、图书名称、作者、现有量、库存量、指向下一节点的指针。读者信息里面包括:读者编号、读者姓名、借书数量、可借图书数量、指向下一节点的指针。所有图
2、书和读者都分别以链表的形式存储,并以编号为唯一主键。采用链表形式便于数据的添加与删改。主要的操作为:系统初始化,图书入库,读者信息登记,图书信息和读者信息文件的保存。五、详细设计数据结构的定义:图书信息:typedef struct bookchar book_num10;char book_name20;char book_writer10;int book_xy;int book_kc;struct book *next;BK;读者信息:typedef struct readerchar reader_num10;char reader_name10;int right;BO borrow
3、Max;struct reader *next;RD;算法描述:进入系统后首先进行图书初始化,输入图书的信息。开始输入图书编号、名称、作者和图书数量进入系统1)初始化初始化之后,进入系统,显示功能列表,可选择任意系统,但在借书之前先要输入读者信息。2)采编入库 否3)输入读者信息 是5) 退出和文件保存退出系统保存文件判断是否保存成功是错误!请重新登陆系统六、程序源代码#include#include stdlib.hconio.h#define Max 4 /现有 /库存typedef struct borrowchar borrow_book_num10;char limit_date10
4、;BO;BK *h_book;RD *h_reader;void Login();int Menu();void Init();void Init_book();void Menu_select();void Insert_New_Book();void Find_Book();void add_reader();void Save();void Save_Book();void Save_Reader();void Load();void Load_Reader();void Load_Book();void Login()system(cls);printf(nnntt*nnnnttt欢迎
5、使用图书管理系统nnnntt 按任意键进入系统getch(); system(int Menu() /*主菜单*/ int dm;ntt图书管理系统主菜单n=n*t0-退出系统 n*t1-采编入库 n*t2-登记读者 n请选择相应的代码:for(;) scanf(%d,&dm); /dm输入的数字 if(dm6) printf(n错误!请重新输入: else break;return dm;void Menu_select()/*主菜单选择函数*/switch(Menu() /*功能选择*/ case 0: Save();nnt文件保存成功!nnnt欢迎下次使用本系统! getch();exi
6、t(0); case 1:Insert_New_Book();break; case 2:add_reader(); default: exit(0);void Init() /*初始化*/BK *p0;n图书初始化开始,请输入图书信息n包括编号.书名.数量np0=(BK*)malloc(sizeof(BK);h_book=p0;n请输入图书信息:图书编号: /*输入图书编号(唯一)*/ scanf(%s,p0-book_num);图书名称: /*输入图书名称*/book_name);图书作者: /*输入图书作者*/book_writer);图书数量: /*输入图书数量*/p0-book_kc
7、); p0-book_xy=p0-book_kc; /*开始时图书现有量和库存量相等*/next=NULL;n图书信息初始化完毕!按任意键继续下一步操作nvoid Insert_New_Book()/*新书入库*/BK *p,*p0,*p1;p=p1=h_book;n新书入库模块nn请输入新书信息n包括书号.书名.数量np0=(BK *)malloc(sizeof(BK); while(strcmp(p0-book_num,p1-book_num)!=0&p1-next!=NULL) p1=p1-next; if(strcmp(p0-book_num)=0) /*此处分两种情况,若图书编号存在
8、,则直接进库,只须输入书的数量*/ n此编号图书已存在!直接入库! p1-book_kc+=p0-book_xy+=p0- else/*若不存在,则需要输入其他的信息,然后在进行插入操作*/库存数量while(p-next) p=p- if(h_book=NULL) h_book=p0; /*此处分两种情况,链表中没有数据,head直接指向p0处*/ else p-next=p0; /*此处分两种情况,链表中有数据,链表中最后元素的next指向p0处*/ n新书入库完毕!void add_reader()/*添加读者*/ RD *p0,*p,*p1; int i; p=h_reader;n读者初始化开始,请输入读者信息.n包括书证号.姓名.nif (p=NULL) p0=(RD*)malloc(sizeof(RD); /*申请新结点存储空间*/ h_reader=p0;读者书证号:reader_num);读者姓名:reader_name);right=0; for(i
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1