【数据库课程设计】:OpenGauss+java+swing OpenGauss数据库课程设计
本课程设计以OpenGauss作为数据库,使⽤java的图形化界⾯实现窗⼝间的信息交互。
特⾊: 实现了 表的增删改查,触发器的建⽴,数据的转储,精确查询与模糊查询。
1.触发器
主要的借还书功能⽤数据库的触发器实现,且OpenGauss数据库需要先创建触发器函数,再调⽤,⽐较特殊。函数如下:【借书触发器函数代码:】
CREATE OR REPLACE FUNCTION public.update_books()
RETURNS trigger
LANGUAGE plpgsql
NOT FENCED NOT SHIPPABLE
AS $$
DECLARE
BEGIN
UPDATE books SET stock=stock-1WHERE title=NEW.book;
RETURN NEW;
END
$$;
【还书触发器函数代码:】
CREATE OR REPLACE FUNCTION public.update_books2()
RETURNS trigger
LANGUAGE plpgsql
NOT FENCED NOT SHIPPABLE
AS $$
DECLARE
BEGIN
UPDATE books SET stock=stock+1WHERE title=OLD.book;
RETURN NEW;
END
$$;
【OpenGauss数据库表的代码】
CREATE TABLE admindt (
id bigint NOT NULL,
username varchar(30)NOT NULL,
password varchar(30)NOT NULL,
againcode char(30)NOT NULL,
PRIMARY KEY(id)
);
CREATE TABLE books (
ID bigint NOT NULL,
ISBN varchar(30)NOT NULL,
TITLE varchar(30)NOT NULL,
PUBLISH varchar(30)NOT NULL,
STOCK bigint NOT NULL,
PRIMARY KEY(ID)
);
CREATE TABLE borrow (
ID bigint NOT NULL,
book varchar(30)NOT NULL,
reader varchar(30)NOT NULL,
borrow_date date NOT NULL,
return_date date NOT NULL,
PRIMARY KEY(ID)
);
CREATE TABLE readers (
ID bigint NOT NULL,
name varchar(50)NOT NULL,
javaswing实现购买
code varchar(30)NOT NULL,
major varchar(30)NOT NULL,
stu_id varchar(30)NOT NULL,
sex varchar(6)check(sex=‘男’or sex=‘⼥’),
born bigint NOT NULL,
fine bigint DEFAULT NULL,
date date NOT NULL,
PRIMARY KEY(ID)
);
2.转储和模糊查询
1.对查询到的图书信息进⾏转储,在桌⾯⾃动⽣成⼀个.txt⽂件进⾏保存。
2.模糊插叙是使⽤SQL的LIKE语句。
【java代码:】
public void actionPerformed(ActionEvent e){
try{
Source()==query[0]){
String txstr[]=new String[4];
for(int i=0;i<4;i++){
txstr[i]=jtfarr[i].getText().trim();
}
if(txstr[0].equals("")&&txstr[1].equals("")&&txstr[2].equals("")&&txstr[3].equals("")){    JOptionPane.showMessageDialog(null,"不能全为空");
return;
}
if(!txstr[0].equals("")){
sql="select * from books where ID ="+txstr[0];
}else if(!txstr[1].equals("")){
sql="select * from books where ISBN ='"+txstr[1]+"'";
}else if(!txstr[2].equals("")){
sql="select * from books where TITLE ='"+txstr[2]+"'";
}else if(!txstr[3].equals("")){
sql="select * from books where PUBLISH ='"+txstr[3]+"'";
}
ResultSet rs = uteQuery(sql);
()){
int column = rs.getMetaData().getColumnCount();//表格列数
do{
tabstr=tabstr+bbnume[0];
for(int i =0; i < column; i++){//获取除表头的每⼀⾏
tabstr=String(i +1)+bbnume[i+1];
}
tabstr=tabstr+"\n";
}());
tabArea.setText(tabstr);
JSP.add(tabArea);
//数据的转储,outFilepath已经声明
try{
BufferedWriter bw=new BufferedWriter(new FileWriter(outFilePath));
bw.Text());
bw.close();
}catch(IOException ee){
ee.printStackTrace();
}
tabstr="";//置空字符串,使下⼀次正常输出
}else{
JOptionPane.showMessageDialog(null,"输⼊不存在");
return;
}
}else Source()==query[1]){
String vastr[]=new String[2];
for(int i=0;i<2;i++){
vastr[i]=v_search[i].getText().trim();
}
if(v_str[0].equals(vastr[0])&&v_str[1].equals(vastr[1])){
JOptionPane.showMessageDialog(null,"请输⼊关键词");
return;
}
if(!v_str[0].equals(vastr[0])){
sql="select * from books where TITLE like '%"+vastr[0]+"%';";//模糊查询
}else if(!v_str[1].equals(vastr[1])){
sql="select * from books where PUBLISH like '%"+vastr[1]+"%';";
}
【界⾯视图如下】
【主界⾯】
【未登录查书/借书界⾯】
【读者/管理员⽤户登记】
【读者中⼼】
【借书成功】
【还书】

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。