图书管理系统Word格式文档下载.docx
《图书管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《图书管理系统Word格式文档下载.docx(30页珍藏版)》请在冰豆网上搜索。
●需求分析、方案论证、软件结构、模块划分、数据库设计等应详尽合理;
●主要实现基础信息管理,在基础信息管理中需要实现图书信息管理、图书种类信息管理、供应商信息管理、仓库信息管理、柜台信息管理
●人机界面友好;
●代码可读性强;
●设计说明书按规定格式书写。
2系统分析
2.1工作流程
通过对图书管理过程的研究与分析,在设计十系统时,图书信息管理系统应该具备一些信息管理功能,包括信息的录入、查询、修改和删除等,下面从软件的整体设计角度进行设计。
2.2开发与设计思想
图书信息管理系统,要简单实用,界面设计简单友好,尽可能地简化操作步骤,考虑方便性,增加查询方法,同时要保证数据的安全,使用一定的权限,设计管理员角色,从而满足现实信息管理的需要。
图书管理系统开发主要包括后台数据库的建立和维护以及前端的应用程序的开发两个方面。
对于前者要求建立起数据一致性和完整性强、数据安全性好的数据库。
而对于后者则要求应用程序功能完备,易使用等特点。
因此我们结合嵌入式图书馆的要求,对SQL语言原理、VisualC++应用程序设计,Oracle数据库技术进行了较深入的学习和应用,主要完成对图书管理系统的需求分析、功能模块划分、数据库模式分析,并由此设计了数据库结构和应用程序。
基于上述考虑本系统主要利用VisualC++6.0作前端的应用开发工具,利用Oracle10g作为后台的数据库,利用WINDOWSXP作为系统平台,而全部采用Microsoft的操作系统及其应用开发工具开发的图书借阅管理系统。
首先介绍的是开发环境及所用到的基础知识。
其次是系统的设计过程,包括系统分析、功能实现和系统的调试、设计过程中遇到的难点问题等。
本系统充分利用了VisualC++6.0开发前台应用程序,Oracle10g开发后台数据库的优势,使系统更加完善。
实现了数据库表的浏览,记录的添加、删除和修改,报表的生成,实现了多数据库表的连接操作,实现了条件查询,并灵活实现了对不可更新查询结果集的更新操作,实现了主从表操作,实现了密码维护功能。
3系统设计
3.1系统结构功能模块设计
经过对用户的需求进行分析以后,确定了图书管理系统的功能模块包括:
(1)基础信息管理。
在基本信息管理中需要实现操作员信息管理、图书信息管理、图书种类信息管理、供应商信息管理、仓库信息管理、柜台信息管理。
(2)库存管理。
在库存管理中需要实现图书的入库、入库退货、库存调拨管理。
(3)图书价格管理。
在图书价格管理中能够实现图书定价管理、图书调价管理。
(4)图书销售管理。
在图书销售管理中主要实现图书销售、销售退货管理。
(5)查询管理。
在查询管理中主要实现入库查询管理、入库退货查询管理、销售查询管理、销售退货管理查询
3.2功能模块图
图3-1图书管理系统功能模块图
3.3系统流程分析
前面的分析中已经定义了系统的各个功能模块,属于静态建模的范围。
在系统运行时的动态模型应该由系统的流程决定。
具体流程如图3-2所示:
图3-2图书管理系统系统流程图
3.4图书信息过程处理分析
在设计图书信息管理时,需要实现图书信息的添加、修改、删除等功能。
为了方便用户操作,利用组合框选择数据的方法维护数据。
在数据添加成功后,会将新添加的数据显示在表格中,供拥护查看。
如果用户修改数据,可以在表格中双击想要修改的数据,则当前数据将会显示在组合框中,单击“修改”按钮,完成修改操作;
如果用户执行删除操作,可以在表格中选中想要删除的数据,单击“删除”按钮将所选的数据删除。
操作员登录功能:
打开图书管理系统,在“用户名”里填入“Operator”,“用户密码”框里我们填入“bookmanage”作为操作员登录密码。
填写完成点击“确定”按钮,将会出现程序操作主界面,即该用户已经登录成功了。
查询功能:
在登录成功之后,点击“查询管理”,在弹出的对话框,选择想要查询的条件,点击“查询”按钮,成功即可显示查询出来的图书入库或销售情况,表示测试成功。
用户退出系统:
在管理操作已全部完成,需要退出程序的时候,在系统菜单中有一个“退出”的选项,点击之后便可退出。
也可以点“关闭”或主界面相应图标退出。
密码更改:
在以管理员身份登录的情况下,在程序中点击基础信息管理菜单,选择操作员选项,可以添加新的用户并设定操作员级别。
4系统数据库设计
4.1概念结构设计
(1)图书管理系统系统的分E-R:
图4-1图书信息ER图
图4-2仓库信息ER图
图4-3操作员信息ER图
图4-4柜台图书信息ER图
图4-5柜台信息ER图
图4-6应商信息ER图
(2)系统总E-R图:
图4-7统总E-R图
4.2逻辑结构设计
根据前面的概念结构设计出的E-R图,将实体间的联系转化为关系模式,本系统通过E-R图转化为关系模式如下:
图书信息表(bookinfo):
(bookname,shortname,barcode,author,bookconcem,price,memo,kind)
仓库信息表(storageinfo):
(storagename)
操作员信息表(operator):
(name,possword,level)
供应商信息表(providerinfo):
(provider,corporation,principal,phone,addr,web,e_mail)
柜台图书表(counterbook):
(barcode,counter,booknum)
柜台信息表(counterinfo):
(counter,instockid,barcode,unitprice,numbers,rebate,paymoney,stockname)
入库入库表(instock_sub):
(instockid,barcode,unitprice,numbers,rebate,paymoney,stockmane)
入库退货明细表(cancelinstock):
(CancelID,barcode,unitprice,numbers,rebate,paymoney,stockname)
商品销售明细表(sell_sub):
(SellID,barcode,unitprice,numbers,rebate,paymoney)
图书调拨明细表(bookmove_sub):
(moveID,barcode,booknum)
销售退货明细表(cancelsell_sub):
(SellCancelID,barcode,unitprice,numbers,rebate,paymoney)
4.3存储过程与触发器的设计
为了提高该系统的运行环境,后台有关数据的操作使用了存储过程和触发器。
4.3.1存储过程
创建存储过程代码
createorreplaceprocedurecomplainUpdate(
P_ComplainIdincomplain.ComplainId%type,
P_houseidincomplain.houseid%type,
P_ComplainIteminplainitem%type,
P_ComplainDateinplaindate%type,
P_Dealwayincomplain.dealway%type,
P_Dealempincomplain.dealemp%type,
P_Dealdateincomplain.dealdate%type
)
as
begin
deletefromComplainwhereComplain.ComplainId=P_ComplainId;
insertintocomplain
values(P_ComplainId,P_houseid,P_ComplainItem,P_ComplainDate,P_Dealway,P_Dealemp,P_Dealdate);
endcomplainUpdate;
4.3.2触发器
创建触发器代码
CREATEORREPLACETRIGGERorderlist
BEFOREINSERTONorderlistFOREACHROW
declarenext_checkup_nonumber(20);
begin
selectorderlist1.nextvalintonext_checkup_no
fromdual;
:
new.orderlist:
=next_checkup_no;
end;
5系统实现
5.1数据库连接
本系统选用的数据库连接方式是ADO控件,因此我们选用VC中的MFC机制,下面几句语言将程序和数据库初始连接:
voidCBbbApp:
IniAdo()
{
try
{
CStringtemp;
charfilepath[MAX_PATH];
GetModuleFileName(NULL,filepath,MAX_PATH);
temp=theApp.ExtractFilePath(filepath);
//获取可执行文件的路径
//m_pCon.CreateInstance("
ADODB.Connection"
);
CStringstrAdoConn;
chartemp1[100];
GetPrivateProfileString("
DatabaseConfig"
"
Server"
"
temp1,100,temp+"
login.ini"
strserver=(TCHAR*)temp1;
GetPrivateProfileString("
Database"
ini"
strdbName=temp1;
User"
strUser=temp1;
PWD"
;
strPassword=temp1;
//ADO连接
strAdoConn.Format("
Provider=OraOLEDB.Oracle.1;
Password=wp;
UserID=wp;
DataSource=ORCL"
m_pCon.CreateInstance(_uuidof(Connection));
m_pCon->
ConnectionString=(_bstr_t)strAdoConn;
Open("
NULL);
m_pCom.CreateInstance("
ADODB.Command"
m_pRs.CreateInstance(_uuidof(Recordset));
m_pRs1.CreateInstance(_uuidof(Recordset));
//ADOFLAG=TRUE;
}
catch(_com_error)
//ADOFLAG=FALSE;
Flag=FALSE;
MessageBox(0,"
请检查系统配置信息"
"
数据库连接失败"
MB_OK);
return;
catch(...)
{
AfxMessageBox("
SYSError"
return;
}
5.2创建工程项目
1.图书管理系统采用对话框结构进行设计,系统的程序框架设计步骤如下:
(1)启动VisualC++6.0,单击“File”/“New”菜单项,打开“New”窗口,如图5-1所示。
(2)在“New”窗口左方的列表视图中选择“MFCAppWizard(exe)”选项,在“Projectname”编辑框中输入工程名称,在“Location”编辑框中设置工程保存的路径。
(3)单击“OK”按钮进入“MFCAppwizard-Step1”窗口。
(4)选择“Dialogbased”选项,连续单击“Next”按钮进入“mfcappwizard-step4of4”窗口。
(5)单击“Finish”按钮,完成程序框架的设计。
图5-1创建项目页面
接下来可以在资源编辑器中设计主界面,其布局如图5-2所示:
图5-2主界面
5.3程序登录系统设计
1.设计步骤
(1)新建一个窗口,类为“CDlgLogin”,在CDlgLogin类中添加“OnOK”方法,可以不编写任何代码,目的是防止按Enter键调用父类的OnOK方法关闭窗口。
(2)在窗口中删除“OK”饿“Cancel”按钮,然后添加2编辑框资源、2个静态文本资源、2个按钮资源、2个图像资源。
(3)设置的主要资源属性如下表所示。
表5.1资源属性表
对象名称
资源符号
资源变量
资源属性
Picture
IDC_STATIC
类型属性:
Bitmap
EditBox
IDC_EDIT2
m_password
风格属性:
Password
Doalog
IDO_LOGIN
标题属性:
系统登录
2.程序相关代码
处理“登录”按钮的命令代码,验证用户身份是否合法的设计思路为:
首先判断用户名和密码是否为空,如果为空,则提示用户输入用户名和密码,否则以用户名和密码为条件,从数据库中查询数据,有数据返回,证明用户合法;
反之,身份不合法。
voidCDlgLogin:
OnButton1()
{CStringc_user,c_password;
m_user.GetWindowText(c_user);
m_password.GetWindowText(c_password);
if(c_user.IsEmpty()||c_password.IsEmpty())
{
MessageBox("
用户名称或密码不能为空"
用户登录信息"
return;
CStringsql;
sql.Format("
select*fromtb_operatorwherename='
%s'
andpassword='
c_user,c_password);
m_pRs->
raw_Close();
m_pRs->
Open((_variant_t)
sql,m_pCon.GetInterfacePtr(),adOpenKeyset,
adLockOptimistic,adCmdText);
if(m_pRs->
RecordCount>
0)
Flag=true;
user=m_pRs->
GetCollect("
name"
).bstrVal;
password=m_pRs->
password"
//PostMessage(WM_CLOSE,0,0);
EndDialog(0);
else
user="
password="
MessageBox("
用户名或密码不正确."
提示"
64);
5.4图书信息管理设计
1.概述
图书信息管理主要实现图书信息的添加、修改和删除功能。
为了方便用户操作,程序利用表格显示所有图书信息。
用户在添加一种图书信息后,该图书将显示在表格中,如果用户想要修改图书信息,可以在表格中双击想要修改的图书信息,该信息会显示在上方的编辑框和组合框中,在用户修改后,单击“修改”按钮,即完成修改;
如果用户想要删除图书信息,可以在表格中选中想要删除的数据,单击“删除”按钮,系统提示是否删除,单击“是”按钮,即可删除图书信息。
图书信息管理窗口,如下图5-3所示
图5-3图书信息管理窗口
2.设计步骤
(1)建一个窗体,其类名为“CDlgBookInfo1”,删除窗口中的“OK”和“Cancel按钮。
(2)对话框属性窗口中选择“Styles”选项卡,将“Titlebar”选项置于非选中状态,取消窗口的标题栏。
(3)向窗口中添加8个静态文本资源、7个编辑框资源、1个组合框资源、1个列表视图资源、1个群组框资源。
(4)设置各主要资源属性如下表所示:
表5.2资源属性表
ComBox
IDO_COMBO1
storagename
DropList
Dialog
IDO_BOOK_INFO1
Child
ListView
IDO_LIST1
m_list
视图属性:
Report
3.程序相关代码
函数AddBookInfo()用于执行图书信息添加操作。
在添加信息时,首先调用InfoIsNull()确定图书信息是否为空,如果为空,进行提示,并退出操作,然后调用BarcodeIsExist()函数判断图书的条形码是否存在,如果存在,进行提示,并退出操作,最后利用SQl语句将数据保存到数据表中。
voidCDlgBookInfo1:
AddBookInfo()
if(InfoIsNull())
MessageBox("
图书信息不能为空."
MB_OK|MB_ICONINFORMATION);
return;
CStringc_barcode;
m_barcode.GetWindowText(c_barcode);
if(BarcodeIsExist((_bstr_t)c_barcode))
条形码已经存在."
CStringc_name,c_shortname,c_author,c_press,c_price;
CStringc_memo,c_kinds;
m_bookname.GetWindowText(c_name);
m_shortcode.GetWindowText(c_shortname);
m_author.GetWindowText(c_author);
m_public.GetWindowText(c_press);
m_price.GetWindowText(c_price);
m_memo.GetWindowText(c_memo);
m_kinds.GetWindowText(c_kinds);
Insertintotb_bookinfovalues('
'
'
%f,'
)"
c_name,c_shortname,c_barcode,c_author,c_press,
atof(c_price),c_memo,c_kinds);
Try
Open((_variant_t)sql,m_pCon.GetInterfacePtr(),
adOpenKeyset,adLockOptimistic,adCmdText);
操作成功."
ClearInterface();
LoadBookInfo();
catch(...)
操作失败."
MB_OK|MB_ICONERROR);
函数DeleteBookInfo()用于删除当前图书信息。
该方法首先判断用户是否在表格中选中了数据,然后弹出提示窗口,让用户进行确认,最近执行删除操作。
DeleteBookInfo()
if(m_list.GetSelectionMark()!
=-1)
if(MessageBox("
确实要删除数据吗?
MB_YESNO|MB_ICONINFORMATION)==IDYES)
inti=m_list.GetSelectionMark();
CStringc_barcode=m_list.GetItemText(i,2);
deletetb_bookinfowherebarcode='
c_barcode);
try
ClearInterface();
LoadBookInfo();
选择欲删除的信息."
本模块还可