数据结构课程设计图书基本业务模拟.docx

上传人:b****7 文档编号:16749885 上传时间:2023-07-17 格式:DOCX 页数:42 大小:247.68KB
下载 相关 举报
数据结构课程设计图书基本业务模拟.docx_第1页
第1页 / 共42页
数据结构课程设计图书基本业务模拟.docx_第2页
第2页 / 共42页
数据结构课程设计图书基本业务模拟.docx_第3页
第3页 / 共42页
数据结构课程设计图书基本业务模拟.docx_第4页
第4页 / 共42页
数据结构课程设计图书基本业务模拟.docx_第5页
第5页 / 共42页
数据结构课程设计图书基本业务模拟.docx_第6页
第6页 / 共42页
数据结构课程设计图书基本业务模拟.docx_第7页
第7页 / 共42页
数据结构课程设计图书基本业务模拟.docx_第8页
第8页 / 共42页
数据结构课程设计图书基本业务模拟.docx_第9页
第9页 / 共42页
数据结构课程设计图书基本业务模拟.docx_第10页
第10页 / 共42页
数据结构课程设计图书基本业务模拟.docx_第11页
第11页 / 共42页
数据结构课程设计图书基本业务模拟.docx_第12页
第12页 / 共42页
数据结构课程设计图书基本业务模拟.docx_第13页
第13页 / 共42页
数据结构课程设计图书基本业务模拟.docx_第14页
第14页 / 共42页
数据结构课程设计图书基本业务模拟.docx_第15页
第15页 / 共42页
数据结构课程设计图书基本业务模拟.docx_第16页
第16页 / 共42页
数据结构课程设计图书基本业务模拟.docx_第17页
第17页 / 共42页
数据结构课程设计图书基本业务模拟.docx_第18页
第18页 / 共42页
数据结构课程设计图书基本业务模拟.docx_第19页
第19页 / 共42页
数据结构课程设计图书基本业务模拟.docx_第20页
第20页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据结构课程设计图书基本业务模拟.docx

《数据结构课程设计图书基本业务模拟.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计图书基本业务模拟.docx(42页珍藏版)》请在冰点文库上搜索。

数据结构课程设计图书基本业务模拟.docx

数据结构课程设计图书基本业务模拟

 

数据结构课程设计

 

图书管理基本业务模拟

 

院(系、部):

信息工程学院

姓名:

刘歌楚晓兰

缴经纬刘博爱

年级:

2013级

专业:

计算机科学与技术

 

 

第一章设计任务书

1.1课程设计题目

1.2任务起止时间

1.3课程设计的主要内容与要求

1.4进度计划及指导安排

第二章小组成员及分工

1.1小组成员

1.2成员分工

第三章说明书正文

1.1课程设计设计题目

1.2设计目的

1.3算法思想分析

1.4算法描述与实现

1.4.1数据结构类型定义

1.4.2主要算法流程图及功能描述

1.4.3程序代码

1.5程序运行结果

1.6结论

 

课程设计任务书

1.1课程设计题目

图书管理基本业务模拟

1.2任务起止时间:

2015年6月29日至2015年7月8日

1.3课程设计主要内容与要求

主要内容:

图书管理一般包括图书采编、图书编目、图书查询及图书流通(借、还书)等基本业务。

要求设计一个图书管理信息系统,用计算机模拟实现上述系统功能。

基本要求:

(1)书的登记内容包括书号、书名、著作者、现存量和库存量等;学生信息包括借书证号、借阅信息等;

(2)以书号建立索引表(线性表)以提高查找效率;

(3)主要功能如下:

a)采编入库:

新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;

b)借阅:

如果一种书的现存量大于0,则借出一本,登记借阅者的书号和归还期限,改变现存量;

c)归还:

注销对借阅者的登记,改变该书的现存量。

(4)输出形式:

能按书号、书名、著作者查找库存的书籍信息

能按学生的借书证号显示学生信息和借阅信息

书籍入库

借书功能实现

还书功能实现

 

1.4进度计划及指导安排

实验内容

实验要求

18

周一

