课程设计说明书参考图书管理系统.docx
《课程设计说明书参考图书管理系统.docx》由会员分享,可在线阅读,更多相关《课程设计说明书参考图书管理系统.docx(22页珍藏版)》请在冰豆网上搜索。
课程设计说明书参考图书管理系统
********
课程设计说明书
课程名称程序设计方法课程设计
题目图书管理系统
院系**************
班级***********
学生姓名XXX
指导教师********
日期******************
课程设计任务书
(指导教师填写)
课程设计名称程序设计方法课程设计学生姓名XXX专业班级********
设计题目图书管理系统
一、课程设计目的
该课程设计是信息管理本科集中实践性环节之一,是学习完《数据库基础与应用》和《程序设计方法》课程后进行的一次全面的综合练习。
其目的是通过本课程设计使学生对具体问题应用《程序设计方法》课程中所学的方法与技术,进行需求分析及软件设计的过程,不仅对程序设计方法课程中的所有知识点进行一个全面的复习巩固,更重要的是增强学生解决实际问题的能力。
二、设计内容、技术条件和要求
(1)本环节要求学生根据程序设计方法整个课程的所学内容,自己独立设计完成一个比较复杂的小型管理系统。
(2)所设计的小型管理系统要求功能比较完善,应包含输入输出、查询、插入、删除、打印等基本功能
(2)程序内容自己灵活设计,包括规划自己的数据库和设计程序功能和界面设计。
(3)数据库中不能少于两个表。
(5)程序应功能完善,界面友好,容错性好,操作方便。
三、时间进度安排
系统分析与规划半周
系统设计与调试一周
撰写课程设计说明书半周
四、主要参考文献
郑阿奇,PowerBuilder实用教程(第二版),电子工业出版社
董军,王玉,康祥顺,PowerBuilder案例开发集锦,电子工业出版社
张长富,PowerBuilder9.0实例教程,电子科技大学出版社
指导教师签字:
2009年12月23日
图书管理系统
一、系统设计:
1、系统功能分析:
本系统的功能分析是基于系统开发的总体任务基础上完成的,完成的主要功能有:
基本信息查询、图书入库、图书出库、图书外借、图书归还等功能
2、系统功能模块设计:
对上述各项功能进行集中、分块,按照结构化程序设计的要求,得到如下的功能模块图(用绘图工具MicrosoftVisio绘制所得):
二、数据库设计:
1、数据库概念结构设计
设计规划出的实体有:
书籍信息实体、读者信息实体
书籍信息实体的E-R图如图示:
读者信息实体的E-R图如图示:
2、创建数据库:
(1)、单击工具栏上的Database图标按钮;
(2)、在弹出的Database画板中,打开Object子窗口,展开“ODBODBC”项下的Utilities目录。
(3)、双击Utilities目录下的“CreateASADataBase”对话框,如图示,弹出“CreateServerAnyWhereDatabase”对话框。
(4)、单击“Broswe...”按钮,弹出“CreateDtabase”对话框,选择合适的路径,返回对话框。
(5)、使用默认的用户UserID项“dba”和默认的口令Password项“sql”,单击ok按钮,就可以创建一个ASA数据库books,同时,系统自动的为数据库配置了ODBC和DBProfile,并且已经到新建的数据库。
(可以看到数据库名books的图标上有一个绿色的小勾)。
3、在数据库中创建表:
(1)、展开数据库目录,选中“Tables”,单击鼠标右键,在弹出的选单中单击“NewTables...”,就会出现表的设计子窗口。
(2)、在表的设计子窗口中,分别输入每个字段的名称,选择合适的数据类型,数据宽度,是否允许为空等。
最后单击保存按钮,键入表的名字。
以此步骤建立了三个表,分别是books、loan、reader
它们之间关系如下图所示:
Books结构如下图所示:
Loan表结构如下:
Reader表结构如下:
4、往表里添加数据:
Book
三、应用程序的创建:
单击菜单File/New项,在弹出式对话框中选取Workspace标签下的Workspace,填入路径保存;然后单击菜单File/New项,选择Target标签下的Application,建立books的应用。
在该应用的open事件中添加如下脚本,用于链接数据库,打开运行主窗口。
//Profilebooks
SQLCA.DBMS="ODBC"
SQLCA.AutoCommit=False
SQLCA.DBParm="ConnectString='DSN=books;UID=;PWD='"
//SQLCA.DBMS=profilestring("hh.ini","Database","DBMS","")
//SQLCA.DataBase=profilestring("hh.ini","Database","DataBase","")
//SQLCA.LogID=profilestring("hh.ini","Database","LogID","")
//SQLCA.LogPass=profilestring("hh.ini","Database","LogPassword","")
//SQLCA.ServerName=profilestring("hh.ini","Database","ServerName","")
//SQLCA.UserID=profilestring("hh.ini","Database","UserID","")
//SQLCA.DBPass=profilestring("hh.ini","Database","DatabasePassword","")
//SQLCA.Lock=profilestring("hh.ini","Database","Lock","")
//SQLCA.DbParm=profilestring("hh.ini","Database","DbParm","")
//
connect;
ifsqlca.sqlcode=0then
messagebox("温馨提示","借书系统连接成功!
")
open(w_main)
else
messagebox("温馨提示","借书系统连接失败!
")
return
endif
open(w_main)
四、应用程序主窗口的创建:
1、菜单的设计
在菜单画面中设计的应用程序主窗口中创建菜单m_book。
该菜单的具体结构如下图所示:
“图书查询”脚本语言:
messagebox("温馨提示","欢迎进入图书查询系统")
open(w_chaxun)
“图书借阅”脚本语言:
messagebox("温馨提示","欢迎进入图书借阅系统")
open(w_jieyue)
“还书处理”脚本语言:
messagebox("温馨提示","欢迎进入图书归还系统")
open(w_huanshu)
“新书入库”脚本语言:
messagebox("温馨提示","欢迎进入新书入库系统")
open(w_ruku)
“旧书销毁”脚本语言:
messagebox("温馨提示","欢迎进入旧书注销系统")
open(w_zhuxiao)
“退出”脚本语言:
close(parentwindow)
“
2、登录窗口的创建:
在该窗口的open事件中添加脚本:
//ProfileBooks01
SQLCA.DBMS="ODBC"
SQLCA.AutoCommit=False
SQLCA.DBParm="Connectstring='DSN=books_01'"
connect;
dw_1.settransobject(sqlca)
dw_1.retrieve()
“确定”按钮的脚本语言:
stringitemp
stringstemp1,stemp2
itemp=trim(sle_1.text)
stemp1=trim(sle_2.text)
//DECLAREstemp2CURSORFOR
SELECTbno
into:
stemp2
FROMbooks
wheretrim(auther)=:
itempandtrim(bno)=:
stemp1;
//SELECT"books"."bno"
ifsqlca.sqlcode=100then
messagebox("系统提示","输入错误请重新输入",exclamation!
)
return
endif
ifsqlca.sqlcode=-1then
messagebox("系统提示","系统打开数据库时出现错误",exclamation!
)
endif
open(w_main)
close(w_login)
“取消”按钮的脚本语言:
close(parent)
3、应用程序主窗口的建立:
系统应用程序的功能都是在主窗口w_main及其下众多的窗口中完成的。
本系统的界面如下图所示。
主窗口的菜单是m_book。
在该窗口中添加了两个静态文本框,分别键入“欢迎进入图书馆系统”、“当前系统时间”,并调整大小及字体。
添加一个单行编辑框
在该窗口的open事件中添加脚本:
st_3.text=string(year(today()))+'年'+string(month(today()))+'月'+string(day(today()))+'日'+string(hour(now()))+'点'+string(minute(now()))+'分'+string(second(now()))+'秒'
timer
(1)
4、数据窗口的创建:
本系统建有2个数据窗口,分别是dw_auther,dw_books1.
dw_auther的创建:
选择Freedom风格,QuickSelect数据源,表books的auther列,并改名为作者。
如图示:
dw_books1的创建:
选择Freedom风格,QuickSelect数据源,表books的所有列,并分别改名为“书号”、“书名”、“作者”、“价格”、“借书帐号”,如图示:
dw_duzhe的创建:
选择Grid风格,QuickSelect数据源,表reader的所有列,并改名为读者编号、读者名称。
dw_jieyue的创建:
选择Grid风格,QuickSelect数据源,表loan的所有列,并改名为书号、读者号。
5、各个子窗口的创建及调试:
1)、w_chaxun窗口的创建:
如图示:
在该窗口中添加两个命令按钮,分别是“查询”、“退出”,一个静态文本编辑框,键入“温馨提示当前系统时间”,并以dw_books1为数据窗口建立数据窗口控件等。
在该窗口的open事件中添加脚本语言:
//ProfileBooks01
SQLCA.DBMS="ODBC"
SQLCA.AutoCommit=False
SQLCA.DBParm="Connectstring='DSN=books_01'"
connect;
dw_1.settransobject(sqlca)
dw_1.retrieve()
st_4.text=string(hour(now()))+':
'+string(minute(now()))+':
'+string(second(now()))+''+string(year(today()))+'/'+string(month(today()))+'/'+string(day(today()))
timer
(1)
“查询”按钮的脚本语言:
stringls_str,ls_con
ls_str=trim(sle_1.text)
inti
//按书号查询
ifddlb_1.text="按书号查询"then
iflen(ls_str)=0orisnull(ls_str)then
messagebox("","没有输入书号")
return
else
ls_con="bnolike'%"+ls_str+"%'"
endif
dw_1.setfilter("")
dw_1.filter()
dw_1.setfilter(ls_con)
dw_1.filter()
i=dw_1.retrieve()
ifi<1then
messagebox("","sorry,没有找到您所需的书")
endif
endif
//按书名查询
ifddlb_1.text="按书名查询"then
iflen(ls_str)=0orisnull(ls_str)then
messagebox("","没有输入书名")
return
else
ls_con="bnamelike'%"+ls_str+"%'"
endif
dw_1.setfilter("")
dw_1.filter()
dw_1.setfilter(ls_con)
dw_1.filter()
i=dw_1.retrieve()
ifi<1then
messagebox("","sorry,没有找到您所需的书")
endif
endif
//按作者查询
ifddlb_1.text="按作者查询"then
iflen(ls_str)=0orisnull(ls_str)then
messagebox("","没有输入作者")
return
else
ls_con="autherlike'%"+ls_str+"%'"
endif
dw_1.setfilter("")
dw_1.filter()
dw_1.setfilter(ls_con)
dw_1.filter()
i=dw_1.retrieve()
ifi<1then
messagebox("","sorry,没有找到您所需的书")
endif
endif
“退出”按钮的脚本语言:
close(parent)
2)、w_huanshu窗口的创建:
如图示:
在该窗口中添加两个命令按钮,分别是“点击还书”、“退出”,一个静态文本编辑框,键入“温馨提示当前系统时间”,并以dw_books1为数据窗口建立数据窗口控件等。
在该窗口的open事件中添加脚本语言:
//ProfileBooks01
SQLCA.DBMS="ODBC"
SQLCA.AutoCommit=False
SQLCA.DBParm="Connectstring='DSN=books_01'"
connect;
dw_1.settransobject(sqlca)
dw_1.retrieve()
st_3.text=string(hour(now()))+':
'+string(minute(now()))+':
'+string(second(now()))+''+string(year(today()))+'/'+string(month(today()))+'/'+string(day(today()))
timer
(1)
“点击还书”的按钮的脚本语言:
stringl_bno,l_debit
longrow
intnet
net=messagebox("温馨提示","您确定要还吗?
",question!
yesno!
2)
ifnet=1then
l_bno=sle_1.text
dw_1.setfilter("bno='"+l_bno+"'")
dw_1.filter()
row=dw_1.getrow()
//判断书是否借出、是否有该书
ifrow>=1androw<=dw_1.rowcount()then
l_debit=dw_1.getitemstring(row,"debit")
ifisnull(l_debit)then
messagebox("错误","此书没有借出")
endif
ifnotisnull(l_debit)then
//messagebox("错误","此书已经借出")
dw_1.object.debit[row]=""
dw_1.update()
messagebox("温馨提示","还书成功")
setnull(l_debit)
endif
else
messagebox("错误","查无此书")
endif
endif
“退出”按钮的脚本语言:
Close(parent)
3)、w_jieyue窗口的创建:
如图示:
“借书”的脚本语言是:
stringbno,rno
bno=sle_1.text
rno=sle_2.text
insertintoloan
values(:
bno,:
rno);
ifsqlca.sqlcode=0then
messagebox("提示","借书成功")
endif
“退出”的脚本语言是:
Close(parent)
4、w_duzhe窗口的创建:
如图示:
Open事件的脚本;
dw_1.settransobject(sqlca)
dw_1.retrieve()
“添加”按钮的脚本:
dw_1.insertrow(0)
dw_1.update()
“删除”按钮的脚本:
dw_1.deleterow(dw_1.getrow())
dw_1.update()
“打印”按钮的脚本:
dw_1.print()
“退出”按钮的脚本:
close(parent)
5)、登录窗口w_login的创建:
如图示;
Open事件的脚本:
//ProfileBooks01
SQLCA.DBMS="ODBC"
SQLCA.AutoCommit=False
SQLCA.DBParm="Connectstring='DSN=books_01'"
connect;
dw_1.settransobject(sqlca)
dw_1.retrieve()
“确定”按钮的脚本:
stringitemp
stringstemp1,stemp2
itemp=trim(sle_1.text)
stemp1=trim(sle_2.text)
//DECLAREstemp2CURSORFOR
SELECTbno
into:
stemp2
FROMbooks
wheretrim(auther)=:
itempandtrim(bno)=:
stemp1;
//SELECT"books"."bno"
ifsqlca.sqlcode=100then
messagebox("系统提示","输入错误请重新输入",exclamation!
)
return
endif
ifsqlca.sqlcode=-1then
messagebox("系统提示","系统打开数据库时出现错误",exclamation!
)
endif
open(w_main)
close(w_login)
“取消”按钮的脚本:
Close(parent)
6、编辑运行:
进入系统主窗口:
选择要进行的操作,如过你要选择日常业务,点击进入图书查询,如图示:
如要图书借阅,就点击图书借阅的图标,进入借阅界面如图示:
如果要还书,就点击还书的图标按钮,进入还书界面,如图示:
如果要进行读者管理,点击进入界面: