图书管理系统er图,图书管理系统er图关系模式

图书管理系统er图,图书管理系统er图关系模式,图书管理系统(Java实现,十个数据表,含源码、ER图,超详细报告解释,2020.7.11更新)

图书管理系统er图,图书管理系统er图关系模式

图书管理系统er图,图书管理系统er图关系模式,图书管理系统(Java实现,十个数据表,含源码、ER图,超详细报告解释,2020.7.11更新)

2.2.1学生流程图

图书管理系统er图,图书管理系统er图关系模式

2.2.2管理员流程图

图书管理系统er图,图书管理系统er图关系模式

2.2.3超级管理员流程图

图书管理系统er图,图书管理系统er图关系模式

未命名文件 (2)

2.3功能需求分析

系统主要结构功能如下:

图书管理系统er图,图书管理系统er图关系模式

3.数据字典

名字:书籍信息表

图书管理系统er图,图书管理系统er图关系模式

描述:数据库中书籍信息表各字段的集合,包含编号,书名,作者,译者,出版社,库存,进货时间

名字:学生信息表

图书管理系统er图,图书管理系统er图关系模式

描述:数据库中学生信息表各字段的集合,包括学号,姓名,学院编号,性别,出生日期,身份证号码,手机号码

名字:学生账号信息

图书管理系统er图,图书管理系统er图关系模式

描述:数据库中学生账号信息表各字段的集合,包括学号,密码,密保问题,密保答案,剩余可以借次数

名字:学生预约

图书管理系统er图,图书管理系统er图关系模式

描述:数据库中学生预约表各字段的集合,包括学号,书籍编号,预约时间,到期时间

名字:学生借书

图书管理系统er图,图书管理系统er图关系模式

描述:数据库中学生借书表各字段的集合,包括学号,书籍编号,借书时间,到期时间

名字:学生还书

图书管理系统er图,图书管理系统er图关系模式

描述:数据库中学生还书表各字段的集合,包括学号,书籍编号,还书时间

名字:管理员信息

图书管理系统er图,图书管理系统er图关系模式

描述:数据库中管理员信息表各字段的集合,包括工号,名称,性别,手机号码,email,身份证号码

名字:管理员账号信息

图书管理系统er图,图书管理系统er图关系模式

描述:数据库中管理员账号信息表各字段的集合,包括工号,密码,密保问题,密保答案

名字:超级管理员信息

图书管理系统er图,图书管理系统er图关系模式

描述:数据库中超级管理员信息表各字段的集合,包括工号,姓名,性别,手机号码,身份证号码,email

名字:超级管理员账号信息

图书管理系统er图,图书管理系统er图关系模式

描述:数据库中超级管理员账号信息信息表各字段的集合,包括工号,密码,密保问题,密保答案

名字:用户信息

图书管理系统er图,图书管理系统er图关系模式

描述:数据库中账户信息以及账户类型,包括工号/学号,用户类型。

数据库关系图

图书管理系统er图,图书管理系统er图关系模式

4.概念模型

经过上述系统功能分析和需求总结,设计如下面所示的数据项和数据结构。

书籍表:存放书籍记录。包括编号,书名,作者,译者,出版社,库存,进货时间,分类

学生信息:存放学生信息。包括学号,姓名,班级编号,性别,出生日期,身份证号码,手机号码

学生账号信息:存放学生账号信息。包括学号,密码,密保问题,密保答案,剩余可以借的次数。

学生预约情况:学号,书籍编号,预约时间,预约到期时间

学生借书情况:学号,书籍编号,借书时间,借书到期时间

学生还书情况:学号,书籍编号,还书时间

管理员信息:存放管理员信息。包括工号,姓名,性别,手机号码,身份证号码,email。

管理员账号信息:工号,密码,密保问题,密保答案

超级管理员信息:工号,姓名,性别,手机号码,身份证号码,email

超级管理员账号信息:工号,密码,密保问题,密保答案

职工信息:工号/学号,职位

书籍实体:

图书管理系统er图,图书管理系统er图关系模式

学生信息实体:

图书管理系统er图,图书管理系统er图关系模式

学生账号实体:

图书管理系统er图,图书管理系统er图关系模式

学生预约实体:

图书管理系统er图,图书管理系统er图关系模式

学生借书实体:

图书管理系统er图,图书管理系统er图关系模式

学生还书实体:

图书管理系统er图,图书管理系统er图关系模式

管理员信息实体:

图书管理系统er图,图书管理系统er图关系模式

管理员账号实体:

图书管理系统er图,图书管理系统er图关系模式

超级管理员信息实体:

图书管理系统er图,图书管理系统er图关系模式

超级管理员账号实体:

图书管理系统er图,图书管理系统er图关系模式

职工信息:

图书管理系统er图,图书管理系统er图关系模式

所有实体的联系:

图书管理系统er图,图书管理系统er图关系模式

5.数据模型

将E-R图转换成的关系模式如下:

书籍信息(编号,书名,作者,译者,出版社,库存,进货时间,分类)

学生信息(学号,姓名,校区编号,性别,出生日期,身份证号码,手机号码)

学生账号信息(学号,密码,密保问题,密保答案,剩余可以借次数)

学生预约(学号,书籍编号,预约时间,到期时间)

学生借书(学号,书籍编号,借书时间,到期时间)

学生还书(学号,书籍编号,还书时间)

管理员信息(工号,名称,性别,手机号码,email,身份证号码)

管理员账号信息(工号,密码,密保问题,密保答案)

超级管理员信息(工号,姓名,性别,手机号码,身份证号码,email)

超级管理员账号(工号,密码,密保问题,密保答案)

职工信息(工号/学号,职位)

6.建表代码与界面展示 6.1表创建:
(书籍表)
create table book
Bno smallint primary key not null,
Bname varchar(50) not null,
Bauthor varchar(50) not null,
Btranslator varchar(50),
Bpublish varchar(50) not null,
Bsort varchar(50) not null,
BinTime date not null,
Bstock smallint not null,
Bacount int not null
(学生信息表)
create table studentimfornation
Sno varchar(20) primary key not null,
Sname varchar(20) not null,
no smallint not null,
Ssex nchar(1) not null,
Sbirthday date ,
Sid varchar(20) not null,
Sphone varchar(13),
Sno foreign key references studentsacount(sno)
(学生账号表)
create table studentaccount
sno varchar(20) primary key not null,
Spassword varchar(18) not null,
Squestion varchar(50) ,
Sanswer varchar(20),
Sstats smallint not null,
(学生预定表)
create table studentorder
sno varchar(20) primary key not null,
bno smallint not null,
sorder date not null,
soverdue date not null,
Bno foreign key references book(Bno)
Sno foreign key references studentacount(sno)
(学生借书表)
create table studentborrow
sno varchar(20) primary key not null,
Bno smallint not null,
Sborrow date not null,
soverdue date not null
Bno foreign key references book(Bno)
Sno foreign key references studentacount(sno)
(学生还书表)
create table studentreturn
sno varchar(20) primary key not null,
bno smallint not null,
sreturn date not null,
Bno foreign key references book(Bno)
Sno foreign key references studentacount(sno)
(管理员信息表)
create table admitinformation
ano varchar(20) primary key not null,
Aname varchar(20) not null,
Asex char(2) not null,
Aphone varchar(13) not null,
Aid varchar(20) not null,
Aemail varchar(50) ,
sno foreign key references superadmitinformation(sno)
(管理员账号表)
create table AdmitAccount
ano varchar(20) primary key not null,
Apassword varchar(18) not null,
Aquestion varchar(20),
Aanswer varchar(20)
sno foreign key references studentacount(sno)
(超级管理员信息表)
create table superadmitinformation
sano varchar(20) primary key not null,
sname varchar(20) not null,
ssex char(2) not null,
sphone varchar(13) not null,
sid varchar(20) not null,
semail varchar(50) ,
sno foreign key references superadmitacount(sano)
(超级管理员账号表)
create table superadmitAccount
sano varchar(20) primary key not null,
spassword varchar(18) not null,
squestion varchar(20),
sanswer varchar(20)
no foreign key references superadmitacount(sano)
no foreign key references admitacount(ano)
no foreign key references studentacount(sno)
(职工信息表)
create table staff
no varchar(20) primary key not null,
Type varchar(20),
6.2界面显示及服务端用到的查询代码:

