以下为《图书管理系统课程设计报告1》的无排版文字预览,完整格式请下载
下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。
系统概述
(20%)
功能介绍
(40%)
创新点
(20%)
总结与展望
(10%)
卷面
(10%)
总分
XX农业大学***
课程设计报告
系 别 大***
专 业 计算机科学与技术C
年 级 2019级
课程名称 Java程序课程设计
学 号 ***028
姓 名 李某某
承担实习单位 计算机教学实验中心
指导教师 牟莉莉
2020年 12 月 1 日
教 务 处目录
目录 2
1.课程设计题目与要求 3
1.1设计题目 3
1.2设计目的 3
1.3设计要求 3
2.总体设计 4
2.1开发环境 4
2.2功能模块 4
2.3系统总体框架图 4
3.详细设计 5
3.1数据结构设计 5
3.2模块设计 5
4.运行结果 8
4.1登陆界面 8
4.2整体菜单 8
4.3图书的添加修改与删除 9
4.4 添加读者删除读者读者信息修改及读者查询 9
4.5图书的借出归还及查询 11
4.6 修改***
5.存在问题 12
6.创新点 13
7.总结与展望 13
8.参考文献 13
附录(源代码): 14
1.课程设计题目与要求
1.1设计题目
(1)图书借阅管理系统
1.2设计目的
《Java程序课程设计》是计算机科学与技术专业的课程设计课程,该课程主要是要求学生根据所学的Java程序设计基础原理与程序设计的知识,对图书借阅管理系统进行系统的需求分析和系统设计,并完成界面及后台程序编码和调试等题目要求的工作。通过Java程序课程设计,使学生深刻把握Java语言的重要概念及其面向对象的特性,掌握面向对象的程序设计思想和Eclipse开发工具的应用;巩固所学java语言知识,拓宽常用类库的应用、数据库的连接使用及异常处理,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,培养团队合作意识,为今后从事实际工作打下坚实的基础,为今后学习其他专业课程做好准备。
1.3设计要求
(1)图书信息包括以下数据:登录号、书名、作者、分类号、出版单位、出版时间、价格等;
借还书信息包括以下数据:读者姓名、借书证号、借书日期、还书日期;
(2)系统实现的基本功能有:
a.图书信息录入模块(使用文件或数据库组织数据;录入信息如有重复应给出提示)
b.读者信息录入模块(使用文件或数据库组织数据;录入信息如有重复应给出提示)
c.借书管理模块(借书时需要输入借书日期、书号、借书证号)
d.还书管理模块(还书时需要输入还书日期、书号、借书证号)
e.图书查询模块(按读者姓名查询、按书名查询等至少提供两种查询方法)
*f.创新(自拟)功能:程序实现的其它功能由个人自拟
2.总体设计
2.1开发环境
开发平台:eclipse-jee-2019-03 mysql-5.6.24-win32 Navicat for MySQL 10.1
操作系统:Windows 10
2.2功能模块
该程序共有五个模块:登陆界面模块、主界面模块、图书管理模块、读者管理模块、图书借还模块,其中图管理模块有:图书的增、删、改、查;读者管理界面有:读者的增、删、改、查;其中登陆界需要调用user数据库表,图书管理模块需要调用book数据库表,读者管理模块需要调用reader数据库表,图书借还模块需要调用borrow数据库表。
2.3系统总体框架图
3.详细设计
3.1数据结构设计
图书管理系统数据结构:登陆界面模块、主界面模块、图书管理模块、读者管理模块、图书借还模块其中图管理模块有:图书的增、删、改、查;读者管理界面有:读者的增、删、改、查。
3.2模块设计
此程序主要有五个功能,包括以下几个部分:
登陆界面模块:用户登录;
主界面模块:显示各项功能;
图书管理模块:管理图书的增加、修改、查找、删除等功能;
读者管理模块:管理读者的增加、修改、查找、删除等功能;
图书借还模块:管理图书的借还等功能。
以下分别是各项功能的功能模块图。
3.2.1登录界面
点击登陆界需要调用user数据库表,当输入的用户名及密码对比成功时即可顺利登入该系统;当对比失败时会给出提示,该系统提供一共公用的普通用户账号(不能使用基础维护和借阅管理菜单;用户名:anonymous***)管理员账户需要后台人员添加。3.2.2系统3.2.2主界面
主系统界面主要用来链接打开各项小功能。
3.2.3图书管理模块
图书管理模块包括图书的添加、修改、删除、查找四项功能;此处需要调用book数据库表。每做一次添加或修改或删除都会对book数据库表进行一次修改。添加图书时会向book数据库表写入新的记录;修改图书时会修改book数据库表中的内容;删除图书时会在book数据库表中删除一条记录;查找图书会读取book数据库表中的内容。
4.运行结果
4.1登陆界面
4.2整体菜单
4.3图书的添加修改与删除
4.4 添加读者删除读者读者信息修改及读者查询
4.5图书的借出归还及查询
4.6 修改***.存在问题
在此次课程设计中,我遇到了一些问题,如:对于面向对象的方法了解不够透彻,运用到实际的软件开发中存在着困难,对于Java语言,只学习到了一些最基本的知识,这导致编写程序时经常出现一些语法错误,而且在短时间内用Java语言设计一个具体的系统是一个较大的挑战,并且图形化界面现学现写的,设计的较为简陋,在程序中存在一些语句问题。对于以上问题,自己有清楚的认识,解决方法是需要大量阅读相关的书籍,还需要跟精通此方面的老师和同学交流,取其精华,并且希望在以后的时间里把这次课程设计的程序继续优化解决系统中存在的一些bug,并加入更多的功能模块。?
6.创新点
在我们的程序中不需要用户自己输入时间,而是程序自动调取系统的时间,这样做的好处时可以取得更精确的借书时间,防止了填写错误的情况发生。另外我们的查询系统支持模糊查询,这样可以更方便用户进行查询操作。
7.总结与展望
通过这次的实训,我学到了很多:
首先,对JAVA识比以前有了更深的了解。在这之前由于种种原因我JAVA学的很不好,编程我几乎写不出来。但经过这次的实训,我对JAVA的理解,虽然还有很多都不懂,但我会在今后的实训和学习中加以学习了解,力求弄懂,增强自己对JAVA的理解。
其次,在这次的实训中我的动手操作能力有了一点的提高,刚开始的时候JDK的配置,数据库的安装都出现了一定的问题,JAVA 可实话开发工具的不熟悉, 所以开始的时候进程很慢,时间都用在了JDK的配置,数据库的安装以及熟悉JAVA可视化开发工具上,但付出有了回报,成功的配置了JDK,安装了数据库,熟悉了JAVA可视化开发工具,总的说来,自己还是有一定的收获的。因为自己的动手操纵能力得到了提高。
最后是团队协作。在整个项目完成过程中团队协作有着不可替代的作用。从在刚拿到项目时对项目的分析到最后的项目完结的都有一定的体现。刚拿到项目时,我们团队进行了分析,并分配了各自的任务。当我们其中一人遇到问题的时候,我们其他人都会去帮忙,效率提升了很多。但可能由于不是一个宿舍的,大家彼此间都不是很了解,所以交流中还是存在了一定的问题。
在这次的实训当中我收获颇丰。但仅仅靠这两个周的学习还是远远不够的。所以在以后的学习中我会更加努力,提高自己的能力,让自己在以后的社会道路上打下坚实的基础。
此次只实训了短短的两个周。虽说时间很短,但其中的每一天都使我收获很大、受益匪浅,它不但极大地加深了我对一些理论知识的理解,不仅使我在理论上对Java有了全新的认识,在实践能力上也得到了提高,真正地做到了学以致用,更学到了很多做人的道理,对我来说受益非浅。除此以外,我知道了什么叫团队,怎样和团队分工合作;同时我还学会了如何更好地与别人沟通,如何更好地去陈述自己的观点,如何说服别人认同自己的观点。这也是第一次让我亲身感受到理论与实际的相结合,让我大开眼界。也是对以前所学知识的一个初审吧!这次实训对于我以后学习、找工作也是受益菲浅的,在短短的三周中相信这些宝贵的经验会成为我今后成功的重要的基石;这对于我的学业,乃至我以后人生的影响无疑是极其深远的。
8.参考文献
[1]黑马程序员,Java基础入门(第2版),XX:清华大学出版社.
[2]姚某某,Java语言程序设计,XX:电子工业出版社.
[3]传智播客高教产品研发部,MySQL数据库入门,XX:清华大学出版社.
附录(源代码):
package login;
//DbOp.java;
//package PublicModule;
import java.sql.*;
import javax.swing.JOptionPane;
public class DbOp{
private static String driver="com.mysql.jdbc.Driver";
private static String url="jdbc:mysql://localhost:3306/library?useUnicode=true&characterEncoding=UTF-8";
private static Connection con=null;
private DbOp(){
try{
if(con==null){
Class.forName(driver);
con=DriverManager.getConnection(url,"root","");
}
}catch(Exception e){
JOptionPane.showMessageDialog(null,"数据库未能打开!");
System.out.println(e.getMessage());
}
}
public static ResultSet executeQuery(String sql){
ResultSet rs=null;
try{
if(con==null){
new DbOp();
}
rs=con.createStatement().executeQuery(sql);
}catch(SQLException e){
JOptionPane.showMessageDialog(null,"数据查询失败!");
rs=null;
}
return rs;
}
public static int executeUpdate(String sql){
int a=0;
try{
if(con==null){
new DbOp();
}
a= con.createStatement().executeUpdate(sql);
}catch(SQLException e){
JOptionPane.showMessageDialog(null,"数据库更新失败!");
a= -1;
}
return a;
}
public static void close(){
try{
if(con!=null){
con.close();
con=null;
//JOptionPane.showMessageDialog(null,"数据库已关闭!");
}
}catch(SQLException e){
JOptionPane.showMessageDialog(null,"数据库未打开!");
}
}
}
package login;
//GlobalVar.java
public class GlobalVar{
public static String login_user;
public static String manage;
}
package login;
//Login.java
//import PublicModule.DbOp;
import java.awt.*;
import javax.swing.*;
import libraryManage.ShowMain;
import java.awt.event.*;
import java.sql.*;
import javax.swing.event.AncestorListener;
import javax.swing.event.AncestorEvent;
public class Login extends Frame{
Toolkit tool= getToolkit();
String url="src/img/login11.png";
Image img=tool.getImage(url);
private JProgressBar progressBar;
private TextField text_user;
private TextField text_pass;
private JLabel title;
private JLabel userlb;
private JLabel passlb;
private JLabel register;
public void paint(Graphics g){
g.drawImage(img,0,0,this);
super.paint(g);
}
public Login(){
this.setTitle("Login");
this.setLayout(null);
this.setSize(1129,542);
setResizable(false);
//标签设置
userlb=new JLabel("\u7528\u6237\u540D:");
passlb=new JLabel("\u5BC6 \u7801:");
title=new JLabel("图书信息管理系统");
JButton sure=new JButton("\u767B\u5F55");
sure.setFocusPainted(false);
JButton cancel=new JButton("\u53D6\u6D88");
cancel.setFocusPainted(false);
//设置透明度
sure.setContentAreaFilled(false);
cancel.setContentAreaFilled(false);
//设置边框
sure.setBorder(BorderFactory.createLineBorder(Color.black));
cancel.setBorder(BorderFactory.createLineBorder(Color.black));
register=new JLabel("");
text_user=new TextField();
text_pass=new TextField();
title.setFont(new Font("楷体",Font.BOLD,30));
userlb.setFont(new Font("微软雅黑",Font.PLAIN,20));
passlb.setFont(new Font("微软雅黑",Font.PLAIN,20));
title.setBounds(700,140,400,50);
userlb.setBounds(650,200,110,35);
passlb.setBounds(650,250,100,35);
text_user.setBounds(770,200,200,35);
text_pass.setBounds(770,250,200,35);
sure.setBounds(770,300,100,35);
cancel.setBounds(890,300,100,35);
register.setBounds(770,370,200,20);
text_user.setFont(new Font("楷体",Font.BOLD,20));
text_pass.setFont(new Font("楷体",Font.BOLD,20));
text_pass.setEchoChar('*');
sure.setFont(new Font("楷体",Font.PLAIN,20));
cancel.setFont(new Font("楷体",Font.PLAIN,20));
register.setFont(new Font("楷体",Font.PLAIN,15));
this.add(title);
this.add(register);
this.add(text_user);
this.add(text_pass);
this.add(userlb);
this.add(passlb);
this.add(sure);
this.add(cancel);
sure.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
sureActionListener(e);
}
});
cancel.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
DbOp.close();
dispose();
}
});
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
DbOp.close();
dispose();
}
});
this.setLocationRelativ 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 e) {
JOptionPane.showMessageDialog(null, "借书日期查询失败");
} catch (ParseException e2) {
JOptionPane.showMessageDialog(null, "借书日期异常");
}
return readerdate;
}
public void setInitialize() {
for (int i = 0; i < showoption.length; i++) {
showoption[i].setText("xxxxx");
}
bookidtxt.setText("");
readeridtxt.setText("");
bookidtxt.setEditable(true);
readeridtxt.setEditable(true);
borrowbtn.setEnabled(false);
}
public static void main(String[] args){
new Back();
}
}
[文章尾部最后500字内容到此结束,中间部分内容请查看底下的图片预览]请点击下方选择您需要的文档下载。
以上为《图书管理系统课程设计报告1》的无排版文字预览,完整格式请下载
下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。