图书管理系统课程设计报告.docx

上传人:b****7 文档编号:10633101 上传时间:2023-02-22 格式:DOCX 页数:21 大小:929.99KB
下载 相关 举报
图书管理系统课程设计报告.docx_第1页
第1页 / 共21页
图书管理系统课程设计报告.docx_第2页
第2页 / 共21页
图书管理系统课程设计报告.docx_第3页
第3页 / 共21页
图书管理系统课程设计报告.docx_第4页
第4页 / 共21页
图书管理系统课程设计报告.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

图书管理系统课程设计报告.docx

《图书管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《图书管理系统课程设计报告.docx(21页珍藏版)》请在冰豆网上搜索。

图书管理系统课程设计报告.docx

图书管理系统课程设计报告

图书管理管理系统

课程设计

 

设计内容:

图书管理系统

学生班级:

XXXXX

学生姓名:

XXXXXX

 

一、课设目的

通过对图书管理信息系统的系统分析、系统设计、编码和调试等工作的实践,了解管理信息系统的一般设计方法和实现思路,深入了解数据库设计的基本理论及方法。

二、系统功能框图

该系统主要由四大功能模块组成:

用户登录、图书管理、用户管理和借阅查询。

各大功能模块又由一些子功能模块构成,其功能框图如下。

 

三、数据库结构

●需求分析:

依照项目功能,需要建立的表有图书信息,类别,出版社信息,用户信息四大类。

1、系统功能的基本要求:

(1)图书信息的输入,包括图书的书名、出版号、价格、分类、作者、简介、出版社、出版日期、编号、数量等。

(2)图书各种信息的修改与更新;

(3)对于入库、借出、归还、报废、丢失等信息的记录、;

(4)按照一定的条件,查询、统计符合条件的图书信息;至少应该包括每本图书按书名详细信息的查询、按借出归还状态查询、按作者查询、按出版社查询等,至少应该包括按分类、数量、价格等统计图书信息;

(5)对查询、统计的结果打印输出。

2、数据库要求:

在数据库中至少应该包含下列数据表:

(1)图书基本信息表;

(2)图书分类表、出版社分类表等

(3)图书状态表、图书运行记录表

(4)工作人员表

●数据库的E-R模型图:

●E-R图转换成逻辑模型

bookInformation(编号,书名,出版号,价格,出版日期,数量,作者,类别编号,简介)

bookType(图书类别,类别编号)

publishCompany(出版号,出版社)

user(用户名,密码,权限)

●逻辑模型转换成物理模型

选用SQLServer2000,建立用户表:

1、图书信息表

2、图书类型表(Type)

3、出版社信息表(PublishCompany)

4、用户信息表(User)

四、功能模块

图书管理

用户管理:

●具体设计实现

五、界面设计(Java编写)

1、登入窗口

逻辑功能实现代码:

//登录