(摘抄部分服务器端代码,并且经过删改挑选,只放出关键部分以及sql语句。不然文档内容过多)

6.2.1登录界面

登录界面

(Login)

图书管理系统er图,图书管理系统er图关系模式

HandleClient
(对应login)
//获取密码
"select spassword from StudentAcount where sno='"+ num+"'"
"select apassword from AdmitAcount where ano='"+num+"'"
"select spassword from superadmitacount where sno='"+num+"'"
HandleClient2
(对应admit,student,superadmit)
//查询学生、管理员、超级管理员信息,返回给客户端
select sname,ssex,sstats "
\+ "from studentinformation,studentacount "
\+ "where (studentinformation.sno=studentacount.sno) and studentacount.sno='"
\+num+"'"
"select aname,asex "
\+ "from admitinformation "
\+ "where ano='"
\+num+"'"
"select sname,ssex "
\+ "from superadmitinformation "
\+ "where sno='"
\+num+"'"
忘记密码界面
(ForgetLoading)

图书管理系统er图,图书管理系统er图关系模式

(ForgetPassword)

图书管理系统er图,图书管理系统er图关系模式

HandlePassword
HandleQuestion
//获取密保问题,用于显示
**if** (i == 1) {
String num = fromClient.readUTF();
ResultSet res = stat
.executeQuery("select squestion,sanswer from studentacount where sno='"
\+ num + "'");
**if** (res.next()) {
String question = res.getString(1);
String answer = res.getString(2);
**if** (question == **null** \|\| question.isEmpty()) {
toClientData.writeUTF("未设置密保问题,不需要填写答案");
toClientData.writeUTF("");
} **else** {
toClientData.writeUTF(question);
toClientData.writeUTF(answer);
} **else** {
toClientData.writeUTF("未设置密保问题,直接修改密码");
toClientData.writeUTF(**null**);
res.close();
//更新密码
**else** {
**try** {
String num = fromClient.readUTF();
String password = fromClient.readUTF();
PreparedStatement pre = con.conn
.prepareStatement("update studentacount set spassword=?"
\+ " where sno=?");
pre.setString(1, password);
pre.setString(2, num);
pre.executeUpdate();
toClientData.writeInt(0);
pre.close();
// res.close();
} **catch** (IOException e) {
// **TODO**: handle exception
toClientData.writeInt(2);
} **catch** (SQLException e) {
// **TODO** Auto-generated catch block
// e.printStackTrace();
toClientData.writeInt(2);
6.2.2学生界面

查询书籍

(Student,StudenOrder)

图书管理系统er图,图书管理系统er图关系模式

HandleOrder
String sql = "select \* from book where ";
//热门度
**if** (i == 1) {
**if** (type.equals("书名")) {
sql += "bname like '%" + key
\+ "%' order by bacount desc";
} **else if** (type.equals("作者"))
sql += "bauthor like '%" + key
\+ "%' order by bacount desc";
**else if** (type.equals("类型"))
sql += "bsort like '%" + key
\+ "%' order by bacount desc";
**else if** (type.equals("译者"))
sql += "btranslator like '%" + key
\+ "%' order by bacount desc";
**else if** (type.equals("出版社"))
sql += "bpublish like '%" + key
\+ "%' order by bacount desc";
**else if** (type.equals("编号"))
sql += "bno like '%" + key + "%' order by bacount desc";
**else if** (type.equals("时间"))
sql += "bintime like '%" + key + "%' order by bacount desc";
ResultSet res = stat.executeQuery(sql);
ArrayList\ book\ list = **new** ArrayList\ book\ ();
**while** (res.next()) {
book book = **new** book();
book.setNo(res.getString(1));
book.setName(res.getString(2));
book.setAuthor(res.getString(3));
book.setPublis(res.getString(5));
book.setStock(res.getInt(8));
book.setTime(res.getDate(7));
book.setSort(res.getString(6));
book.setTranslator(res.getString(4));
book.setAcount(res.getInt(9));
list.add(book);
toClient.writeObject(list);

双击预约:HandleAppointment

预约情况

(StudentAppointment)

图书管理系统er图,图书管理系统er图关系模式

HandleAppointment
//查看预约情况
**else if** (i == 2) {
ObjectOutputStream toClientOb = **new** ObjectOutputStream(
socket.getOutputStream());
Statement stat = c.conn.createStatement();
String sql = "select
sno,book.bno,sorder,bname,bauthor,bpublish,bsort,btranslator,soverdue "
\+ "from studentorder,book where book.bno=studentorder.bno and sno='"
\+ sno + "' " + "order by sorder desc";
ResultSet res = stat.executeQuery(sql);
ArrayList\ book\ list = **new** ArrayList\ book\ ();
**while** (res.next()) {
book b = **new** book();
b.setNo(res.getString(2));
b.setTime(res.getDate(3));
b.setName(res.getString(4));
b.setAuthor(res.getString(5));
b.setPublis(res.getString(6));
b.setSort(res.getString(7));
b.setTranslator(res.getString(8));
b.setOrderTime(res.getString(9));
list.add(b);
toClientOb.writeObject(list);
HandleCancle
sql = "select \* from studentorder where sno='" + sno
\+ "' and bno='" + bno + "' ";
Statement stat = con.conn.createStatement();
ResultSet res = stat.executeQuery(sql);
//已经取消预约了
**if** (!res.next()) {
toClient.writeInt(2);
//取消预约
**else** {
sql = "begin tran ss "
\+ "delete from studentorder where sno= ? and bno= ? "
\+ "if \@\@error!=0 rollback tran ss else begin "
\+ "update book set bstock=bstock+1 where bno= ? end "
\+ "if \@\@error!=0 rollback tran ss else begin "
\+ "update studentacount set sstats=sstats+1 where sno= ? end commit tran "
\+ "if \@\@error!=0 rollback tran ss";
PreparedStatement pre = con.conn.prepareStatement(sql);
pre.setString(1, sno);
pre.setString(2, bno);
pre.setString(3, bno);
pre.setString(4, sno);
pre.executeUpdate();
toClient.writeInt(1);
pre.close();

借书情况

(StudentBorrow)

图书管理系统er图,图书管理系统er图关系模式

HandleBorrow
//查询借书情况
**if** (i == 1) {
String sql = "select
book.bno,bname,bauthor,btranslator,bpublish,bsort,sborrow,soverdue "
\+ "from studentborrow,book where studentborrow.bno=book.bno and sno='"
\+ num + "' order by sborrow desc";
Statement stat = con.conn.createStatement();
ResultSet res = stat.executeQuery(sql);
ArrayList\ book\ list = **new** ArrayList\ book\ ();
**while** (res.next()) {
book book = **new** book();
book.setNo(res.getString(1));
book.setName(res.getString(2));
book.setAuthor(res.getString(3));
book.setTranslator(res.getString(4));
book.setPublis(res.getString(5));
book.setSort(res.getString(6));
book.setTime(res.getDate(7));
book.setOrderTime(res.getString(8));
list.add(book);

还书情况

(StudentReturn)

图书管理系统er图,图书管理系统er图关系模式

HandleReturn
**if** (i == 1) {
String bno = fromClient.readUTF();
String time = fromClient.readUTF();
Statement stat = c.conn.createStatement();
String sql = "select sno from studentorder where sno='" + sno
\+ "' and bno='" + bno + "'";
ResultSet res = stat.executeQuery(sql);
**if** (res.next()) {
**int** te = 2;//已经预约
toClient.writeInt(te);
//更新预约
**else** {
sql = "insert into studentorder(sno,bno,sorder) values(?,?,?) ";
PreparedStatement pre = c.conn.prepareStatement(sql);
pre.setString(1, sno);
pre.setString(2, bno);
pre.setString(3, time);
pre.executeUpdate();
sql = "begin tran ss "
\+ "update book set bstock=bstock-1 where bno=? "
\+ "if \@\@error!=0 rollback tran ss else begin "
\+ "update book set bacount=bacount+1 where bno=? end "
\+ "if \@\@error!=0 rollback tran ss else begin "
\+ "update studentacount set sstats=sstats-1 where sno=? end commit tran "
\+ "if \@\@error!=0 rollback tran ss ";
pre = c.conn.prepareStatement(sql);
pre.setString(1, bno);
pre.setString(2, bno);
pre.setString(3, sno);
pre.executeUpdate();
toClient.writeInt(1);
pre.close();

预约书籍

(BookInformation)

图书管理系统er图,图书管理系统er图关系模式

HandleAppointment
(对应studentappointment)
sql = "select sstats from studentacount where sno='" +sno+ "'
";//查询剩余可借次数
sql = "select bstock from book where bno='" + bno + "'";//查询书籍库存
sql = "select sno from studentorder where sno='" + sno+ "' and bno='" + bno +
"'";//查询学生id
sql="select \* from book where bno='"+bno+"'";//查询书籍
sql = "select sno from studentborrow where sno='" + sno+ "' and bno='" + bno +
"'";//查询学生借书情况
sql = "insert into studentorder(sno,bno,sorder,soverdue)
values(?,?,?,?)";//插入预约情况
sql = "begin tran ss " + "update book set bstock=bstock-1 where bno=? "
\+ "if \@\@error!=0 rollback tran ss else begin "
\+ "update book set bacount=bacount+1 where bno=? end "
\+ "if \@\@error!=0 rollback tran ss else begin "
\+ "update studentacount set sstats=sstats-1 where sno=? end commit tran "
\+ "if \@\@error!=0 rollback tran ss
";//更新书本库存信息、学生可借次数信息,书本被借次数。
String sql = "select
sno,book.bno,sorder,bname,bauthor,bpublish,bsort,btranslator,soverdue "+ "from
studentorder,book where book.bno=studentorder.bno and sno='"+ sno + "' " +
"order by sorder desc";//查询预约情况

取消预约

(BookInformation)

图书管理系统er图,图书管理系统er图关系模式

HandleCancel
(对应bookimformation)
//查询预约信息
sql = "select \* from studentorder where sno='" + sno+ "' and bno='" + bno + "'
//取消预约
sql = "begin tran ss "
\+ "delete from studentorder where sno= ? and bno= ? "
\+ "if \@\@error!=0 rollback tran ss else begin "
\+ "update book set bstock=bstock+1 where bno= ? end "
\+ "if \@\@error!=0 rollback tran ss else begin "
\+ "update studentacount set sstats=sstats+1 where sno= ? end commit tran "
\+ "if \@\@error!=0 rollback tran ss";
6.2.3管理员界面

管理员端界面

(Admit)

图书管理系统er图,图书管理系统er图关系模式

HandleClient2
ResultSet res = stat
.executeQuery("select aname,asex "
\+ "from admitinformation "
\+ "where ano='"
\+num+"'");
HandleOrder
**if** (i == 1) {
**if** (type.equals("书名")) {
sql += "bname like '%" + key
\+ "%' order by bacount desc";
} **else if** (type.equals("作者"))
sql += "bauthor like '%" + key
\+ "%' order by bacount desc";
**else if** (type.equals("类型"))
sql += "bsort like '%" + key
\+ "%' order by bacount desc";
**else if** (type.equals("译者"))
sql += "btranslator like '%" + key
\+ "%' order by bacount desc";
**else if** (type.equals("出版社"))
sql += "bpublish like '%" + key
\+ "%' order by bacount desc";
**else if** (type.equals("编号"))
sql += "bno like '%" + key + "%' order by bacount desc";
**else if** (type.equals("时间"))
sql += "bintime like '%" + key + "%' order by bacount desc";
ResultSet res = stat.executeQuery(sql);

添加书籍、修改书籍、删除书籍:

(ChangBookInformation)

图书管理系统er图,图书管理系统er图关系模式

图书管理系统er图,图书管理系统er图关系模式

HandleBook
//删除书籍
**if** (i == 1) {
String bno = fromClient.readUTF();
sql = "delete from book where bno=?";
PreparedStatement pre = con.conn.prepareStatement(sql);
pre.setString(1, bno);
pre.executeUpdate();
toClient.writeInt(1);
pre.close();
//更新书籍
**else if** (i == 2) {
String bstock = "" + book.getStock();
sql = "begin tran ss update book set bname=? where bno=? "
\+ "if \@\@error!=0 rollback tran ss else begin "
\+ "update book set bauthor=? where bno=? end "
\+ "if \@\@error!=0 rollback tran ss else begin "
\+ "update book set btranslator=? where bno=? end "
\+ "if \@\@error!=0 rollback tran ss else begin "
\+ "update book set bsort=? where bno=? end "
\+ "if \@\@error!=0 rollback tran ss else begin "
\+ "update book set bpublish=? where bno=? end "
\+ "if \@\@error!=0 rollback tran ss else begin "
\+ "update book set bintime=? where bno=? end "
\+ "if \@\@error!=0 rollback tran ss else begin "
\+ "update book set bstock=? where bno=? end commit tran "
\+ "if \@\@error!=0 rollback tran ss ";
PreparedStatement pre = con.conn.prepareStatement(sql);
pre.setString(1, bname);
pre.setString(2, bno);
pre.setString(3, bauthor);
pre.setString(4, bno);
pre.setString(5, btranslator);
pre.setString(6, bno);
pre.setString(7, bsort);
pre.setString(8, bno);
pre.setString(9, bpublish);
pre.setString(10, bno);
pre.setString(11, bintime);
pre.setString(12, bno);
pre.setString(13, bstock);
pre.setString(14, bno);
pre.executeUpdate();
toClient.writeInt(1);
pre.close();
//增加书籍
**else if** (i == 3) {
sql = "insert into book(bname,bauthor,bpublish,bstock,bintime,bsort,btranslator)
values(?,?,?,?,?,?,?)";
PreparedStatement pre = con.conn.prepareStatement(sql);
pre.setString(1, bname);
pre.setString(2, bauthor);
pre.setString(3, bpublish);
pre.setString(4, bstock);
pre.setString(5, bintime);
pre.setString(6, bsort);
pre.setString(7, btranslator);
pre.executeUpdate();
toClient.writeInt(1);
pre.close();

管理学生界面

(StudentInformation)

图书管理系统er图,图书管理系统er图关系模式

Mstudent
//删除所有预约过期
sql = "select sno,bno from studentorder where
soverdue\ CONVERT(varchar(100),GETDATE(),23)";
res = stat.executeQuery(sql);
**while** (res.next()) {
String sno = res.getString(1);
String bno = res.getString(2);
sql = "begin tran ss "
\+ "delete from studentorder where sno= ? and bno= ? "
\+ "if \@\@error!=0 rollback tran ss else begin "
\+ "update book set bstock=bstock+1 where bno=? end "
\+ "if \@\@error!=0 rollback tran ss else begin "
\+ "update studentacount set sstats=sstats+1 where sno=? end commit tran "
\+ "if \@\@error!=0 rollback tran ss ";
PreparedStatement pre = con.conn.prepareStatement(sql);
String type = fromClient.readUTF();
String key = fromClient.readUTF();
String sorder = " and book.bno=Studentorder.bno and
soverdue\ CONVERT(varchar(100),GETDATE(),23) order by soverdue desc ";
String sborrow = " and book.bno=Studentborrow.bno order by sborrow desc ";
String sborrow2 = " and book.bno=Studentborrow.bno and
soverdue\ CONVERT(varchar(100),GETDATE(),23) order by soverdue desc ";
String sreturn = " and book.bno=StudentReturn.bno order by sreturn desc ";
//单个查询过期
**if** (i == 1) {
sql = "select \* from studentorder,book,StudentInformation "
\+ "where StudentInformation.sno=studentorder.sno and ";
} **else if** (i == 2 \|\| i == 4) {
sql = "select \* from studentborrow,book,StudentInformation "
\+ "where StudentInformation.sno=studentborrow.sno and ";
} **else if** (i == 3) {
sql = "select \* from studentreturn,book,StudentInformation "
\+ "where StudentInformation.sno=studentreturn.sno and ";
**if** (type.equals("学生学号")) {
sql += "StudentInformation.sno like '%" + key + "%' ";
} **else if** (type.equals("学生姓名")) {
sql += "sname like '%" + key + "%'";
} **else if** (type.equals("书籍名称")) {
sql += "bname like '%" + key + "%' ";
} **else if** (type.equals("书籍作者"))
sql += "bauthor like '%" + key + "%' ";
**else if** (type.equals("书籍类型"))
sql += "bsort like '%" + key + "%' ";
**else if** (type.equals("书籍译者"))
sql += "btranslator like '%" + key + "%' ";
**else if** (type.equals("书籍出版社"))
sql += "bpublish like '%" + key + "%' ";
// System.out.println("type");
**else if** (type.equals("书籍编号"))
sql += "book.bno like '%" + key + "%' ";
**else if** (type.equals("进货时间"))
sql += "bintime like '%" + key + "%' ";
ArrayList\ MstudentBean\ list = **new** ArrayList\ MstudentBean\ ();

详情页面

(Mstudent)

图书管理系统er图,图书管理系统er图关系模式

HandleStudent
(对应StudentInformation)
String sno=fromClient.readUTF();
String bno=fromClient.readUTF();
String sql="select \* from StudentInformation "
\+ "where sno="+sno+"";
Statement stat=con.conn.createStatement();
sql="select \* from book where bno='"+bno+"'";
6.2.4超级管理员界面

超级管理员界面

(superAdmit)

图书管理系统er图,图书管理系统er图关系模式

添加、修改管理员信息

(information)

图书管理系统er图,图书管理系统er图关系模式

图书管理系统er图,图书管理系统er图关系模式

HandleInformation
(对应superadmit,yijiaoquanxian,information)
//查询学生基本信息:
sql = "select \* from studentinformation,class,xi,studentacount "
\+ "where studentinformation.no=class.no and class.cno=xi.cno and
studentinformation.sno=studentacount.sno ";
**if** (type.equals("学号/工号"))
sql += "and studentinformation.sno like '%" + key
\+ "%'";
**else if** (type.equals("姓名"))
sql += "and sname like '%" + key + "%'";
//查询管理员基本信息:
sql = "select \* from admitinformation ";
**if** (type.equals("学号/工号"))
sql += "where ano like '%" + key + "%' ";
**else if** (type.equals("姓名"))
sql += "where aname like '%" + key + "%' ";
//修改信息
sql = "begin tran ss "
\+ "update admitinformation set aname=? where ano=? "
\+ "if \@\@error!=0 rollback tran ss else begin "
\+ "update admitinformation set asex=? where ano=? end "
\+ "if \@\@error!=0 rollback tran ss else begin "
\+ "update admitinformation set aemail=? where ano=? end "
\+ "if \@\@error!=0 rollback tran ss else begin "
\+ "update admitinformation set aphone=? where ano=? end "
\+ "if \@\@error!=0 rollback tran ss else begin "
\+ "update admitinformation set aid=? where ano=? end commit tran "
\+ "if \@\@error!=0 rollback tran ss ";
//添加学生账户:
sql = "select sid from studentinformation where sno='"
\+ no + "'"
sql = "insert into studentacount(sno,spassword) values(?,?)";
//添加管理员:
"begin tran "+ "insert into admitinformation(ano,aname,asex,aphone,aid,aemail)
values(?,?,?,?,?,?) "
\+ "if \@\@error!=0 rollback tran ss else begin "
\+ "insert into admitacount(ano,apassword) values(?,?) end commit tran ";
//查看账户密码:
sql = "select \* from studentacount where sno='" + no + "'";
sql = "select \* from admitacount where ano='" + no + "'";

移交权限

(yijiaoquanxian)

图书管理系统er图,图书管理系统er图关系模式

sql = "begin tran "
\+ "insert into superadmitinformation(sno,sname,ssex,sphone,sid,semail)
values(?,?,?,?,?,?) "
\+ "if \@\@error!=0 rollback tran "
\+ "else begin "
\+ "insert into superadmitacount(sno,spassword) values(?,?) "
\+ "if \@\@error!=0 rollback tran "
\+ "else begin "
\+ "delete superadmitinformation where sno='"+oldid+"' end "
\+ "end commit tran ";
HandleOrder
(对应Studentorder)
select \* from book where "bname like '%" + key+ "%' order by bacount desc";
"select \* from book where "bname like '%" + key + "%'";
select \* from book where "bname like '%" + key+ "%' order by bintime desc
6.2.5修改密码与密保

修改密码

(changepassword)

图书管理系统er图,图书管理系统er图关系模式

HandlePassword
(对应changpassword)
修改密码:
分别对应学生,管理员,超级管理员
"update studentacount set spassword=?"+ " where sno=?"
"update admitacount set apassword=?"+ " where ano=?"
"update superadmitacount set spassword=?"+ " where sno=?"

修改密保

(changequestion)

图书管理系统er图,图书管理系统er图关系模式

HandleQuestion
(对应changQuestion)
此处只列举了修改学生
"begin tran sav update studentacount set squestion=? where sno=? "
\+ "if \@\@error!=0 rollback tran sav else begin "
\+ "update studentacount set sanswer=? where sno=? end commit tran "+ "if
\@\@error!=0 rollback tran sav "
7.项目总结 7.1数据库设计

首先需要对数据库进行需求分析。在这一步的时候,要详细考虑到各个功能的实现,以及不同成员之间的联系。一定要考虑周到,不然在之后的过程会有很大的困难。在这一步中,参考了某些的网上图书管理系统,分析他们的需求与功能。再结合当下疫情实际情况分析,最后给出总需求,画出各部分流程图以及系统流程图。

设计概念结构,对用户的需求进行综合,归纳与抽象,形成一个独立于具体DBMS的概念模型。画出ER图。

根据ER图转换成关系模式。在SQLSERVER中建立对应的数据库以及数据表。详情请见建表代码。

7.2程序客户端设计

刚设计的时候还不确定采用什么语言,什么方法去实现这个客户端。最后选择了java
,并且运用jdbc去操控数据库。在客户端GUI界面设置时,开始是打算利用比较新的javafx去完成界面。但是我的系统与javafx不兼容导致安装一直失败,并且javafx对应的scenebuilder也在打开fxml文件时一直报错。无奈只能选择旧一点的swing去编写界面。一开始单纯的通过代码去编写GUI界面,后面发现这样效率并不是特别高,于是找到了一种新的方法,使用windowsbuilder插件能够可视化GUI界面,再与代码相结合,能使GUI界面设计事半功倍。想要整体界面达到一个美观的布局,需要很多时间去一点点调试,这一部分花的时间也是特别长的。设计完GUI界面后,就是要用事件监听去调用服务端的类方法,实现与数据库的链接操作。在这一部第一次尝试查阅了非常多的资料与实例,参考了别人如何实现这一部分的调用。其中MVC三层架构的组织模块方法是本项目中一个很重要的方法。将多个界面都需要用到的模块封装在公共类中,通过这样组织,使代码结构更加合理,也更容易理解。

7.3程序服务端设计

服务端的主要问题就是在于如何与客户端建立起socket连接,并且实现各种不同需求的监听处理。在每一个处理中,要和数据库进行连接,并且采用sql语句对数据库进行修改。主要使用Statement或者PreparedStatement接口执行sql语句。这一部分加深了我对jdbc的理解,以及学会了它的使用方法。

服务器界面:

图书管理系统er图,图书管理系统er图关系模式

下面的服务器端的部分代码:

与客户端建立连接并处理请求:

图书管理系统er图,图书管理系统er图关系模式

链接数据库:

图书管理系统er图,图书管理系统er图关系模式

查询信息:

图书管理系统er图,图书管理系统er图关系模式

7.4 Bug调试

因为代码质量比较一般,因此大大小小的bug其实有挺多的。最常见的bug就是sql语句的错误,导致的服务端崩溃。因为sql语句有很多引号,以及查询条件什么的不清楚,导致数据库无法查询就会引起崩溃。

标题:图书管理系统er图,图书管理系统er图关系模式|http://www.wc10086.cn/412750.html

本文来自网络,不代表本站立场,转载请注明出处!