实用标准文案
数据结构课程设计图书管理系统
一 需求分析
该程序是模拟图书馆管理系统,实现图书采编入库、借书、还书、查询等基本业务。此程序规定:
(1) 管理员能够向系统中输入每种书的基本信息,包括书号、书名、作者、现存量和库存量、借阅记录,并保存记录;
(2) 用户(读者)能够按书号、书名、作者查询图书信息;
(3) 管理员能够实现图书采编入库(新购入一本书,经分类和确定书号之后登记到图书账目中去。如果这种书在帐中已有,则只将总库存量增加)、借阅(如果书的现存量大于0,则借出一本,登记借阅者的图书证号和归还期限)、归还(删除对借阅者的登记,改变该书的现存量)、销毁(将图书从账目中删除)等操作。
二 概要设计
? 系统用到的抽象数据类型定义:
1、ADT LinearList{
数据元素:D={ai|ai∈D0,i=1,2,…,n,n≥0,D0为某一数据对象} 关系:S={
(1) InitList(L) (2) DestroyList(L) (3) ClearList(L) (4) EmptyList(L) (5) ListLength(L) (6) Locate(L,e) (7) GetData(L,i) (8) InsList(L,i,e) (9) DelList(L,i,&e) }ADT LinearList 2、ADT String{
数据对象:D={ai|ai∈CharacterSet,i=1,2,…,n;n≧0} 数据关系:R={
(10)SubString(Sub,S,pos,len) (11)StrIndex(S,pos,T) (12)StrReplace(S,T,V)
精彩文档
实用标准文案
(13)StrDestroy(S)
}ADT String
?
系统中的子程序和功能说明:
InitBo(Book &boo);初始化图书信息 InitRe(lend &Lin);初始化借阅者信息
BinarySearch(Book boo,char SearchNum[]);二分法查找比较书号 Buy(Book &boo, char BuyNum[]);新书采编入库系统
Delete(Book &boo,char DeleteNum[]);清除图书信息系统
Borrow(Book &boo,lend &Lin,char BorrowNum[],char CaNum[]);借阅图书处理系统 Return(Book &boo,lend &Lin,char ReturnNum[],char BorrowerNum[]);归还图书系统 SearchByNum(Book &boo,char SeaNum[]);按书号查找系统 SearchByName(Book &boo);按书名查找系统 SearchByAuth(Book &boo);按作者查询系统 Menu();主菜单显示系统 Search();查询系统子菜单 main();主函数
? 系统程序功能结构图
图书馆管理系统 图书信息录入 查询图书信息 处理图书信息 基本信息 借阅记录 按书号查询 按书名查询 按作者查询 图书采编入库 图书借阅情况 图书归还情况 图书销毁情况
三 详细设计
?
功能实现过程
bool BinarySearch(Book boo,char SearchNum[]) //二分法查找比较书号 {
while(low<=high) {
计算中间点;
if(查找到书号相同的) {
返回值true; }
if(查找书号不相同)
精彩文档
实用标准文案
用二分法进一步进行查找; }
if(库中没有所要查找的书) 返回值false;
}
void Buy(Book &boo, char BuyNum[])/*采编入库*/ {
if(书库中有此书)
{
总库存加1; 现库存加1; }
if(书库中无此书) {
for(i=total;i>mid&&total;i--)/*将新采购的书插在适合位置,保持有序*/ 空出插入位置;
输入新购书籍的相关信息:书号、书名、作者、出版社;
boo[i].next=NULL; total++;/*总量加1*/
}
}
void Delete(Book &boo,char DeleteNum[])/*清除图书信息*/ {
if(书库中没有此书)
输出“无此书”; if(书库中有此书) {
strcpy(连续两本书的相关信息); 现存量减1;库存量减1; }
else 输出“此书已有借阅者,无法删除!”; }
void Borrow(Book &boo,lend &Lin,char BorrowNum[],char CaNum[])/*借阅图书信息*/ {
if(没有找到此书) 输出“书库中无此书!”; if(书库中有此书) {
借出一本书后,该书的现存量减1;并在借阅记录链表中插入该条记录;再对应读者信息记录链表,如果已有该读者证号信息,直接在该链表中插入此次借阅记录;如果无该读者证号信息,申请新单链表存放借阅记录。 }
else 输出“该书现存量为0”; }
void Return(Book &boo,lend &Lin,char ReturnNum[],char BorrowerNum[])/*归还图书信
精彩文档
相关推荐: