数据结构课程设计图书管理系统文档格式.docx
《数据结构课程设计图书管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计图书管理系统文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
本系统是图书管理系统,本系统启动后需要进入主界面,在这个界面,我们可以选择所需要的功能模块来实现所要的执行功能。
A)录入图书功能:
图书信息录入到数据库当中(主要包括图书的编号、书名、作者、出版社、出版日期、图书简介、图书类别等);
B)列表图书功能:
把数据库当中图书的录入信息的图书先列举出来,再对其进行保存;
C)查询图书功能:
方便管理工作人员对图书信息的了解,主要按照图书的编号和书名进行浏览图书信息;
D)借阅图书功能:
主要的是对图书馆中已被借阅的书进行信息存储;
E)归还图书功能:
该模块实现对图书馆中已被归还的书进行信息存储;
3系统各模块功能实现
3.1添加图书
该模块主要实现对新入库的图书进行信息录入,录入信息包括:
图书编号、名称、状态、借阅次数等。
运行界面如图2所示,运行成功提示如图:
图3-1添加图书
3.2列表图书
该模块主要实现对所有登记的图书进行信息列表。
运行界面如图3.2所示,运行成功提示如图:
图3-2列表图书
3.3查询图书
该模块实现对图书的信息查询功能,查询方式包括:
“按名查找”、“按类型查找”。
运行界面如图3-3-1、图3-3-2所示,运行成功提示如图:
图3-3-1按名查询
图3-3-2按类型查询
3.4借阅图书
该模块实现对所登记图书的借阅情况统计。
运行界面如图3-4所示,运行成功提示如图:
图3-4借阅图书
3.5归还图书
该模块实现对所借阅图书归还情况的统计。
运行界面如图3-5所示,运行成功提示如图:
图3-5归还图书
3.6总体运行
运行界面如图3-6所示,运行成功提示如图:
图3-6总体运行
4程序源代码
源代码如下:
#include<
stdio.h>
stdlib.h>
string.h>
#defineBORROWED1
#defineNOBORROW0
/*定义图书结构*/
structBook{
int_id;
//编号,唯一
char_name[32];
//图书的名称,不唯一
int_type;
//型,不唯一
int_status;
//图书的状态,借出/没有借出
int_count;
//图书借出的次数
structBook*_next;
//下一本书
structBook*_prev;
//上一本书
};
/*定义图书类型*/
typedefstructBookBook;
/*操作的目录提示*/
charbook_menu[][32]={"
addbooks"
"
listbooks"
searchbooks"
borrowbooks"
returnbooks"
exit"
"
"
};
/*操作的目录提示1*/
charbook_menu_sub[][32]={"
按名查找"
s按类型查找"
/*添加图书类型,用户信息显示*/
charbook_types[][32]={"
类型0"
类型1"
类型2"
/*添加图书状态,用户信息显示*/
charbook_status[][32]={"
未借出"
借出"
/*增加图书,id自动排号*/
intadd_books(Book*head,Book*book_for_add)
{
Book*p=head;
if(!
p)
return-1;
while(p->
_next)
{
p=p->
_next;
}
p->
_next=book_for_add;
book_for_add->
_id=p->
_id+1;
_prev=p;
_next=NULL;
_count=0;
_status=0;
return0;
}
/*建立图书管理链表*/
Book*create_list(Book*book_head)
{
if(book_head)
book_head->
_prev=book_head;
_id=1;
returnbook_head;
}/*释放链表*/
voidfree_list(Book*book_head)
Book*p,*p1;
p=book_head;
while(p)
p1=p->
free(p);
p=p1;
}/*打印图书信息*/
voidprint_book(Book*book)
{printf("
id:
%d,name:
%s,type:
%s,status:
%s,times:
%d\n"
book->
_id,book->
_name,book_types[book->
_type],book_status[book->
_status],book->
_count);
}
/*列出所有登记的图书*/
voidlist_books(Book*book_head)
Book*p=book_head;
while(p)
print_book(p);
p=p->
}/*借书,返回该书的指针,否则就返回NULL,可能不存在图书,或者已经被借走了*/
Book*borrow_books(Book*book_head,intid)
while(p)
{
if(p->
_id==id)break;
p=p->
}
p)/*不存在*/
returnNULL;
if(p->
_status!
=0)/*已经被借走*/
p->
_status=1;
/*借书登记*/
_count++;
/*被借阅次数+1*/
returnp;
}/*查找书名称,返回查找到的数量,书名可能有重复的,一本书可能也有很多本,但是ID却是唯一的*/
intsearch_books_by_name(Book*book_head,char*name)
intcount=0;
if(strcmp(p->
_name,name)==0)
{
print_book(p);
++count;
}
returncount;
}/*查找书类型,返回查找到的数量,一个类型会有很多书*/
intsearch_books_by_type(Book*book_head,inttype)
{
{
_type==type)
print_book(p);
++count;
}/*还书,正常归还就返回该书的指针,否则就返回NULL*/
Book*return_books(Book*book_head,intid)
_id==id&
&
p->
=0)
p->
/*还书登记*/
break;
returnp;
}/*打印操作选项*/
voidprint_menu(charmenus[][32])
intno=0;
printf("
\nPLEASESELECTIDLIKE1or2..\n"
);
while(strlen(menus[no]))
{
printf("
%d\t%s\n"
no+1,menus[no]);
++no;
OPTION("
while(no)
printf("
/%d"
no--);
):
}
/*主函数*/
intmain(void)
charkey=0;
charss[128];
intloop=1;
Bookfirst_book,*pBooks,*pTmp;
strcpy(first_book._name,"
nihao"
first_book._type=0;
pBooks=create_list(&
first_book);
while(loop)
print_menu(book_menu);
gets(ss);
key=ss[0]-48;
if(key<
0||key>
6)
printf("
Errorinput!
\n"
elseprintf("
INPUT:
%d\n"
key);
switch(key)
case1:
//addbooks
pTmp=(Book*)malloc(sizeof(Book));
if(pTmp)
{
printf("
Add_Bookinputname:
gets(ss);
strncpy(pTmp->
_name,ss,31);
print_menu(book_types);
key=ss[0]-48;
if(key<
=0||key>
(sizeof(book_types)/32))
key=1;
pTmp->
_type=key-1;
add_books(pBooks,pTmp);
}break;
case2:
//listbooks
list_books(pBooks);
break;
case3:
//searchbooks
print_menu(book_menu_sub);
gets(ss);
key=ss[0]-48;
printf("
switch(key)
{
case1:
//searchbooksbyname
printf("
inputbookname:
gets(ss);
key=search_books_by_name(pBooks,ss);
if(key==0)
nofound!
case2:
//searchbooksbytype
key=search_books_by_type(pBooks,key-1);
if(key==0)
default:
break;
}break;
case4:
//borrowbooks
Borrowbooks,inputbookid:
key=atoi(ss);
pTmp=borrow_books(pBooks,key);
if(!
pTmp)
printf("
borrowbooksfailed:
%d\n"
else
{printf("
borrowbookssuccessful!
print_book(pTmp);
case5:
//returnbooks
Returnbooks,inputbookid:
pTmp=return_books(pBooks,key);
returnbooksfailed:
returnbookssuccessful!
case6:
//exit
loop=0;
default:
printf("
--pause--"
gets(ss);
free_list(pBooks);
return0;
5结论
不知不觉数据结构课结束了,通过此次课程设计,我深刻的了解了有关数据结构的一些操作和编程。
同时也对数据结构课程设计目的也有所感悟。
进一步熟悉了数据结构语言的结构和使用方法,另外同时也学到了有关数据结构以外的很多的知识,达到了能独立处理阅读、编制和调试一定规模的数据结构语言程序的水平。
此次课程设计的课题是图书信息管理系统,这需进行程序设计方法和技能的基本知识,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,理论知识的学习的关键不在于懂的多少,而在于你对其的实践应用,一开始的时候,编出来的程序有很多的问题,尤其是在图形用户界面程序上,因此在图书馆查阅了很多的资料,也请教了好几个同学帮忙修改,调试了好久才能正常的运行。
这次的综合课程设计让我对数据结构有了更深的认识,对各种“使用方法”有了更进一步的了解。
时间是短暂的,收获是丰厚的。
随着时间的流失,我会把现在学到的东西用到以后的学习当中,我会为了以后的路程而努力学习的,时刻记住只有付出才有收获的。
只有更好的掌握数据结构语言才能顺利的把程序编制出来,才能做出更好的程序。
同时在编写程序的时候要详细的理解每一个子程序的功能,对没有细节都要做到透明化。
对于每一个问题都要亲手的解决。
参考文献
[1]数据结构基础及应用案例开发李刚生王琰清华大学出版社2009
[2]C语言程序设计杨一平科学出版社2006
[3]Java程序参考大全鹿春江清华大学出版社2006
[4]C语言课程设计刘翼人民邮电出版社2005
[5]数据结构(C语言版)严蔚敏吴伟民清华大学出版社2007
致谢
首先我们衷心感谢我的指导老师王丽老师和曹冬燕老师给予我们在数据结构课程设计方面的大力支持。
在此期间,他们对我们的指导为我指明了设计的方向,对我们的鼓励使我勇于面对困难,对我们的鞭策让我们充满了前进的动力。
借此机会,向他们表示衷心的谢意!