《C语言程序》课程设计 图书管理系统Word格式文档下载.docx
《《C语言程序》课程设计 图书管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《《C语言程序》课程设计 图书管理系统Word格式文档下载.docx(22页珍藏版)》请在冰点文库上搜索。
1图书管理2图书查找3图书借还4图书的新增与修改
第一章绪论
1.1选题背景
随着社会的发展及知识经济时代的到来,管理信息系统在各行各业发挥着越来越重要的作用。
但在高校的图书管理中,避免了手工操作而带来的一些不必要的问题。
1.2系统目标
本系统的目标是将高校图书管理工作实现计算机管理,从而大幅度提高工效率,提高实施管理的准确性、科学性;
使担负管理的工作人员从繁杂的手工劳作中解脱出来,更好实施针对图书借阅管理在手工操作遇到的问题。
1.3系统目的
通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力,能更好的巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!
更加了解了c语言的好处和其可用性!
同时增加了同学之间的团队合作精神!
更加也体会到以后在工作中团队合作的重要性和必要性!
第二章问题定义(或系统分析)
2.1题目分析
一、目的要求
本课程设计任务的目的是要求学生按照分析、设计、编码、调试和测试的软件开发过程独立完成管理系统设计,以及C语言算法的掌握,并能最终实现本系统的功能要求,通过这个程序可以学习到以前调试短程序没有的的经验。
【题目要求】
(1)为各项操作功能设计一个菜单。
应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目;
(2)要求以上功能分别用函数实现。
并要求用C语言的文件操作语句将以上所有结果保存在文件XX.out。
【输入/输出要求】
(1)应用程序运行后,先显示一个菜单,然后用户根据需要选择相应的操作项目。
进入每个操作后,根据程序的提示输入相应的信息;
(2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
菜单中的每一个选项都对应一个子程序,子程序的算法几乎囊获了所有C语言学过的技巧。
目前社会管理系统发展飞快,教务管理信息系统也是有了很大的发展。
本系统完全独立开发,力求使系统功能简明,但功能全易操作。
它适应了时代发展,适应了我国教育深化改革、全面实施素质教育的需要;
从技术角度分析,这项开发工作所涉及的专业技术如下:
操作系统采用Windows2000以上的版本;
在数据管理系统上,我们可采用了MicrosoftOfficeAccess,开发工具选用MicrosoftVisualBasic.NET2003;
从经济角度分析,采用计算机管理不但可以提高工作效率,而且还可以节省人力、物力、财力,降低了人工处理产生的错误
第三章总体设计与详细设计
图书数据:
书号,书名,作者,出版时间,价格,册数,页数
借书人信息:
姓名,单位,所借书目,借阅时间等
1.借书模块:
输入书名
编号
借书证号(如书库中有书并且册数大于0,则进行借书,借书日期由系统时间提供)
2.还书模块:
登记借书证号
进行还书操作
同时提供有无超时
有则给予罚款处理。
3.图书管理:
对书库中书进行管理
新书入库
旧书删除
对库存量进行统计和查询
4.查询模块:
对书库中书进行查询
根据书名进行查询
根据书号进行查询
根据出版社进行查询
对借阅书进行查询
对一段时间或某书进行查询和统计
第四章编码实现
增加图书功能,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;
};
查找书名称,返回查找到的数量,书名可能有重复的,一本书可能也有很多本,但是ID却是唯一的
intsearch_books_by_name(Book*book_head,char*name)
intcount=0;
Book*p=book_head;
while(p)
if(strcmp(p->
_name,name)==0)
print_book(p);
++count;
}
returncount;
}
借书,返回该书的指针,否则就返回NULL,可能不存在图书,或者已经被借走了
Book*borrow_books(Book*book_head,intid)
if(p->
_id==id)
break;
p)/*不存在*/
returnNULL;
还书,正常归还就返回该书的指针,否则就返回NULL
还书要登记
Book*return_books(Book*book_head,intid)
_id==id&
&
_status!
=0)
第五章调试与测试
运行的结果说明:
在VisualC++6.0
在此环境下运行比较好,其界面十分友好并且能正常运行。
第六章总结与心得
首先我觉得,用到的程序段不必太高级,因为天下事皆有高低之分,决定优劣的不是集体中的某部分的强弱,起决定作用的是组合内各元素的和谐,要能在一个集体中各尽其用,每个人都能发挥自己的长处,避免自己的短处,那么这个集体的组合能量是最优的。
选择什么等级的C语言就是关键,最后我决定运用文件,我的理解是;
必须建立一个文件,它能够保存新的录入文挡,又能在提示语的要求下读出文档。
然而,这只是万里长征的第一步,后面的路还很长,困难还有很多,可是我能成功的编译一个程序,能够在思路卡壳的情况下,继续前进,我在此很感谢给予我耐心解答的老师和同学,是他们为我小程序的成功起到了关键性的作用,那么多个日夜,如此多的困难,同学们勤恳塌实,从开始到结束,始终热情高涨,我感谢这种氛围,感谢学校提供的良好条件。
在课程设计过程中,我学到了很多人生哲理,懂得怎么样去制定计划,怎么样去实践计划,并掌握了在执行过程中
附录
源代码
汉字菜单的编写可参照以下代码:
#include"
stdio.h"
.main()
{charc;
inti;
do
clrscr();
for(i=0;
i<
80;
i++)
printf("
*"
);
\t1:
addbooks\n"
\t2:
listbooks\n"
\t3:
sreachbooks\n"
\t4:
borrowbooks\n"
\t5:
returnbooks\n"
printf(“\t6:
exit\n”)
\t请选择输入选项[1\\2\\3\\4\\5\\6]:
\n"
c=getchar();
}while(c!
='
1'
c!
2'
3'
4'
5'
!
=’6’);
getchar();
switch(c)
{case'
:
input();
case'
del();
find();
arrange();
case‘5’:
right();
case'
6'
exit(0);
按任意键返回主菜单:
}while
(1);
#include<
stdio.h>
stdlib.h>
string.h>
#defineBORROWED
1
#defineNOBORROW
0
/*定义图书结构*/
structBook
int
_id;
//编号,唯一
char_name[32];
//图书的名称,不唯一
_type;
//图书的类型,不唯一
_status;
//图书的状态,借出/没有借出
_count;
//图书借出的次数
structBook*_next;
//下一本书
structBook*_prev;
//上一本书
/*定义图书类型*/
typedefstructBookBook;
/*操作的目录提示*/
charbook_menu[][32]=
"
addbooks"
listbooks"
searchbooks"
borrowbooks"
returnbooks"
exit"
"
/*操作的目录提示1*/
charbook_menu_sub[][32]=
searchbooksbyname"
searchbooksbytype"
/*添加图书类型,用户信息显示*/
charbook_types[][32]=
type0"
type1"
type2"
/*添加图书状态,用户信息显示*/
charbook_status[][32]=
noborrow"
borrowed"
/*增加图书,id自动排号*/
/*建立图书管理链表*/
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)
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)
/*借书,返回该书的指针,否则就返回NULL,可能不存在图书,或者已经被借走了*/
Book*borrow_books(Book*book_head,intid)
=0)
/*已经被借走*/
_status=1;
/*借书登记*/
_count++;
/*被借阅次数+1*/
returnp;
/*查找书名称,返回查找到的数量,书名可能有重复的,一本书可能也有很多本,但是ID却是唯一的*/
/*查找书类型,返回查找到的数量,一个类型会有很多书*/
intsearch_books_by_type(Book*book_head,inttype)
_type==type)
/*还书,正常归还就返回该书的指针,否则就返回NULL*/
Book*return_books(Book*book_head,intid)
/*还书登记*/
/*打印操作选项*/
voidprint_menu(charmenus[][32])
intno=0;
\nPLEASESELECTIDLIKE1or2..\n"
while(strlen(menus[no]))
%d
\t%s\n"
no+1,menus[no]);
++no;
OPTION("
while(no)
/%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)
Errorinput!
else
INPUT:
%d\n"
key);
switch(key)
case1:
//addbooks
pTmp=(Book*)malloc(sizeof(Book));
if(pTmp)
Add_Bookinputname:
strncpy(pTmp->
_name,ss,31);
print_menu(book_types);
=0||key>
(sizeof(book_types)/32))
key=1;
pTmp->
_type=key-1;
add_books(pBooks,pTmp);
case2:
//listbooks
list_books(pBooks);