privatevoidlogin(){

ResultSetrs=null;

try{

Stringsql="Select用户名,密码,权限fromUserTable";

conn=DataBaseConnection.getConnection();

messageGet=conn.prepareStatement(sql);

//messageGet.setString(1,"administor");

rs=messageGet.executeQuery();

Strings=String.valueOf(PasswordTextField.getPassword());//匹配String字符串,getPassword()是字符数组类型的,需要转换成字符串类型。

password=s;

while(rs.next()){

System.out.println(rs.getString("用户名")+"\n"+rs.getString("密码"));//测试用,可以看出有哪些用户进行了查找。

if(UserTextField.getText().equals("")){JOptionPane.showMessageDialog(null,"请输入用户名!

");}

elseif((UserTextField.getText().equals(rs.getString

(1).trim()))){

if(s.equals(rs.getString

(2).trim())){

if(rs.getString(3).trim().equals("管理员")){

operator=rs.getString

(1).trim();

setVisible(false);

newLibrary_Display_Main(conn);

dispose();

return;

}

else

{

JOptionPane.showMessageDialog(null,"Sorry,只有管理员能登陆!

");

return;

}

}

}

}

JOptionPane.showMessageDialog(null,"密码错误!

");//循环完成后还未搞定就密码错误。

}catch(SQLExceptionex){

JOptionPane.showMessageDialog(null,"服务端未响应,请查看服务端是否启动");

ex.printStackTrace();

}

}

2、主界面(下面的图标以此是:

图书入库,图书信息修改,图书类别添加及修改,图书信息查找,系统退出)

 

主要逻辑实现代码:

点击按钮的时候新开辟一个已经做好的类即可。

 

3、用户管理窗口

口令更改

逻辑功能实现代码:

//修改密码(点击“确定”键)

privatevoidAlterUserPassword(StringnewPassword){//修改密码

conn=DataBaseConnection.getConnection();

Stringsql="UpdateUserTableset密码=?

where用户名=?

";

try{

ps=conn.prepareStatement(sql);

ps.setString(1,newPassword);

ps.setString(2,Operator.getText());

ps.executeUpdate();

setVisible(false);

JOptionPane.showConfirmDialog(null,"修改成功","提示",JOptionPane.OK_CANCEL_OPTION);

dispose();

}catch(SQLExceptionex){

ex.printStackTrace();

}

}

privatevoidConfirmActionPerformed(java.awt.event.ActionEventevt){

//确认用户输入的密码

//TODOaddyourhandlingcodehere:

if(!

OldPasswordConfirm.getText().equals(Login.getPassword()))JOptionPane.showMessageDialog(null,"原密码错误,请输入正确密码!

");

elseif(NewPasswordConfirm.getText().equals("")||NewPasswordInput.getText().equals(""))JOptionPane.showMessageDialog(null,"新密码不能为空,请输入你的新密码!

");

elseif(!

NewPasswordConfirm.getText().equals(NewPasswordInput.getText()))

JOptionPane.showMessageDialog(null,"新密码确认不一致,请重新输入正确的新密码!

");

elseif(NewPasswordConfirm.getText().equals(NewPasswordInput.getText())){

StringnewPassword=NewPasswordConfirm.getText();

AlterUserPassword(newPassword);

}

}

3、用户信息添加:

逻辑功能实现代码:

(点击“新增”键)

privatevoidaddUserActionPerformed(java.awt.event.ActionEventevt){

//TODOaddyourhandlingcodehere:

Stringgrant=null;

if(user.getText().equals("")){

JOptionPane.showMessageDialog(null,"用户名不能为空");

return;

}

if(YES.isSelected())grant="管理员";

elsegrant="普通用户";//选中或未选均为普通用户,默认

Stringsql="insertintoUserTable(用户名,密码,权限)values(?

?

?

)";

try{

ps=conn.prepareStatement(sql);

ps.setString(1,user.getText());

ps.setString(2,password.getText());

ps.setString(3,grant);

ps.executeUpdate();

dtm=userTableShow.tableShow(conn);

this.setVisible(false);//暂时还未想到如何直接在表格上更新。

JOptionPane.showConfirmDialog(null,"添加成功","提示",JOptionPane.OK_CANCEL_OPTION);

newuserModified().view(conn);//重新生成界面,将原来的界面去除。

this.dispose();

}catch(SQLExceptionex){

//Logger.getLogger(userModified.class.getName()).log(Level.SEVERE,null,ex);

ex.printStackTrace();

}

}

4、用户信息修改与删除

逻辑功能实现代码:

一:

privateStringgrantGet(){//获得输入的用户信息if(administrator.isSelected())newGrant="管理员";

elsenewGrant="普通用户";//选中或未选均为普通用户,默认

returnnewGrant;

}

二:

privatevoidupdateUser(){//修改用户

Stringsql="UpdateUserTableset用户名=?

密码=?

权限=?

where用户名=?

";//更改数据库用户的代码。

try{

ps=conn.prepareStatement(sql);

ps.setString(1,newUser.getText());

ps.setString(2,newPassword.getText());

ps.setString(3,newGrant);

ps.setString(4,tableMessage[0]);

ps.executeUpdate();

dtm=userTableShow.tableShow(conn);

this.setVisible(false);//暂时还未想到如何直接在表格上更新。

JOptionPane.showConfirmDialog(null,"修改成功","提示",JOptionPane.OK_CANCEL_OPTION);

newuserModified().view(conn);//重新生成界面,将原来的界面去除。

this.dispose();

}catch(SQLExceptionex){

//Logger.getLogger(userModified.class.getName()).log(Level.SEVERE,null,ex);

ex.printStackTrace();

}

}

三:

publicvoiddeleteUser(){//删除用户

Stringsql="deletefromUserTablewhere用户名=?

";

try{

ps=conn.prepareStatement(sql);

ps.setString(1,user.getText());

ps.executeUpdate();

this.setVisible(false);//暂时还未想到如何直接在表格上更新。

JOptionPane.showConfirmDialog(null,"删除成功","提示",JOptionPane.OK_CANCEL_OPTION);

newuserModified().view(conn);//重新生成界面,将原来的界面去除。

this.dispose();

}catch(SQLExceptionex){

Logger.getLogger(userModified.class.getName()).log(Level.SEVERE,null,ex);

}

}

 

4、图书管理

5、图书信息添加

逻辑功能实现代码:

privatevoidaddBookInformation(){//添加图书信息,不过之前先要检查。

if(judgeBookInformation()==false){

return;

}

publishNameConfirm();//确认出版社是否和表中一样。

StringaddBookInformation="InsertintobookInformation(书名,出版号,价格,出版日期,编号,数量,作者,图书类别,简介)values(?

?

?

?

?

?

?

?

?

)";

StringaddPublishInformation="InsertintopublishCompany(出版号,出版社)values(?

?

)";

StringconfirmPublishInformation="select出版号frompublishCompany";

try{

messageGet=conn.prepareStatement(addBookInformation);

messageGet.setString(1,bookName.getText());

messageGet.setInt(2,publishNum);

floatbookPrice=Float.parseFloat(Price.getText());

messageGet.setFloat(3,bookPrice);

messageGet.setDate(4,publishDate);

bookNumber=Integer.parseInt(this.bookNum.getText());//this.bookNum是文本框中的。

messageGet.setInt(5,bookNumber);

messageGet.setInt(6,Integer.parseInt(Num.getText()));

messageGet.setString(7,Author.getText());

messageGet.setString(8,(String)classify.getSelectedItem());

messageGet.setString(9,BookIntroduce.getText());

messageGet.executeUpdate();

//只有在出版号不相等的时候,才插入出版社,否则会出主键重复插入的错误。

messageGet=conn.prepareStatement(confirmPublishInformation,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);//设置为可滚动

rs=messageGet.executeQuery();

inti=0;

while(rs.next()){

if(publishNum==rs.getInt("出版号"))break;

i++;

}

rs.last();

System.out.println(rs.getRow());

if(i

messageGet=conn.prepareStatement(addPublishInformation);

messageGet.setInt(1,publishNum);

messageGet.setString(2,PublishName.getText());

messageGet.executeUpdate();

}catch(SQLExceptionex){

ex.printStackTrace();

}

}

6、图书信息修改

7、图书类别修改

逻辑功能实现代码:

一、(新增类别)

privatevoidaddTypeActionPerformed(java.awt.event.ActionEventevt){

//TODOaddyourhandlingcodehere:

sql="insertintobookType(图书类别,类别编号)values(?

?

)";

StringnewBookType=JOptionPane.showInputDialog("请输入新类别");

getClassifyNum();

messageGet=conn.prepareStatement(sql);

messageGet.setString(1,newBookType);//将新增类型数据写入数据库。

messageGet.setInt(2,classifyNum+1);

messageGet.executeUpdate();

reShowTable();

try{

}catch(SQLExceptionex){

Logger.getLogger(bookTypeAdd_Modify.class.getName()).log(Level.SEVERE,null,ex);

}

}

二:

(修改类别)

privatevoidmodifyTypeActionPerformed(java.awt.event.ActionEventevt){

//TODOaddyourhandlingcodehere//点确认修改后修改类型

sql="UpdatebookTypeset图书类别=?

where图书类别=?

";

if(newBookType.getText().equals("")){

JOptionPane.showMessageDialog(null,"输入类别不能为空!

请重新输入!

");

return;

}

try{

messageGet=conn.prepareStatement(sql);

messageGet.setString(1,newBookType.getText());

messageGet.setString(2,oldBookType.getText());

messageGet.executeUpdate();

reShowTable();

}catch(SQLExceptionex){

Logger.getLogger(bookTypeAdd_Modify.class.getName()).log(Level.SEVERE,null,ex);

}

}

三:

(删除类别)

privatevoidDeleteActionPerformed(java.awt.event.ActionEventevt){

//TODOaddyourhandlingcodehere:

Stringsql="deletefrombookTypewhere图书类别=?

";

try{

messageGet=conn.prepareStatement(sql);

messageGet.setString(1,oldBookType.getText());

messageGet.executeUpdate();

this.setVisible(false);//暂时还未想到如何直接在表格上更新。

JOptionPane.showConfirmDialog(null,"删除成功","提示",JOptionPane.OK_CANCEL_OPTION);

newbookTypeAdd_Modify().view(conn);//重新生成界面,将原来的界面去除。

this.dispose();

}catch(SQLExceptionex){

Logger.getLogger(bookTypeAdd_Modify.class.getName()).log(Level.SEVERE,null,ex);

}

}

 

8、图书信息查询

逻辑功能实现代码:

(查询按钮)

privatevoidselectedButton(java.awt.event.ActionEventevt){

//TODOaddyourhandlingcodehere:

StringselectContent=SelectInput.getText().trim();

if(((String)selectChoose.getSelectedItem()).equals("--请选择查询方式--")||((String)selectChoose.getSelectedItem()).equals("按书名查询"))

bookTableShow.tableShowForSelect(conn,"书名",selectContent);

if(((String)selectChoose.getSelectedItem()).equals("按作者查询"))

bookTableShow.tableShowForSelect(conn,"作者",selectContent);

if(((String)selectChoose.getSelectedItem()).equals("按图书类型查询"))

bookTableShow.tableShowF

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1