《最新powerbuilder图书管理系统设计.doc》由会员分享,可在线阅读,更多相关《最新powerbuilder图书管理系统设计.doc(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-datepowerbuilder图书管理系统设计数 据 库 应 用 基 础数 据 库 应 用 基 础作 品 设 计 报 告设 计 作 品 题 目: 综合检测技术实验平台 自动化测量系统 学 院 名 称: 电子与信息工程学院 专 业: 电气工程及其自动化 班 级: 082班 姓 名: 杨仲豪 学 号 08401170214指 导 教 师: 应宏微 职 称 讲师 完成日期: 20
2、11 年 6 月 10 日 -1 引言随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,企业要生存要发展,要高效率地把企业活动有机地组织起来,就必须加强企业管理,即加强对企业内部的各种资源(人、财、物等)的有效管理,建立与自身特点相适应的管理信息系统。 本文介绍了在PowerBuider环境下采用“自上而下地总体规划,自下而上地应用开发”的策略开发一个管理信息系统的过程。文章详细介绍了图书管理信息系统的系统分析部分,包括系统、借阅和查询、系统维护和帮助,分别细分重新登录、断开连接和退出系统,借还图书查询窗口、图书查询窗口、会
3、员查询窗口、借书窗口和还书窗口,录入/注销图书、修改密码、注册/注销会员卡、打印会员卡和注册用户,关于等;系统设计部分主要介绍了系统功能设计和数据库设计;系统实现部分列出了几个主要的程序框图,并附带了一些主要的窗口和程序。特点:本系统界面友好,操作简单,比较实用。 2 作品设计原理2.1 .1数据库设计(1)数据库设计有几个范式,一般我们要做到的是第三范式,即数据表中没有冗余字段以及同一个表中的字段没有函数依赖关系,冗余字段即在一个表中已经保存过的信息,在另一个表中就不应该存在,如果需要的话,可以通过表间的关联来得到,函数依赖性就是一个表中的字段间不应该有计算关系。数据库初期设计时一定要谨慎,
4、把所有可能的情况都考虑进去,即使当时没有用到,也要将它留在数据库中作为备用字段以便将来扩充。 图书借阅管理系统数据库中各个表的设计结果如下面几个表格所示。每个表格表示为数据库中的一个表。 表1 图书表boot_t名称数据类型大小空b_idvarchar20否b_namenvarchar60是authervarchar20是publish_companynvarchar60是publish_daydatetime8是isbnvarchar60是pricenumeric9(12,2)是表2 借还图书记录表jiehuant名称数据类型大小空m_idvarchar20否b_idvarchar20否ji
5、edatedatetime8是huandatedatetime8是remarknvarchar60是表3 会员表membert名称数据类型大小空m_idvarchar20否m_namevarchar60是sexvarchar2是birthdaydatetime8是phonevarchar60是addressvarchar 50是lockvarchar2是表4 用户表user_t名称数据类型大小空user_idvarchar50否user_namevarchar50是passwordvarchar50是adminvarchar50是2.1.2 建立表打开企业管理器,建立名为booksystem的
6、数据库打开查询分析器,用sql语句建立表。图书表包括书名、图书编号、作者、出版社、出版日期、isbn、价格。use booksystemgocreate 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,);
7、gocreate 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,)gocreate table membert(m_id varchar (20) not null unique, m_name varchar (60) unique, sex int, varchar (2) unique,birthday
8、 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建立表后在与图书表中填入图书基本信息,借还记录表中写入会员借阅情况,会员表中写入会员资料,用户表中添加可以登录
9、界面的用户信息,其中包括管理员和会员两个权限。管理员登入后所显示的会员登入后所显示的2.2 PB界面设计2.2.1在 PB界面中建立一个名为wage的workplace,建立其与数据库的联系并连接服务器 图1图2在PB的“wage”application的open中 / Profile wageSQLCA.DBMS = MSS Microsoft SQL ServerSQLCA.Database = wageSQLCA.ServerName = PC-201009021624SQLCA.LogId = saSQLCA.AutoCommit = FalseSQLCA.DBParm = conne
10、ct;open(w_login)2.2.2 PB系统功能设计在系统功能分析的基础上,考虑PowerBuilder程序编制的特点,得到如图所示的系统功能模块图: 图3系统功能系统功能分析:主界面:系统、借阅和查询、系统维护和帮助系统:重新登录、断开连接和退出系统借阅和查询:借还图书查询窗口、图书查询窗口、会员查询窗口、借书窗口和还书窗口系统维护:录入/注销图书、修改密码、注册/注销会员卡、打印会员卡和注册用户帮助:关于3作品使用说明书3.1首先附加数据库SQL Server2000(1) 将文件夹中的扩展名为booksystem_Data.MDF和booksystem_Log.LDF的两个文件拷
11、贝到SQL Server安装路径下Data文件中。(2) 打开SQL Server2000 中“企业管理器”,然后展开你开本地服务器,在“数据库”数据项上单击鼠标右键,在弹出的快捷菜单中选择“所有任务”/“附加数据库”菜单项中。(3) 将弹出“附加数据库”对话框中,在该对话框中单击按钮,选择所要附加数据库的booksystem_Data.MDF文件,单击【确定】按钮,即可完成附加数据库的附加操作。3.2系统介绍本系统属于小型的班级管理系统,可以有效地对班级成员进行管理,本系统应达到以下目标:界面美观大方,信息查询灵活,方便,数据存储安全可靠。实现对录入/注销图书,修改密码,注册/注销会员卡,打
12、印会员卡,会员、图书和会员借阅情况查询,借书,还书等操作。本系统还具有权限设置,会员可以操作系统、借阅和查询、帮助,而管理员还可使用系统维护。3.3操作流程 (2)登入界面 图4 Login中的登入按钮的clicked中string user ,pass ,temp1,temp2,temp3user = sle_1.textif len(user) = 0 or isnull(user) = true thenmessagebox(,用户名不能为空!)returnend ifselect user_id into :temp1 from user_t where user_id = :user
13、using sqlca;if sqlca.sqlcode 0 thenmessagebox(,用户名不存在!)returnend ifpass = sle_2.textselect password into :temp2 from user_t where user_id = :userusing sqlca;if pass temp2 thenmessagebox(,口令错误!)returnend ifopen(w_mian)select admin into :temp3 from user_t where user_id = :user using sqlca;if temp3 = a
14、dmin thenmain.m_系统维护.enabled=trueend ifclose(parent)(3) 借阅人基本信息登记/修改 图6 说明:录入借阅人基本信息后存放在借阅人信息库中。lock_or_unlock中注册按钮的clicked中int n/定义一个整型变量n=dw_1.rowcount()/将数据表总行数赋与ndw_1.insertrow(0)/插入记录dw_1.scrolltorow(n+1)/转到最后一行记录注销 按钮的clicked中dw_1.deleterow(0)/删除记录更新if dw_1.update()=1 thencommit;end if第一个 按钮的c
15、licked中dw_1.scrolltorow(1)/转到第一条记录上一个int mm=dw_1.getrow()/取得当前记录号if m1 thenm=m -1dw_1.scrolltorow(m)/转到上一条记录elsemessagebox(提示,这是第一个记录!)/弹出提示框end if下一个 按钮的clicked中int m,nn=dw_1.rowcount()/取得总行数m=dw_1.getrow()/取得当前行号if m 0 thenstring s_ids_id = this.getitemstring(row,m_id)dw_2.retrieve(s_id)end if (7)
16、图书借阅图8说明:输入借阅人编号,通过检索借阅人信息库,核实借阅人身份。输入图书编号,通过检索图书信息库,核实图书信息。进行图书借出处理后,在图书借阅库中进行登记,并将借出图书的在借标志设为“是”。(8)图书归还 图9huanshu中modified中sle_1string ls_bookid,ls_title,ls_memberid,ls_membernamedate ld_date1,ld_date2int li_daysdec ld_fine,ld_countfineld_date2=today()/获得当前日期ls_bookid=trim(this.text)/获得图书编号/根据图书编
17、号查询出借阅日期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_nameINTO :ls_memberid,:ls_membername FROM membertWHERE m_id in (SELECT m_id FROM jiehuant WHERE b_id=:ls_bookid); if sqlca.sqlco
18、de0 then messagebox(系统提示,没有借阅信息!) sle_1.setfocus() returnelsesle_2.text=ls_titlesle_3.text=ls_memberidsle_4.text=ls_membernameend if图中的还书按钮的clicked中string ls_bookid,ls_bookonloandate ldt_nowdateldt_nowdate=today()/获得当前日期ls_bookid=sle_1.textif ls_bookid= or isnull(ls_bookid) then messagebox(系统提示,请输入图
19、书编号!) sle_1.setfocus() returnelseselect remark into :ls_bookonloanfrom 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 ifend if
20、sle_1.setfocus()sle_1.text=sle_2.text=sle_3.text=sle_4.text=jieshu中sle_1的modified中string ls_memberid,ls_membernamels_memberid=trim(this.text)/根据借阅人编号查询出借阅人姓名select m_name into :ls_membername from membert where m_id=:ls_memberid;/判断是否有该借阅人if sqlca.sqlcode0 then messagebox(系统提示,没有此借阅人信息!) sle_1.setfoc
21、us()/借阅人编号输入框获得焦点 returnelse sle_2.setfocus()/图书编号输入框获得焦点 sle_3.text=ls_membername/显示借阅人姓名end if中sle_2的modified中string ls_bookid,ls_titlels_bookid=trim(this.text)select b_name into :ls_title from bookt where b_id=:ls_bookid;if sqlca.sqlcode0 then messagebox(系统提示,没有此图书信息!) sle_2.setfocus() returnelse
22、 sle_4.text=ls_titleend if图中借书按钮的clicked中string ls_bookid,ls_memberid,ls_remarkdate ldt_nowdateldt_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() returnend
23、 ifif ls_bookid= or isnull(ls_bookid) then messagebox(系统提示,请输入图书编号!) sle_2.setfocus() returnend if/根据图书编号查询图书是否借出SELECT remark INTO:ls_remark FROM jiehuant WHERE b_id=:ls_bookid;if ls_remark=未还 then messagebox(系统提示,本书已经外借!) sle_2.setfocus() returnelse/添加图书借阅记录INSERT INTO jiehuant (b_id,m_id,jiedate)
24、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)密码修改图11password中clicked中string user_idint retselect user_id into :
25、user_id from user_t where password=:sle_1.textusing sqlca;if sqlca.sqlcode=0 thenif sle_2.text=sle_3.text thenupdate user_t set password=:sle_2.text where user_id=:user_id;commit using sqlca;close(parent)returnelse ret=messagebox(提示,新密码有误!,question!,yesno!,2)if ret = 1 then sle_1.text= sle_2.text= s
26、le_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= elseclose(parent) return end if end if(11)注册用户图12注册用户的确定clicked中string ls_id,ls_user,ls_password,ls_admin,ls_temp,ls_temp2ls_id=sle_1.textls_user=sle
27、_2.textls_password=sle_3.textls_admin=ddlb_1.textif sle_1.text=or sle_2.text=or sle_3.text=or ddlb_1.text=thenmessagebox(提示!,用户编号,用户名,口令或角色不能为空!)returnend if if ls_admin=member then insert into user_t values(:ls_id,:ls_user,:ls_password,:ls_admin); messagebox(提示!,创建新用户成功!) close(parent)elseif ls_adm
28、in=admintheninsert into user_tvalues(:ls_id,:ls_user,:ls_password,:ls_admin);messagebox(提示!,创建新管理用户成功!)close(parent) else messagebox(提示!,此用户已存在!) end if(12)关于图13说明:关于图书管理系统的信息。4总结在对管理信息系统的开发过程有了基本了解后,本人使用PowerBuilder 9.0开发了这个“图书管理系统”。系统基本实现了内部图书借阅管理的系统化、规范化和自动化。例如对图书进行登记,对旧书进行销毁。添加借阅人以及注销借阅人。图书的借阅、归还。可以按作者、出版社、出版时间等信息对图书进行查询,并能反映出图书的借阅情况。还能够对使用该管理系统的用户进行管理,按照不同的工作职能提供不同的功能授权。 通过对该系统的设计、开发和调试,一方面让我了解了数据库的使用方法,另一方面,让我初步掌握了PowerBuilder开发工具的使用方法,熟悉了窗口、菜单以及一些可视化控件的使用方法。通过使用还了解到窗口对象、数据窗口对象、各类控件的属性与方法。同时,在制作过程中遇到了不少问题和困难,通过查阅书籍及互连网得到了不小的帮助。因为条件的限制,该管理系统还存在不少的缺点和漏洞,只能尽量改正与完善。不足之处,还请多多指教。