1图书系统C++信息系统.docx
《1图书系统C++信息系统.docx》由会员分享,可在线阅读,更多相关《1图书系统C++信息系统.docx(22页珍藏版)》请在冰豆网上搜索。
1图书系统C++信息系统
摘要
图书管理系统是典型的信息管理系统(MIS>,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立起数据一致性和完整性强、数据安全性好的库。
而对于后者则要求应用程序功能完备,易使用等特点。
采用C++作为开发工具,通过对C++进行深入的学习和应用,主要完成利用图书管理系统对图书记录进行统一管理,包括新增图书记录,更改图书记录,删除图书记录等功能,实现图书管理工作的系统化,规范化和自动化,为图书管理提供便利。
同时是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。
有助于加深对面向对象程序设计中基础理论和基本知识的理解,培养了实践能力,促进理论与实践的结合。
关键字:
图书管理系统C++信息管理系统
Abstract
Booksmanagementsystemmanagementsystemisthetypicalinformationmanagementsystem(MIS>,itsdevelopmentmainlyincludesthesettingandmaintenanceofdatabaseandtheprogrammingofthefrontendapplication.Theformerrequiredestablishdataconsistencyandintegrality,datasecuritygoodstorehouse.Forthelatterrequirestheapplicationprogramfunctioncomplete,easytouse,etc.Usingc++asdevelopmenttoolsthroughin-depthstudyofc++andapplications,mainlycompletesusebooksmanagementsystemmanagementsystemofbookrecords,includingnewunifiedmanagement,changebookrecordbooksrecord,delete,realizefunctionssuchasbookrecordbooksmanagementworkofthesystematic,standardizationandautomation,providestheconvenienceforthebooksmanagement.Meanwhileisafterstudyingtheobject-orientedprogramdesigncourseoftimeaftercomprehensivepractice.Helpdeepenourunderstandingoftheobject-orientedprogrammingbasictheoryandbasicknowledgeunderstanding,cultivatethepracticeability,promotingthecombinationoftheorywithpractice.
Keyword:
booksmanagementsystemmanagementsystemc++
informationmanagementsystem
Writtenby
Supervisedby
第一章绪论
1.1图书管理系统概述
随着社会的发展,人们生活水平的提高,物质文化的发展已经远远满足不了人们的需求,精神文明有了飞速的发展,因此图书事业的发展就成为精神文明进步的一个动力。
在迈入二十一世纪的今天,对图书管理显得极其重要,合理的管理不仅反映一个国家的科技水平,而且影响人们对知识掌握的速度和质量。
在知识经济到来的今天,用计算机控制图书馆的工作由自动化系统运行而完成。
这不仅省了人力,而且还提高了工作效率和服务质量,而且还加速了图书的流通。
1.2图书管理的目的和意义
随着各高等院校的规模不断扩大,图书馆的藏书、管理人员、读者的数量也越来越多,图书管理涉及到大量的数据处理,传统的人工系统已经不能完成庞大的数据处理,因为图书的情况是随时改变的,因此必须对图书进行动态的管理,而这对于管理人员来说是一件比较复杂的事情。
因此,为方便对图书馆书籍、读者资料、借还书等进行高效的管理。
提高业务流程效率,让管理员从繁重的工作中解脱出来,使管理员在使用一个软件以后能极其容易地对所有图书进行管理,并且准确无误,轻松自如。
因此开发一个图书管理系统是当务之急,也是本论文选题的重要意义和研究宗旨。
总之,建立图书馆的计算机自动化管理系统,不但可以大大提高图书流通率,而且推动了社会文化生活的进
第二章系统相关技术
2.1C++概述
C++语言是一种应用较广的面向对象的程序设计语言,使用它可以实现面向对象的程序设计。
面向对象的设计与面向过程的设计是有很大区别的,面向对象的程序设计是在面向过程的程序设计的基础上一个质的飞跃。
要学会面向对象的程序设计,首先要学会一种面向对象的语言,即要学会用VC编程,就要先有C++的基础,而学习C++语言首先要认识它面向对象的特性和实现面向对象的方法。
2.11C++程序结构的基本组成部分
预处理命令,C++提供了三类预处理命令:
宏定义命令、文件包含命令、条件编译命令。
输入输出,C++程序中总是少不了输入和输出的语句,实现与程序内部的信息交流。
特别是屏幕输出的功能,几乎每个程序都要用到,使用它把计算机的结果显示在屏幕上。
函数,C++的程序是由若干个文件组成的,每个文件又是由若干个函数组成,因此,可以认为C++的程序就是函数串,即由若干个函数组成,函数与函数之间是相对的,并且是并行的,函数之间可以调用。
在组成一个程序的若干个函中,必须有一个main(>。
语句,语句是组成程序的基本单元。
函数是由若干条语句组成的。
但是,空函数是没有语句的。
语句是由单词组成,单词间用空格符分隔,C++程序中的语句又是以以分号结束。
语句除了有表达式语句和空语句之外,还有复合语句、分支语句、循环语句和转向语句等若干类。
变量,多数程序都需要说明和使用变量。
广义讲,对象包含了变量,即将变量也称为一种对象,狭义讲,将对象看作是类的实例,对象是指某个类的对象。
其他,除了以上讲述的5个部分以外,还有其他组成部分。
例如,符号常量和注释信息也是程序的一部分。
C++中都尽量把常量定义为符号常量,在C++的程序中出现的是符号常量,该符号常量代表着某个确定的常量值。
2.12C++程序的实现C++源程序的实现与其他高级语言源程序实现的原理是一样的。
一般都要经过编辑、编译、运行。
其中最要的是编译过程,C++是以编译方式实现的高级语言。
C++程序的实现,必须要使用某种C++语言的编译器对程序进行编译。
编译器的功能是将程序的源代码转换成为机器代码的形式,称为目标代码;然后,再使目标代码进行连接,生成可执行文件。
该过程可分为三个子过程:
预处理过程、编译过程(词法分析、语法分析、符号表、错误处理程序、生成目标代码>、连接过程。
第三章系统分析
1.图书管理系统设计
任何一个软件的开始都是进行系统的需求分析。
需求分析要根据用户的功能要求、界面以及其他要求进行分析,当然在此需求分析是根据我自己对图书管理系统的基本了解以及系统所需要的基本功能来进行的。
其次制作的各个流程图才是真正的系统设计,是在完成需求分析的基础上进行的。
2.用户的功能需求分析
图书管理系统需要的功能分析如下:
管理系统具有多个管理员,管理员可以使用不同的用户名和密码进入管理系统,并可以修改自己的密码;
(一)进入系统后可以重新登录该系统;
(二)在系统中可以对数据库进行简单的操作;
(三)最基本的功能还应具有可以编辑图书——录入、删除图书资料。
图书分类信息的添加、修改、删除和查询。
此功能为图书的分类管理提供依据。
(四)图书基本信息的添加、修改、删除和查询。
(五)借阅证件分类信息的添加、修改、删除和查询。
不同类型的借阅证件可以借阅的最大数量、最大天数和续借天数不同。
(六)图书借阅证件的添加、修改、删除、挂失和查询。
(七)图书借阅管理,包括图书借阅、图书归还、图书续借、图书挂失和图书催还等。
3.系统运作流程
该系统涉及到用户以及管理员,在两者之间进行一系列的操作。
管理员对图书进行录入、删除等操作,和用户之间的交流则是进行借阅图书操作。
运作流程图如图:
第四章系统的实现
1、类的设计
Book类的设计:
Book
Name[strNum]:
char
number[strNum]:
char
kind[type]:
char
inttag。
intnum。
intadd
Book(>{}
getkind(>:
char
getname(>:
char
getnum(>:
int
gettag(>:
int
setnumber(charnum[]>:
void
setname(charna[]>:
void
setkind(charkin[]>:
void
delbook(>:
void
addbook(intn,char*na,char*kin>:
void
disp(>:
void
(1>数据成员
charname[StrNum]。
用来存放书名。
charnumber[StrNum]。
用来存放图书的编号。
charkind[Type]。
用来存放图书的类型。
inttag。
定义删除标记。
intnum。
定义图书编号为整形。
intadd。
增加标记。
(2>函数成员
Book(>{}无参构造函数,用于为书名和作者姓名设置默认值。
chargetkind(>用于获取图书类型。
chargetname(>用于获取书名。
intgetnum(>用于获取图书编号。
intgettag(>用于获取删除标记。
voidsetname(charna[]>用于设置书名。
voidsetkind(charkin[]>用于设置类型。
voiddelbook(>用于删除图书。
voidaddbook(intn,char*na,char*kin>用于增加图书。
voiddisp(>用于输出图书。
2.主程序的设计:
(1>函数的设计:
classBDatabase{}图书管理类的设置,实现对图书的添加,查找,删除等。
inttop。
设置图书记录指针。
Bookbook[Maxb]。
设置图书记录voidclear(>清空图书记录。
intaddbook(intn,char*na,char*kin>增加图书记录。
Book*query(intbookid>查找图书记录。
voidbookdata(>。
定义图书库。
voiddisp(>输出。
~BDatabase(>设置析构函数,将book[]写到book.txt文件中
voidBDatabase:
:
bookdata(>由此函数开始对图书管理系统的主菜单进行调用与功能的实现。
<界面参看执行界面部分)
最后用main(>函数的实现,程序的主界面的引导
3.源代码分析:
/*****************************************************************************************/
#defineStrNum20
#defineType20
#include
#include
#include
#include//输入/输出文件流类
usingnamespacestd。
constintMaxb=100。
//最多可存储的图书
classBook
{
private:
inttag。
//删除标记
intnum。
//图书编号
intadd。
//增加标记
charnumber[StrNum]。
//编号
charname[StrNum]。
//书名
charkind[Type]。
//图书类型
public:
Book(>{}
chargetkind(>//获取图书类型
{
returnkind[Type]。
}
chargetname(>//获取书名
{
returnname[StrNum]。
}
intgetnum(>//获取图书编号
{
returnnum。
}
intgettag(>//获取删除标记
{
returntag。
}
voidsetname(charna[]>//设置书名
{
strcpy(name,na>。
}
voidsetkind(charkin[]>//设置类型
{
strcpy(kind,kin>。
}
voiddelbook(>//删除图书
{
tag=1。
}
voidaddbook(intn,char*na,char*kin>//增加图书
{
tag=0。
num=n。
strcpy(name,na>。
strcpy(kind,kin>。
}
voiddisp(>//输出图书
{
cout.flags(ios:
:
left>。
//设置对齐的标志位为左
cout<<<<}
}。
/*****************************************************************************************/
classBDatabase
{
private:
inttop。
//图书记录指针
Bookbook[Maxb]。
//图书记录
public:
BDatabase(>//构造函数,将book.txt读到book[]中
{
Bookb。
top=-1。
fstreamfile("book.txt",ios:
:
in>。
while(1>
{
file.read((char*>&b,sizeof(b>>。
if(!
file>break。
top++。
book[top]=b。
}
file.close(>。
}
voidclear(>//全删
{
top=-1。
}
intaddbook(intn,char*na,char*kin>//增加图书
{
Book*p=query(n>。
if(NULL==p>
{
top++。
book[top].addbook(n,na,kin>。
return1。
}
return0。
}
Book*query(intbookid>//查找图书
{
for(inti=0。
i<=top。
i++>
if(book[i].getnum(>==bookid&&book[i].gettag(>==0>
{
return&book[i]。
}
returnNULL。
}
voidbookdata(>。
//图书库
voiddisp(>
{
for(inti=0。
i<=top。
i++>
if(book[i].gettag(>==0>
book[i].disp(>。
}
~BDatabase(>//析构函数,将book[]写到book.txt文件中
{
fstreamfile("book.txt",ios:
:
out>。
for(inti=0。
i<=top。
i++>
if(book[i].gettag(>==0>
file.write((char*>&book[i],sizeof(book[i]>>。
file.close(>。
}
}。
voidBDatabase:
:
bookdata(>
{
charchoice。
charbname[40]。
charbkind[40]。
charnewType[20]。
intbookid。
Book*b。
while(choice!
='0'>
{
cout<<"\t******************************************************************\n"。
cout<<"\n\n"。
cout<<"\t\t\t图书管理系统\n\n"。
cout<<"\t\t\t1新增图书记录\n"。
cout<<"\t\t\t2更改图书记录\n"。
cout<<"\t\t\t3删除图书记录\n"。
cout<<"\t\t\t4查找图书记录\n"。
cout<<"\t\t\t5显示图书记录\n"。
cout<<"\t\t\t6清空全部记录<慎用)\n"。
cout<<"\t\t\t0退出系统\n"。
cout<<"\n\n"。
cout<<"\t******************************************************************\n"。
cout<<"请选择(1,2,3,4,5,6,0>:
"。
cin>>choice。
switch(choice>
{
case'1':
cout<<"输入图书编号:
"<cin>>bookid。
cout<<"输入图书类型:
"<cin>>newType。
cout<<"输入图书书名:
"<cin>>bname。
addbook(bookid,bname,newType>。
break。
case'2':
cout<<"输入图书编号:
"<cin>>bookid。
b=query(bookid>。
if(b==NULL>
{
cout<<"该图书不存在"<break。
}
cout<<"输入新的书名:
"<cin>>bname。
b->setname(bname>。
cout<<"输入新的类型:
"<cin>>bkind。
b->setkind(bkind>。
break。
case'3':
cout<<"读入图书编号:
"<cin>>bookid。
b=query(bookid>。
if(b==NULL>
{
cout<<"该图书不存在"<break。
}
chartg1。
cout<<"确定要删除此记录吗?
(Y/N>"<cin>>tg1。
if(tg1!
='n'&&tg1!
='N'>
{
b->delbook(>。
cout<<"已成功删除该书记录!
"<break。
}
case'4':
cout<<"读入图书编号:
"<cin>>bookid。
b=query(bookid>。
if(b==NULL>
{
cout<<"该图书不存在"<break。
}
cout<<"图书编号图书名称图书类型\n"。
b->disp(>。
break。
case'5':
cout<<"图书编号图书名称图书类型\n"。
disp(>。
break。
case'6':
chartg2。
cout<<"确定要清空所有记录吗?
(Y/N>"<cin>>tg2。
if(tg2!
='n'&&tg2!
='N'>
{
clear(>。
cout<<"已成功清空记录!
"<break。
}
case'0':
break。
default:
cout<<"输入错误,请从新输入(数字为0~6>:
"。
}
}
}
//main(>函数的实现,程序的主界面的引导
voidmain(>
{
charchoice。
BDatabaseBookDB。
while(choice!
='0'>
{cout<<"\t******************************************************************\n"。
cout<<"\n\n"。
cout<<"\n\n\t\t\t欢迎使用图书管理系统\n\n"。
cout<cout<<<"by<姓名——)\n\n\n\n"。
cout<<"\n\n"。
cout<<"\t******************************************************************\n"。
cout<<"\t\t\t1进入系统\n\n\t\t\t0离开"<cout<<"请选择:
"。
cin>>choice。
switch(choice>
{
case'1':
BookDB.bookdata(>。
break。
case'0':
cout<<"\n\n\t\t\t欢迎再次使用图书管理系统\n\n"。
break。
default:
cout<<"输入错误,请从新输入:
"。
}
}
}
4.3执行界面:
1.主菜单界面,包括制作成员以及系统提示。
<因为此图含有本人姓名,出于隐私考虑,删除此图,使用者直接运行即可得到结果)
2.进入系统后,出现子菜单,用户可根据需要进