基于Oracle数据库的应用开发.pptx
第第16 基于基于Oracle数据库的应用数据库的应用开发开发培训专用本章内容本章内容p图书管理系统数据库设计与开发p基于Oracle数据库的人事管理系统开发 培训专用本章要求本章要求p了解基于数据库的应用系统开发过程p了解图书管理系统开发的过程与实现p了解人事管理系统部分核心代码的实现培训专用16.1图书管理系统数据库设计与开发图书管理系统数据库设计与开发p图书管理系统需求分析p图书管理系统数据库对象设计p图书管理系统数据库对象创建p图书管理系统应用开发培训专用16.1.1 图书管理系统需求分析图书管理系统需求分析培训专用16.1.2 图书管理系统数据库对象设计图书管理系统数据库对象设计p表设计p序列设计p视图设计pPL/SQL功能模块设计培训专用表设计表设计pBOOK_CLASS表结构及其约束字段名数据类型长度约束说明classidNUMBER11主码学科类型编号classnameVARCHAR220NOT NULL学科类型名称demoVARCHAR2100说明培训专用pBOOK_TYPE表结构及其约束字段名数据类型长度约束说明typeidNUMBER11主码图书类型编号typenameVARCHAR220NOT NULL图书类型名称demoVARCHAR2100说明培训专用pBOOK表结构及其约束字段名数据类型长度约束说明bookidNUMBER11主码书籍编号booknameVARCHAR220NOT NULL书籍名称author1VARCHAR220NOT NULL书籍作者author2VARCHAR220书籍作者author3VARCHAR220书籍作者pubdateDATE出版日期publishVARCHAR230出版社photoVARCHAR2100图片地址abstractVARCHAR24000内容简介priceNUMBER7,2NOT NULL价格ISBNVARCHAR217NOT NULL书籍ISBN码bookclassNUMBER11外码学科类型booktypeNUMBER11外码藏书类型培训专用pREADER_TYPE表结构及其约束字段名数据类型长度约束说明typeidNUMBER11主码图书类型编号typenameVARCHAR220NOT NULL图书类型名称demoVARCHAR2100说明培训专用pREADER表结构及其约束字段名数据类型长度约束说明readeridNUMBER11主码读者编号nameVARCHAR210NOT NULL读者姓名telephoneVARCHAR215联系电话emailVARCHAR230邮箱地址deptVARCHAR220所在院系rightNUMBER1取值为0或1借阅权限readertypeNUMBER11外码读者类型demoVARCHAR21000说明培训专用pBORROW表结构及其约束字段名数据类型长度约束说明readeridNUMBER11外码联合主码读者编号bookidNUMBER11外码图书编号borrowdateDATE出借日期dueDATE应还日期last_dueDATE实际归还日期培训专用pRULE表结构及其约束字段名数据类型长度约束说明booktypeNUMBER11外码联合主码藏书类型编号readertypeNUMBER11外码读者类型编号daysNUMBER5NOT NULL期限(天)numNUMBER5NOT NULL册数(本)renewNUMBER5NOT NULL续借次数(次)overtimeNUMBER5,2NOT NULL逾期处罚(元/册/天)培训专用pADMIN表结构及其约束字段名数据类型长度约束说明IdNUMBER11主码管理员编号usernameVARCHAR210NOT NULL管理员账号passwordVARCHAR211NOT NULL账号密码培训专用p PRECONCERT(预约表)表结构及其约束字段名数据类型长度约束说明readeridNUMBER11主码联合主码读者编号bookidNUMBER11主码图书编号predateDATE预约日期培训专用pSEQ_READERS:产生读者编号,起始值为10 000。pSEQ_BOOKS:产生图书编号,起始值为100。序列设计序列设计培训专用视图设计视图设计p创建名为“READER_BOOK_VIEW”的视图,包括读者信息、所借图书信息及借阅信息。p创建名为“BOOK_TYPE_STAT_VIEW”的视图,包括各类图书的借阅统计信息。培训专用PL/SQL功能模块设计功能模块设计p创建一个计算借阅超期天数的存储过程。p创建一个计算图书应归还日期的函数。p创建一个计算超期罚款的存储过程。p创建一个触发器,禁止星期六、星期日以及非工作时间借阅图书操作。培训专用16.1.3 图书管理系统数据库对象创建图书管理系统数据库对象创建p创建admin表nCREATE TABLE admin(nid NUMBER(11)PRIMARY KEY,n username VARCHAR2(10)NOT NULL,npASsword VARCHAR2(11)NOT NULL);p创建reader_type表nCREATE TABLE reader_type(ntypeid NUMBER(11)PRIMARY KEY,ntypename VARCHAR2(20)NOT NULL,ndemo VARCHAR2(100);培训专用p创建reader表nCREATE TABLE reader(nreaderid NUMBER(11)PRIMARY KEY,nname VARCHAR2(10)NOT NULL,ntelephone VARCHAR2(15),nemail VARCHAR2(30),dept VARCHAR2(20),nright NUMBER(1)CHECK(right=0 or right=1),nreadertype NUMBER(11)REFERENCES reader_type(typeid),ndemo VARCHAR2(1000);培训专用p创建book_type表nCREATE TABLE book_type(ntypeid NUMBER(11)PRIMARY KEY,ntypename VARCHAR2(20)NOT NULL,ndemo VARCHAR2(100);p创建book_class表nCREATE TABLE book_class(nclASsid NUMBER(11)PRIMARY KEY,nclASsname VARCHAR2(20)NOT NULL,ndemo VARCHAR2(100);培训专用p创建book表nCREATE TABLE book(nbookid NUMBER(11)PRIMARY KEY,nbookname VARCHAR2(20)NOT NULL,nauthor1 VARCHAR2(20)NOT NULL,nauthor2 VARCHAR2(20),nauthor3 VARCHAR2(20),npubDATE DATE,publish VARCHAR2(30),nphoto VARCHAR2(100),nabstract VARCHAR2(4000),nprice NUMBER(7,2)NOT NULL,nisbn VARCHAR2(17)NOT NULL,nbookclASs NUMBER(11)REFERENCES book_clASs(clASsid),nbooktype NUMBER(11)REFERENCES book_type(typeid);培训专用p创建borrow表nCREATE TABLE borrow(nreaderid NUMBER(11)REFERENCES reader(readerid),nbookid NUMBER(11)REFERENCES book(bookid),borrowdate DATE,ndue DATE,last_due DATE,nPRIMARY KEY(readerid,bookid);培训专用p创建preconcert表nCREATE TABLE preconcert(nreaderid NUMBER(11)REFERENCES reader(readerid),nbookid NUMBER(11)REFERENCES book(bookid),npredate DATE,nPRIMARY KEY(readerid,bookid);培训专用p创建rule表nCREATE TABLE rule(nbooktype NUMBER(11)REFERENCES book_type(typeid),nreadertype NUMBER(11)REFERENCES reader_type(typeid),ndays NUMBER(5)NOT NULL,nnum NUMBER(5)NOT NULL,nrenew NUMBER(5)NOT NULL,novertime NUMBER(5,2)NOT NULL,nPRIMARY KEY(booktype,readertype);培训专用p序列的创建nCREATE SEQUENCE seq_reader START WITH 1 INCREMENT BY 10000;nCREATE SEQUENCE seq_book START WITH 1 INCREMENT BY 100;培训专用p创建视图reader_book_viewnCREATE OR REPLACE VIEW reader_book_viewnASnSELECT name,bookname,borrowdate,due,last_due nFROM reader,book,borrow nWHWER reader.readid=borrow.readid AND borrow.bookid=book.bookid;培训专用p创建视图book_type_stat_viewnCREATE OR REPLACE VIEW book_type_stat_viewnASnSELECT booktype,COUNT(booktype)nFROM(SELECT readerid,borrow.booktype,nBooktype,borrowdate,due,last_due nFROM borrow,book nWHERE book.bookid=borrow.bookid)培训专用p计算借阅超期天数的存储过程pCREATE OR REPLACE PROCEDURE p_days_FROM_due(pv_readerid NUMBER,v_bookid NUMBER,v_days out NUMBER)pASpBEGINpSELECT due sysdate INTO v_days FROM borrow pWHERE readerid=v_readerid AND bookid=v_bookid;pIF v_days=0 THEN p v_day:=0;pEND IF;pEND;培训专用p计算图书应归还日期的函数pCREATE OR REPLACE FUNCTION f_date_is_due(pv_readerid NUMBER,v_bookid NUMBER)pRETURN VARCHAR2pASpv_booktype NUMBER;pv_readertype NUMBER;pv_date VARCHAR2(10);pBEGINpSELECT booktype INTO v_booktype FROM book WHERE bookid=v_bookid;pSELECT readertype INTO v_readertype FROM reader WHERE readerid=v_readerid;pSELECT to_char(sysdate+days,yyyy-mm-dd)INTO v_date FROM rule pWHERE readertype=v_readertype AND booktype=v_booktype;pRETURN v_date;pEND;培训专用p计算超期罚款的存储过程pCREATE OR REPLACE PROCEDURE p_timeover_money(pv_readerid NUMBER,v_bookid NUMBER,v_money OUT NUMBER)pASpv_days NUMBER;pv_readertype NUMBER;pv_booktype NUMBER;pBEGINpp_days_from_due(v_readerid,v_bookid,v_days);pSELECT booktype INTO v_booktype FROM book WHERE bookid=v_bookid;pSELECT readertype INTO v_readertype FROM reader WHERE readerid=v_readerid;pSELECT overtime*floor(abs(v_days)INTO v_money FROM rule pWHERE readertype=v_readertype AND booktype=v_booktype;pEND;培训专用p判断读者可否进行借阅的存储过程pCREATE OR REPLACE PROCEDURE p_can_borrow(pv_readerid NUMBER,v_bookid NUMBER,v_num OUT NUMBER)pASpv_right NUMBER;pv_borrowed_num NUMBER;pv_rule_num NUMBER;pBEGINpSELECT right INTO v_right FROM reader WHERE readerid=v_readerid;pv_borrowed_num:=f_borrowed_num(v_readerid,v_bookid);pv_rule_num:=f_rule_num(v_readerid,v_bookid);pIF v_right=1 THEN pv_num:=0;pELSEpv_num:=v_rule_num-v_borrowed_num;pEND IF;pEXCEPTIONp WHEN OTHERS THENp v_num:=0;pEND;培训专用16.2 人事管理系统开发人事管理系统开发p人事管理系统介绍p数据库设计p重要界面的设计与实现p主要代码的实现培训专用16.2.1人事管理系统介绍人事管理系统介绍p功能:录入人事的基本资料,在操作上能够完成诸如添加、修改、删除、按各种条件进行查询、新用户的设置及密码修改等方面的工作,基本满足人事日常业务的需要。p实用的/S结构,后台Oracle数据库培训专用16.2.2 数据库设计数据库设计员工员工编号姓名性别出生日期身份证号员工请假请假天数员工工资拥有1工资编号员工编号基本工资岗位工资出勤费拥有所属部门管理员编号姓名密码。.管理管理管理11请假编号q111mnp员工编号培训专用p员工基本信息表 n员工基本信息表主要描述员工的个人情况,如姓名、性员工基本信息表主要描述员工的个人情况,如姓名、性别、出生日期、身份证号、所属部门等,其中员工编号别、出生日期、身份证号、所属部门等,其中员工编号作为员工基本信息表的主码。作为员工基本信息表的主码。p员工工资信息表n员工工资信息表主要描述每个员工所对应的工资情况,员工工资信息表主要描述每个员工所对应的工资情况,如工资编号、基本工资、岗位工资、出勤费等,其中工如工资编号、基本工资、岗位工资、出勤费等,其中工资编号作为员工工资信息表的主码。而其中的员工编号资编号作为员工工资信息表的主码。而其中的员工编号是外码,它的取值参照于员工基本信息表的主码取值。是外码,它的取值参照于员工基本信息表的主码取值。同时,每名员工均只有一个工资编号和一个员工编号,同时,每名员工均只有一个工资编号和一个员工编号,即员工实体与员工工资实体之间是一对一的联系。即员工实体与员工工资实体之间是一对一的联系。培训专用p员工请假信息表n员工请假信息表主要描述每个员工所对应的请假情况,员工请假信息表主要描述每个员工所对应的请假情况,如请假总天数、请假开始时间、请假结束时间、请假原如请假总天数、请假开始时间、请假结束时间、请假原因等,其中请假编号作为员工请假信息表的主码。而其因等,其中请假编号作为员工请假信息表的主码。而其中的员工编号是外码,它参照于员工基本信息表的主码中的员工编号是外码,它参照于员工基本信息表的主码取值。同时,每名员工可以有多次请假记录,即员工实取值。同时,每名员工可以有多次请假记录,即员工实体与员工请假实体之间是一对多的联系。体与员工请假实体之间是一对多的联系。p管理员表n管理员表主要描述本系统中的管理员账户情况,包括编管理员表主要描述本系统中的管理员账户情况,包括编号、管理员名、密码,其中编号作为管理员表的主码。号、管理员名、密码,其中编号作为管理员表的主码。培训专用p员工基本信息表(emp)字 段 名名 称类 型字 段 名名 称类 型empnum员工编号VARCHAR2(16)address地址VARCHAR2(40)empname姓名VARCHAR2(16)policy政治面貌NUMBERSex性别NUMBERphone电话VARCHAR2(16)birthday出生日期DATEdegree学历NUMBERnation民族VARCHAR2(10)college毕业院校VARCHAR2(40)nativeplace户籍VARCHAR2(40)duty职务VARCHAR2(16)Ident身份证号VARCHAR2(16)title职称VARCHAR2(16)department所属部门VARCHAR2(16)sort在职类别NUMBERmarriage婚姻状况NUMBERremark备注VARCHAR2(400)培训专用p员工工资信息表(pay)字 段 名名 称类 型字 段 名名 称类 型Id工资编号NUMBERtax个人所得税NUMBERempnum员工编号VARCHAR2(16)insure_shiye失业保险NUMBERbasepay基本工资NUMBERinsure_yanglao养老保险NUMBERPost岗位工资NUMBERinsure_yiliao医疗保险NUMBERworkprice出勤费NUMBERshouldpay应发工资NUMBERMess伙食补贴NUMBERshoulddeduct应扣工资NUMBERtraffic交通补贴NUMBERpay实发工资NUMBERPrice物价补贴NUMBER培训专用p员工请假信息表leave)字 段 名名 称类 型字 段 名名 称类 型Id请假编号NUMBERleavepass请假批准人VARCHAR2(16)empnum员工编号CHAR(16)reason请假原因VARCHAR2(400)startdate请假开始时间DATEapplydate申请日期DATEenddate请假终止时间DATEcanceldate销假日期DATEalldate请假总天数NUMBER培训专用p管理员表(admin)字 段 名约 束名 称类 型id主码编号NUMBERusernameNOT NULL管理员名VARCHAR2(16)passwordNOT NULL密码VARCHAR2(16)培训专用16.2.3 重要界面的设计与实现重要界面的设计与实现p管理员登录界面p增加人员基本信息p查询人员基本信息p员工请假信息p员工工资信息维护与管理培训专用p 管理员登录界面 培训专用p人员信息添加界面 培训专用p员工信息查询界面 培训专用p员工请假信息添加界面 培训专用p员工工资信息管理界面 培训专用16.2.4 主要代码的实现主要代码的实现p系统采用JDBC的数据库连接 ntrynClass.forName(oracle.jdbc.driver.OracleDriver).nnewInstance();n/加载数据库连接的驱动程序加载数据库连接的驱动程序nString url=jdbc:oracle:thin:localhost:1521:orcl;n/连接的字符串,其中连接的字符串,其中orcl为你的数据库的为你的数据库的SIDnString user=scott;nString password=tiger;nConnection conn=DriverManager.getConnection(url,user,password);n/与数据库建立连接与数据库建立连接nStatement stmt=conn.createStatement();n/产生产生Statement对象,用于执行对象,用于执行SQL语句语句n 培训专用p员工工资信息管理代码p显示员工信息p添加员工的个人工资信息p处理个人工资信息的添加培训专用总结总结p数据库应用系统开发过程p图书管理系统数据库的设计与实施p 人力资源管理系统开发培训专用演讲完毕,谢谢观看!培训专用内容总结第16 基于Oracle数据库的应用开发。16.1.1 图书管理系统需求分析。(元/册/天)。16.1.3 图书管理系统数据库对象创建。demo VARCHAR2(100)。CREATE TABLE book_class(。pubDATE DATE,publish VARCHAR2(30),。CREATE TABLE borrow(。PRIMARY KEY(readerid,bookid)。CREATE TABLE preconcert(。CREATE TABLE rule(。PRIMARY KEY(booktype,readertype)。创建视图reader_book_view。SELECT name,bookname,borrowdate,due,last_due。FROM reader,book,borrow。创建视图book_type_stat_view。SELECT booktype,COUNT(booktype)。FROM(SELECT readerid,borrow.booktype,。Booktype,borrowdate,due,last_due。IF v_days=0 THEN培训专用