分析题目/查阅资料

实验室/图书馆

周二

算法分析设计/查阅资料

实验室

周三

算法分析设计

实验室

周四

算法分析设计

实验室

周五

调试运行

实验室

19

周一

调试运行

实验室

周二

调试运行

实验室

周三

撰写设计报告

实验室/图书馆

 

第二章小组成员及分工

1.1小组成员

缴经纬楚晓兰刘歌刘博爱(组长)

1.2成员分工

缴经纬:

算法设计与分析;图书入库、借阅记录函数编码,查询库存函数的文件操作;主菜单函数的设计与编码;

楚晓兰:

借阅图书函数、登陆界面的设计与编码;系统测试;

编写文档;

刘歌:

查询库存函数,释放图书、索引、借阅链表函数编码;

载入界面的设计与编码

刘博爱:

算法设计与分析;主函数、归还图书和查询图书函数

编码;编写文档;

 

说明书正文

1.1设计题目

图书基本业务模拟

1.2设计目的

随着社会的不断发展,技术的进步,业务的管理趋于自动化是大势所趋。

图书作为人类进步的阶梯,在人们学习生活中起着举足轻重的作用。

面对大量的书籍,管理是不可或缺的问题。

而在图书的运营中,不仅仅是大量的书籍信息,还有很多的读者信息,以及两者产生的借书还书信息,都需要一个正规化的管理。

人工记录的方式在目前这个信息量巨大的时代,已经明显显现出效率低下、出错率高、浪费大量的人力物力等缺点,大大影响图书管理工作。

图书管理系统就是旨在方便图书管理操作,实现自动化管理,方便服务。

本系统基本实现设计图书管理的基本业务操作,具体涉及到新图书入库、查询图书库存及库存图书信息打印、读者借阅图书、借阅图书记录、归还图书和分别根据书号、书名、作者信息进行图书查询功能。

1.3算法思想分析

本次课程设计使用的算法主要是对单链表的操作,主要涉及链表的建立和链表的查询;

单链表的建立采用尾插法建立;首先申请一个结点的存储空间,将需要入库的图书信息存到结点之中,并且对输入的入库数量进行判断;然后判断是否已存在图书信息的链表,存在的情况下进行尾插法插入链表,并且判断入库的新图书是否已经存在,存在的情况下只进行库存量和现存量的增加,否则尾插。

不存在图书信息的链表,则将表头指针指向结点形成链表。

链表的查询则是对链表的顺序查找;创建指针指向链表的头结点,用户输入需要查找的信息,与结点信息进行比较,不匹配则指向链表的下一个结点进行比较。

如果整个链表查找结束,则输出未找到。

单链表顺序查找时间取决于查找内容在表中的位置,最坏的情况为表长n,平均查找长度为(n+1)/2。

1.4算法描述与实现

1.4.1数据结构类型定义

/*图书结构*/

structBook

{

unsignedlongBookID;/*图书编号*/

charBookName[200];/*书名*/

charWriter[100];/*作者*/

intCurrentNumber;/*现存量*/

intAllNumber;//库存量

Book*Next;/*下一个图书信息*/

};

/*图书索引结构*/

structIndex

{

unsignedlongBookID;/*图书编号*/

Index*Next;/*下一个索引指针*/

};

/*借阅信息结构*/

structBorrow

{

unsignedlongBookID;/*借阅图书编号*/

charBookName[200];/*书名*/

unsignedlongCardID;/*图书证号*/

charReturnTime[200];/*归还日期*/

Borrow*Next;/*下一个借阅信息*/

};

 

1.4.2主要算法流程图及功能描述

图书借阅

图书入库

链表录入数据,图书名相同项合并叠加库存量,不相同的图书新建结点录入数据域,上一结点指针域指向新建结点,完成入库操作

1.4.3系统代码

#include

#include

#include

#include

#include

#include

/*图书结构*/

structBook

{

unsignedlongBookID;

charBookName[200];

charWriter[100];

intCurrentNumber;

intAllNumber;

Book*Next;

};

/*图书索引结构*/

structIndex

{

unsignedlongBookID;

Index*Next;

};

/*借阅信息结构*/

structBorrow

{

unsignedlongBookID;

charBookName[200];

unsignedlongCardID;

charReturnTime[200];

Borrow*Next;

};

 

intShowMainMenu();

voidInsertbook(Book**ListHead,Index**ListIndex);

voidQueryallbooks(Book*ListHead);

voidBorrowBook(Borrow**ListBorrow,Book*ListHead);

voidQueryBorrow(Borrow*ListBorrow);

voidReturnBook(Borrow**ListBorrow,Book*ListHead);

voidFreeBookList(Book**ListHead)

{

Book*pWork=*ListHead;

Book*Next=pWork;

while(NULL!

=pWork)

{

Next=pWork->Next;

free(pWork);

pWork=Next;

}

}

voidFreeIndexList(Index**ListIndex)

{

Index*pWork=*ListIndex;

Index*Next=pWork;

while(NULL!

=pWork)

{

Next=pWork->Next;

free(pWork);

pWork=Next;

}

}

voidFreeBorrowList(Borrow**ListBorrow)

{

Borrow*pWork=*ListBorrow;

Borrow*Next=pWork;

while(NULL!

=pWork)

{

Next=pWork->Next;

free(pWork);

pWork=Next;

}

}

voiddenglu()

