《数 据 库 应 用 基 础》
作 品 设 计 报 告
设 计 作 品 题 目: 综合检测技术实验平台
自动化测量系统
学 院 名 称: 电子与信息
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
学院
专 业: 电气工程及其自动化
班 级: 082班
姓 名: 杨仲豪 学 号 0840*******
指 导 教 师: 应宏微 职 称 讲师
完成日期: 2011 年 6 月 10 日
1 引言
随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,企业要生存要发展,要高效率地把企业活动有机地组织起来,就必须加强企业管理,即加强对企业内部的各种资源(人、财、物等)的有效管理,建立与自身特点相适应的管理信息系统。
本文介绍了在PowerBuider环境下采用“自上而下地总体
规划
污水管网监理规划下载职业规划大学生职业规划个人职业规划职业规划论文
,自下而上地应用开发”的策略开发一个管理信息系统的过程。文章详细介绍了图书管理信息系统的系统分析部分,包括系统、借阅和查询、系统维护和帮助,分别细分重新登录、断开连接和退出系统,借还图书查询窗口、图书查询窗口、会员查询窗口、借书窗口和还书窗口,录入/注销图书、修改密码、注册/注销会员卡、打印会员卡和注册用户,关于等;系统
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
部分主要介绍了系统功能设计和数据库设计;系统实现部分列出了几个主要的程序框图,并附带了一些主要的窗口和程序。特点:本系统界面友好,操作简单,比较实用。
2 作品设计原理
2.1 .1数据库设计
(1)数据库设计有几个范式,一般我们要做到的是第三范式,即数据表中没有冗余字段以及同一个表中的字段没有函数依赖关系,冗余字段即在一个表中已经保存过的信息,在另一个表中就不应该存在,如果需要的话,可以通过表间的关联来得到,函数依赖性就是一个表中的字段间不应该有计算关系。数据库初期设计时一定要谨慎,把所有可能的情况都考虑进去,即使当时没有用到,也要将它留在数据库中作为备用字段以便将来扩充。
图书借阅管理系统数据库中各个表的设计结果如下面几个
表格
关于规范使用各类表格的通知入职表格免费下载关于主播时间做一个表格详细英语字母大小写表格下载简历表格模板下载
所示。每个表格表示为数据库中的一个表。
表1 图书表boot_t
名称
数据类型
大小
空
b_id
varchar
20
否
b_name
nvarchar
60
是
auther
varchar
20
是
publish_company
nvarchar
60
是
publish_day
datetime
8
是
isbn
varchar
60
是
price
numeric
9(12,2)
是
表2 借还图书记录表jiehuant
名称
数据类型
大小
空
m_id
varchar
20
否
b_id
varchar
20
否
jiedate
datetime
8
是
huandate
datetime
8
是
remark
nvarchar
60
是
表3 会员表membert
名称
数据类型
大小
空
m_id
varchar
20
否
m_name
varchar
60
是
sex
varchar
2
是
birthday
datetime
8
是
phone
varchar
60
是
address
varchar
50
是
lock
varchar
2
是
表4 用户表user_t
名称
数据类型
大小
空
user_id
varchar
50
否
user_name
varchar
50
是
password
varchar
50
是
admin
varchar
50
是
2.1.2 建立表
打开企业管理器,建立名为booksystem的数据库
打开查询分析器,用sql语句建立表。图书表包括书名、图书编号、作者、出版社、出版日期、isbn、价格。
use booksystem
go
create table bookt
(b_id varchar (20) not null unique,
b_name nvarchar (60) unique,
auther varchar (20) unique,
publish_company nvarchar(60)unique,
publish_day datetime(8) unique,
isbn varchar(60) unique,
price numeric(9(12,2)) unique,
);
go
create table jiehuant
(m_id varchar (20) not null unique,
b_id varchar (20) not null unique,
jiedate datetime(8) unique,
huandate datetime(8) unique,
remark nvarchar (60) unique,
)
go
create table membert
(m_id varchar (20) not null unique,
m_name varchar (60) unique,
sex int, varchar (2) unique,
birthday datetime(8)unique,
phone varchar (60) unique,
address varchar (50) unique,
lock varchar (2) unique,
)
go;
create table 用户
(user_id varchar (50) not null unique,
user_name varchar (50) unique,
password varchar (50) unique,
admin varchar (50) unique, );
go
建立表后在与图书表中填入图书基本信息,借还记录表中写入会员借阅情况,会员表中写入会员资料,用户表中添加可以登录界面的用户信息,其中包括管理员和会员两个权限。
管理员登入后所显示的
会员登入后所显示的
2.2 PB界面设计
2.2.1在 PB界面中建立一个名为wage的workplace,建立其与数据库的联系并连接服务器
图1
图2
在PB的“wage”application的open中
// Profile wage
sqlca.DBMS = "MSS Microsoft SQL Server"
sqlca.Database = "wage"
sqlca.ServerName = "PC-201009021624"
SQLCA.LogId = "sa"
SQLCA.AutoCommit = False
SQLCA.DBParm = ""
connect;
open(w_login)
2.2.2 PB系统功能设计
在系统功能分析的基础上,考虑PowerBuilder程序编制的特点,得到如图所示的系统功能模块图:
图3系统功能
系统功能分析:
主界面:系统、借阅和查询、系统维护和帮助
系统:重新登录、断开连接和退出系统
借阅和查询:借还图书查询窗口、图书查询窗口、会员查询窗口、借书窗口和还书窗口
系统维护:录入/注销图书、修改密码、注册/注销会员卡、打印会员卡和注册用户
帮助:关于
3作品使用说明书
3.1首先附加数据库SQL Server2000
(1) 将文件夹中的扩展名为booksystem_Data.MDF和booksystem_Log.LDF的两个文件拷贝到SQL Server安装路径下Data文件中。
(2) 打开SQL Server2000 中“企业管理器”,然后展开你开本地服务器,在“数据库”数据项上单击鼠标右键,在弹出的快捷菜单中选择“所有任务”/“附加数据库”菜单项中。
(3) 将弹出“附加数据库”对话框中,在该对话框中单击按钮,选择所要附加数据库的booksystem_Data.MDF文件,单击【确定】按钮,即可完成附加数据库的附加操作。
3.2系统介绍
本系统属于小型的班级管理系统,可以有效地对班级成员进行管理,本系统应达到以下目标:
界面美观大方,信息查询灵活,方便,数据存储安全可靠。
实现对录入/注销图书,修改密码,注册/注销会员卡,打印会员卡,会员、图书和会员借阅情况查询,借书,还书等操作。本系统还具有权限设置,会员可以操作系统、借阅和查询、帮助,而管理员还可使用系统维护。
3.3操作流程
(2)登入界面
图4
Login中的‘登入’按钮的clicked中
string user ,pass ,temp1,temp2,temp3
user = sle_1.text
if len(user) = 0 or isnull(user) = true then
messagebox("","用户名不能为空!")
return
end if
select user_id into :temp1 from user_t where user_id = :user
using sqlca;
if sqlca.sqlcode <> 0 then
messagebox("","用户名不存在!")
return
end if
pass = sle_2.text
select password into :temp2 from user_t where user_id = :user
using sqlca;
if pass <> temp2 then
messagebox("","口令错误!")
return
end if
open(w_mian)
select admin into :temp3 from user_t where user_id = :user using sqlca;
if temp3 = 'admin' then
main.m_系统维护.enabled=true
end if
close(parent)
(3) 借阅人基本信息登记/修改
图6
说明:录入借阅人基本信息后存放在借阅人信息库中。
lock_or_unlock中‘注册’按钮的clicked中
int n//定义一个整型变量
n=dw_1.rowcount()//将数据表总行数赋与n
dw_1.insertrow(0)//插入记录
dw_1.scrolltorow(n+1)//转到最后一行记录
‘注销’ 按钮的clicked中
dw_1.deleterow(0)//删除记录
更新
if dw_1.update()=1 then
commit;
end if
‘第一个’ 按钮的clicked中
dw_1.scrolltorow(1)//转到第一条记录
上一个
int m
m=dw_1.getrow()//取得当前记录号
if m>1 then
m=m -1
dw_1.scrolltorow(m)//转到上一条记录
else
messagebox("提示","这是第一个记录!")//弹出提示框
end if
‘下一个’ 按钮的clicked中
int m,n
n=dw_1.rowcount()//取得总行数
m=dw_1.getrow()//取得当前行号
if m
0 then
string s_id
s_id = this.getitemstring(row,"m_id")
dw_2.retrieve(s_id)
end if
(7)图书借阅
图8
说明:输入借阅人编号,通过检索借阅人信息库,核实借阅人身份。输入图书编号,通过
检索图书信息库,核实图书信息。进行图书借出处理后,在图书借阅库中进行登记,
并将借出图书的在借标志设为“是”。
(8)图书归还
图9
huanshu中modified中sle_1
string ls_bookid,ls_title,ls_memberid,ls_membername
date ld_date1,ld_date2
int li_days
dec ld_fine,ld_countfine
ld_date2=today()//获得当前日期
ls_bookid=trim(this.text)//获得"图书编号"
//根据"图书编号"查询出"借阅日期
SELECT jiedate INTO :ld_date1 FROM jiehuant WHERE b_id=:ls_bookid;
)
//查询"图书名称"
SELECT b_name INTO :ls_title FROM bookt WHERE b_id=:ls_bookid;
//查询"借阅人号"、"借阅人姓名"
SELECT m_id,m_name
INTO :ls_memberid,:ls_membername FROM membert
WHERE m_id in
(SELECT m_id FROM jiehuant WHERE b_id=:ls_bookid);
if sqlca.sqlcode<>0 then
messagebox("系统提示","没有借阅信息!")
sle_1.setfocus()
return
else
sle_2.text=ls_title
sle_3.text=ls_memberid
sle_4.text=ls_membername
end if
图中的"还书"按钮的clicked中
string ls_bookid,ls_bookonloan
date ldt_nowdate
ldt_nowdate=today()//获得"当前日期"
ls_bookid=sle_1.text
if ls_bookid="" or isnull(ls_bookid) then
messagebox("系统提示","请输入图书编号!")
sle_1.setfocus()
return
else
select remark into :ls_bookonloan
from jiehuant where b_id=:ls_bookid;
if ls_bookonloan="已还" then
messagebox("系统提示","本书已归还!")
else
UPDATE jiehuant set huandate=:ldt_nowdate
WHERE b_id=:ls_bookid;
commit;
update jiehuant set remark='已还' where b_id=:ls_bookid;
commit;
end if
end if
sle_1.setfocus()
sle_1.text=""
sle_2.text=""
sle_3.text=""
sle_4.text=""
jieshu中sle_1的modified中
string ls_memberid,ls_membername
ls_memberid=trim(this.text)
//根据"借阅人编号"查询出"借阅人姓名"
select m_name into :ls_membername from membert where m_id=:ls_memberid;
//判断是否有该"借阅人"
if sqlca.sqlcode<>0 then
messagebox("系统提示","没有此借阅人信息!")
sle_1.setfocus()//"借阅人编号"输入框获得焦点
return
else
sle_2.setfocus()//"图书编号"输入框获得焦点
sle_3.text=ls_membername//显示""借阅人姓名
end if
中sle_2的modified中
string ls_bookid,ls_title
ls_bookid=trim(this.text)
select b_name into :ls_title from bookt where b_id=:ls_bookid;
if sqlca.sqlcode<>0 then
messagebox("系统提示","没有此图书信息!")
sle_2.setfocus()
return
else
sle_4.text=ls_title
end if
图中‘借书’按钮的clicked中
string ls_bookid,ls_memberid,ls_remark
date ldt_nowdate
ldt_nowdate=today()//获得"当前日期"
ls_bookid=trim(sle_2.text)//获得"借阅人号"
ls_memberid=trim(sle_1.text)//获得"图书编号"
//强制输入"借阅人号"与"图书编号"
if ls_memberid="" or isnull(ls_memberid) then
messagebox("系统提示","请输入借阅人编号!")
sle_1.setfocus()
return
end if
if ls_bookid="" or isnull(ls_bookid) then
messagebox("系统提示","请输入图书编号!")
sle_2.setfocus()
return
end if
//根据"图书编号"查询图书是否借出
SELECT remark INTO:ls_remark FROM jiehuant WHERE b_id=:ls_bookid;
if ls_remark="未还" then
messagebox("系统提示","本书已经外借!")
sle_2.setfocus()
return
else
//添加图书借阅记录
INSERT INTO jiehuant (b_id,m_id,jiedate)
VALUES (:ls_bookid,:ls_memberid,:ldt_nowdate);
commit;
//设置该图书为"借出"状态
UPDATE jiehuant set remark='未还' WHERE b_id=:ls_bookid;
commit;
end if
//"借阅人号"得到焦点,所有输入框清空
sle_1.setfocus()
sle_2.text=""sle_4.text=""sle_1.text=""sle_3.text=""
(9)借还图书记录情况
图10
与会员查询相似。
(10)密码修改
图11
password中clicked中
string user_id
int ret
select user_id into :user_id from user_t where password=:sle_1.text
using sqlca;
if sqlca.sqlcode=0 then
if sle_2.text=sle_3.text then
update user_t set password=:sle_2.text where user_id=:user_id;
commit using sqlca;
close(parent)
return
else
ret=messagebox("提示","新密码有误!",question!,yesno!,2)
if ret = 1 then
sle_1.text="" sle_2.text="" sle_3.text=""
else
close(parent)
return
end if
end if
else
ret=messagebox("提示","旧密码有误!",question!,yesno!,2)
if ret = 1 then
sle_1.text="" sle_2.text=""sle_3.text=""
else
close(parent)
return
end if
end if
(11)注册用户
图12
注册用户的确定clicked中
string ls_id,ls_user,ls_password,ls_admin,ls_temp,ls_temp2
ls_id=sle_1.text
ls_user=sle_2.text
ls_password=sle_3.text
ls_admin=ddlb_1.text
if sle_1.text=''or sle_2.text=''or sle_3.text=''or ddlb_1.text=''then
messagebox("提示!","用户编号,用户名,口令或角色不能为空!")
return
end if
if ls_admin='member' then
insert into user_t
values(:ls_id,:ls_user,:ls_password,:ls_admin);
messagebox("提示!","创建新用户成功!")
close(parent)
elseif ls_admin='admin'then
insert into user_t
values(:ls_id,:ls_user,:ls_password,:ls_admin);
messagebox("提示!","创建新管理用户成功!")
close(parent)
else
messagebox("提示!","此用户已存在!")
end if
(12)关于
图13
说明:关于图书管理系统的信息。
4总结
在对管理信息系统的开发过程有了基本了解后,本人使用PowerBuilder 9.0开发了这个“图书管理系统”。系统基本实现了内部图书借阅管理的系统化、
规范
编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载
化和自动化。例如对图书进行登记,对旧书进行销毁。添加借阅人以及注销借阅人。图书的借阅、归还。可以按作者、出版社、出版时间等信息对图书进行查询,并能反映出图书的借阅情况。还能够对使用该管理系统的用户进行管理,按照不同的工作职能提供不同的功能授权。
通过对该系统的设计、开发和调试,一方面让我了解了数据库的使用方法,另一方面,让我初步掌握了PowerBuilder开发工具的使用方法,熟悉了窗口、菜单以及一些可视化控件的使用方法。通过使用还了解到窗口对象、数据窗口对象、各类控件的属性与方法。同时,在制作过程中遇到了不少问题和困难,通过查阅书籍及互连网得到了不小的帮助。
因为条件的限制,该管理系统还存在不少的缺点和漏洞,只能尽量改正与完善。不足之处,还请多多指教。