{

intpasswd=0;

printf("\n\n\n\n\n");

printf("******************************************************************\n");

printf("**\n");

printf("**\n");

printf("**\n");

printf("*欢迎使用图书管理系统*\n");

printf("**\n");

printf("*用户登录*\n");

printf("**\n");

printf("*请于下方键入密码*\n");

printf("**\n");

printf("**\n");

printf("**\n");

printf("******************************************************************\n");

while

(1)

{

printf("请输入密码:

");

scanf("%d",&passwd);

system("cls");

if(passwd!

=12345)

{

printf("\n\n\n\n\n");

printf("******************************************************************\n");

printf("**\n");

printf("**\n");

printf("**\n");

printf("*欢迎使用图书管理系统*\n");

printf("**\n");

printf("*用户登录*\n");

printf("**\n");

printf("*请于下方键入密码*\n");

printf("**\n");

printf("**\n");

printf("**\n");

printf("******************************************************************\n");

printf("密码输入错误\n");

}

else

break;

}

}

voidloading()

{

system("color0c");

printf("\n\n\n\n\n\n\n\n\n\n\n");

printf("loading");

printf(".");

Sleep(100);

printf(".");

Sleep(100);

printf(".");

Sleep(100);

printf(".");

Sleep(100);

printf(".");

Sleep(100);

printf(".");

Sleep(100);

printf(".");

Sleep(100);

printf(".");

Sleep(100);

printf(".");

Sleep(100);

printf(".");

Sleep(100);

printf(".");

Sleep(100);

printf(".");

Sleep(100);

printf(".");

Sleep(100);

printf(".");

Sleep(100);

printf(".");

Sleep(100);

printf(".");

Sleep(100);

printf(".");

system("cls");

system("color0f");

}

voidSearchBookID(Book*ListHead);

voidSearchBookName(Book*ListHead);

voidSearchBookName(Book*ListHead);

voidSearchways(Book*ListBookHead);

intmain()

{

denglu();

loading();

Book*ListBookHead=NULL;

Index*ListIndexHead=NULL;

Borrow*ListBorrowHead=NULL;

intchoice=-1;

while(true)

{

choice=ShowMainMenu();

switch(choice)

{

case0:

{

FreeBookList(&ListBookHead);

FreeIndexList(&ListIndexHead);

FreeBorrowList(&ListBorrowHead);

return0;

break;

}

case1:

/*图书入库*/

{

Insertbook(&ListBookHead,&ListIndexHead);

break;

}

case2:

/*查询库存*/

{

Queryallbooks(ListBookHead);

printf("按回车键继续...");

fflush(stdin);

getchar();

system("cls");

break;

}

case3:

/*借阅图书*/

{

Queryallbooks(ListBookHead);

BorrowBook(&ListBorrowHead,ListBookHead);

break;

}

case4:

{

QueryBorrow(ListBorrowHead);

printf("按回车键继续...");

fflush(stdin);

getchar();

system("cls");

break;

}

case5:

/*归还图书*/

{

QueryBorrow(ListBorrowHead);

ReturnBook(&ListBorrowHead,ListBookHead);

break;

}

case6:

//查询图书方法

{

Searchways(ListBookHead);

printf("\n");

printf("按回车键继续...");

fflush(stdin);

getchar();

system("cls");

break;

}

}

}

fflush(stdin);

getchar();

return0;

}

intShowMainMenu()

{

intchoose;

Chooseagain:

printf("\n\n\n\n\n");

printf("******************************************************************\n");

Sleep(100);

printf("*图书管理系统*\n");

Sleep(100);

printf("******************************************************************\n");

Sleep(100);

printf("**\n");

Sleep(100);

printf("*1.图书入库*\n");

Sleep(100);

printf("*2.查询库存*\n");

Sleep(100);

printf("*3.借阅图书*\n");

Sleep(100);

printf("*4.借阅记录*\n");

Sleep(100);

printf("*5.归还图书*\n");

Sleep(100);

printf("*6.查询图书*\n");

Sleep(100);

printf("*0.退出*\n");

Sleep(100);

printf("**\n");

Sleep(100);

printf("******************************************************************\n");

Sleep(100);

printf("\t输入:

");

scanf("%d",&choose);

if(choose<0||choose>7)

{

system("cls");

gotoChooseagain;

}

returnchoose;

}

voidInsertbook(Book**ListHead,Index**ListIndex)

{

Book*pWork=*ListHead;

unsignedlongBookID;

charBookname[200];

charBookwriter[200];

intCurrentnumber;

Book*pTmpNewBook=(Book*)(malloc(sizeof(Book)));

memset(pTmpNewBook,0x0,sizeof(Book));

Index*pTmpIndex=(Index*)(malloc(sizeof(Index)));

memset(pTmpIndex,0x0,sizeof(Index));

system("cls");

printf("\n\n\n\n\n");

printf("******************************************************************\n");

printf("*图书入库*\n");

printf("******************************************************************\n\n");

printf("输入图书编号:

");

scanf("%d",&BookID);

pTmpNewBook->BookID=BookID;

printf("\n\n");

printf("输入图书名称:

");

scanf("%s",&Bookname);

strcpy(pTmpNewBook->BookName,Bookname);

printf("\n\n");

printf("图书作者:

");

scanf("%s",&Bookwriter);

strcpy(pTmpNewBook->Writer,Bookwriter);

printf("\n\n");

printf("入库数量:

");

scanf("%d",&Currentnumber);

pTmpNewBook->AllNumber=Currentnumber;

pTmpNewBook->CurrentNumber=pTmpNewBook->AllNumber;

printf("\n");

printf("******************************************************************\n");

if(pTmpNewBook->AllNumber<1)

{

system("cls");

printf("入库数量错误!

(按回车键继续...)");

getchar();

system("cls");

return;

}

if(NULL==*ListHead)

{

*ListHead=pTmpNewBook;

*ListIndex=pTmpIndex;

}

else

{

Book*pWork=*ListHead;

while(pWork!

=NULL)

{

if(strcmp(pWork->BookName,pTmpNewBook->BookName)==0&&strcmp(pWork->Writer,pTmpNewBook->Writer)==0)

{

pWork->AllNumber+=pTmpNewBook->AllNumber;

pWork->CurrentNumber+=pTmpNewBook->CurrentNumber;

printf("\n入库成功!

(按回车键继续...)");

fflush(stdin);

getchar();

system("cls");

return;

}

pWork=pWork->Next;

}

pWork=*ListHead;

while(pWork->Next!

=NULL)

{

pWork=pWork->Next;

}

pWork->Next=pTmpNewBook;

Index*pWork2=*ListIndex;

while(pWork2->Next!

=NULL)

{

pWork2=pWork2->Next;

}

pWork2->Next

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2