数据库课设广工广东工业大学课程设计报告13级.docx
《数据库课设广工广东工业大学课程设计报告13级.docx》由会员分享,可在线阅读,更多相关《数据库课设广工广东工业大学课程设计报告13级.docx(19页珍藏版)》请在冰点文库上搜索。
![数据库课设广工广东工业大学课程设计报告13级.docx](https://file1.bingdoc.com/fileroot1/2023-5/5/59c5cef3-c2ce-4ca5-8c0c-ae6b711077c9/59c5cef3-c2ce-4ca5-8c0c-ae6b711077c91.gif)
数据库课设广工广东工业大学课程设计报告13级
课程设计(论文)
课程名称数据库课程设计
题目名称____快件派送系统___
学生学院计算机学院
专业班级13计算机科学与技术
(一)
学号_____********xx_____
学生姓名_____xxxx___________
指导教师顾国生
2016年1月10日
目 录
1引言
1.1课程设计选题
《快件派送系统》
1.2课程设计的目的
通过数据库系统课程设计,熟悉了SQLSERVER数据库管理系统的结构与组成;掌握了SQLSERVER数据库管理系统的应用技术和的使用;应用工具实践了《快件派送系统》的数据库应用系统的设计方法、开发过程和SQLSERVER数据库的管理与维护。
最终达到掌握数据库管理系统的使用和开发,提高分析问题、解决问题和实践应用能力。
1.3本选题的设计背景
随着计算机技术的发展和物联网时代的到来,人们已经进入了物联时代,亦或是数字化时代。
在数字化的网络环境下,用户希望能够用现代化的手段进行信息查询和记录;服务机构也希望给用户提供更灵活的服务。
快件派送系统正是迎合这一需求而开发的,它旨在探索一种以物联网为基础的派件模式。
通过这种新的模式,为考生创造一种更快捷更透明的派件过程,提高效率和标准化水平。
2系统分析与设计
2.1功能及性能分析
2.1.1功能需求
●从总体上考虑,系统应该实现下列功能:
●用户能够上网查看派件员的信息和快件信息
●派件员能够上网查看需要派送的快件信息和用户信息
●管理员能够添加快件并匹配派件员
2.1.2性能需求
为了保证考试正常进行,系统性能设计应满足如下要求:
保证系统数据安全性:
由于系统通过INTERNET提供服务,开放的环境中系统在权限控制、数据安全、防范内外部攻击破坏等安全措施方面具有良好的应变能力,如在每个登录界面设置了用户信息验证,通过查询登陆界面输入信息是否为数据库中合法用户来实现相应操作;
保证系统数据一致性:
数据库中的所有信息在任何操作下都能够保持一致,如一旦管理员添加了快件信息和派件员信息,在用户和派件员登陆后就可以立即看到,或者一旦有派件任务完成,数据库中的表中要有所变动。
2.1.3工作流程图
在线考试流程图如下所示:
2.2系统的开发运行环境
本系统开发平台:
eclipse4.3(java1.7)+mySQL
本系统运行环境:
Windows7(64位)
2.3系统总体设计
根据快件派送系统的特点,可以将其分为前台和后台两个部分进行设计:
前台主要用于用户和派件员查询信息;
后台主要用于管理员安排配送信息和完成派送信息后派件信息的删除。
在登陆界面,设置了用户身份验证模式,一旦用户输入与数据库中不符的信息,系统将给出提示信息,以保证该系统的安全性。
用户和派件员属于前台只能前台操作,管理员可以后台操作。
3数据库设计
3.1数据库概念结构
3.1.1数据库中各表的数据描述如下:
根据前面所作的需求分析本系统的实体及其属性如下:
固定管理员信息暂不构建表。
用户(用户名,密码,真实姓名,手机号码,所在区域)
派件员(用户名,密码,真实姓名,手机号,派送时间段,派送区域)
快件(快件编号,物品名,大小,寄出区域,配送用费)
3.1.2整体E-R图
全局E-R图如下:
3.2数据库逻辑结构
3.2.1关系模型及优化
用户表(用户名,密码,真实姓名,手机号码,所在区域)
派件员表(派件员名,密码,真实姓名,手机号,派送时间段,派送区域)
快件表(快件编号,物品名,重量,寄出区域,配送用费)
快件对派件员表(快件编号,派件员名,是否完成)
快件对用户表(快件编号,用户名,是否领取)
都属于3NF级或以上。
3.2.2视图的设计
本系统用到的视图其实只有一种,但是用户和派件员都需要查看,所以面向不同的人出现两个VIEW:
1.派件员查看用户(以派件员名为group,按照升序排列)
2.用户查看派件员(以用户为group,按照升序排列)
3.3数据库的实现
3.3.1表
快件派送系统的数据库中共包含了5个数据表。
用户信息表(U)用来保存用户信息,该表的结构如下:
派件员信息表(P)用来保存派件员的信息,该表的结构如下:
快件信息表(C)用来存储快件的相关信息,该表的结构如下:
派件员派件关系表(CP)用来保存派件员和快件的相关信息,该表的结构如下:
用户收件关系表(CU)用来存储用户和快件的相关信息,该表的结构如下:
3.3.2安全性设计
该系统的用户有三种:
管理员、用户和派件员,只有管理员才有权限添加用户、添加派件员,添加快递并且与用户派件员匹配,并且更改信息;用户能够查看快件信息和派件员信息,派件员可以查看快件信息和用户信息并且可以更新派件状态(派送转状态和完成状态)。
所以安全性比较高。
3.3.3一致性设计
主要是对数据库表的三种完整性进行设计:
实体完整性:
通过设置主键都已实现。
参照完整性:
题库表中的试卷号在本表中不做主码,但在试卷表中做主码,所以为题库表的外码,对Insert和Update强制级联更新和级联删除相关记录;成绩表中的考号对应考生表的考号,试卷号对应试卷表中的试卷号。
用户自定义完整性:
在该系统中,设置了是否完成派送和是否登记完成派送必须是Y或者N的ENUM约束。
4数据库代码与图形界面
4.1登录模块
该模块包括三个使用者选择。
任何使用者要使用快件派送系统提供的功能,那么在使用之前必须登录。
管理员设置成一个(管理员名:
admin,密码:
admin)。
用户和派件员只要输入用户名、密码就可以了,输入的以上两项与数据库中保存的相符,则表明用户登录成功,打开各自的界面;
如果不符,系统会提示错误。
数据库代码:
privatevoidActionuser(){//GEN-FIRST:
event_jButton1ActionPerformed
ResultSetrs=null;
PreparedStatementps=null;
try{
Class.forName("com.mysql.jdbc.Driver");
StringurlName="jdbc:
mysql:
//localhost:
3306/kauijianpaisong";
Connectioncon=DriverManager.getConnection(urlName,"root","1234");
ps=con.prepareStatement("select*fromuwhereuname=?
",ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);//
ps.setString(1,loginname.getText());
rs=ps.executeQuery();
if(rs.first()==false){
JLabelmsgLbl1=newJLabel("用户名不存在!
");
JOptionPane.showMessageDialog(null,msgLbl1,"ERROR",JOptionPane.ERROR_MESSAGE);
}else{
Stringstr2=newString(loginpassword.getPassword());
if(str2.trim().equals(rs.getString("password").trim())==false){
JLabelmsgLbl1=newJLabel("密码不正确!
");
JOptionPane.showMessageDialog(null,msgLbl1,"ERROR",JOptionPane.ERROR_MESSAGE);
}else{
JLabelmsgLbl1=newJLabel("登陆成功,欢迎使用!
");
JOptionPane.showMessageDialog(null,msgLbl1,"Welcome",JOptionPane.INFORMATION_MESSAGE);
Useruser=newUser(loginname.getText());
user.setVisible(true);
rs.close();
con.close();
//UMainmyFrame=newUMain();
//myFrame.setLocation(400,100);
//myFrame.setVisible(true);
this.dispose();
}
}
}catch(Exceptione){
System.out.println("数据库加载失败!
");
}
}
privatevoidActionp(){//GEN-FIRST:
event_jButton1ActionPerformed
try{
Class.forName("com.mysql.jdbc.Driver");
StringurlName="jdbc:
mysql:
//localhost:
3306/kauijianpaisong";
Connectioncon=DriverManager.getConnection(urlName,"root","1234");
PreparedStatementps=con.prepareStatement("select*frompwherepname=?
",
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
ps.setString(1,loginname.getText());
ResultSetrs=ps.executeQuery();
if(rs.first()==false){
JLabelmsgLbl1=newJLabel("用户名不存在!
");
JOptionPane.showMessageDialog(null,msgLbl1,"ERROR",JOptionPane.ERROR_MESSAGE);
}else{
Stringstr2=newString(loginpassword.getPassword());
if(str2.trim().equals(rs.getString("password").trim())==false){
JLabelmsgLbl1=newJLabel("密码不正确!
");
JOptionPane.showMessageDialog(null,msgLbl1,"ERROR",JOptionPane.ERROR_MESSAGE);
}else{
JLabelmsgLbl1=newJLabel("登陆成功,欢迎使用!
");
JOptionPane.showMessageDialog(null,msgLbl1,"Welcome",JOptionPane.INFORMATION_MESSAGE);
Pp=newP(loginname.getText());
p.setVisible(true);
rs.close();
con.close();
this.dispose();
}
}
}catch(Exceptione){
System.out.println("数据库加载失败!
");
}
}
privatevoidActionadmin(){//GEN-FIRST:
event_jButton1ActionPerformed
Stringadminstring=loginname.getText();
Stringadminchar=newString(loginpassword.getPassword());
if(adminstring.equals("admin")){
if(adminchar.equals("admin")){
JLabelmsgLbl1=newJLabel("登陆成功,欢迎使用!
");
JOptionPane.showMessageDialog(null,msgLbl1,"Welcome",JOptionPane.INFORMATION_MESSAGE);
Adminadmin=newAdmin();
admin.setVisible(true);
this.dispose();
}else{
JLabelmsgLbl1=newJLabel("密码不正确!
");
JOptionPane.showMessageDialog(null,msgLbl1,"ERROR",JOptionPane.ERROR_MESSAGE);
}
}else{
JLabelmsgLbl1=newJLabel("此管理员不存在!
");
JOptionPane.showMessageDialog(null,msgLbl1,"ERROR",JOptionPane.ERROR_MESSAGE);
}
}
}
4.2管理员管理模块
4.2.1进入系统后,管理员首先界面,可以查看用户信息,派件员信息,快件信息,并且更改快件完成情况,即把完成的快件,信息acomp改为Y;
数据库代码:
查询用户)
Statementstmt=con.createStatement();
ResultSetrs=stmt.executeQuery("SELECTu.uname,u.password,u.realname,u.phoneno,u.partFROMu");
booleanmoreRecords=rs.next();//定位到达第一条记录
DefaultTableModeldtm=newDefaultTableModel(row,rowname);
dtm.setRowCount(0);
查询派件员)
Statementstmt=con.createStatement();
ResultSetrs=stmt.executeQuery("SELECTp.pname,p.password,p.realname,p.phoneno,p.time,p.topartFROMp");
booleanmoreRecords=rs.next();//定位到达第一条记录
DefaultTableModeldtm=newDefaultTableModel(row,rowname);
dtm.setRowCount(0);
查询快件)
Statementstmt=con.createStatement();
ResultSetrs=stmt.executeQuery("SELECTu.uname,u.password,u.realname,u.phoneno,u.partFROMu");
booleanmoreRecords=rs.next();//定位到达第一条记录
DefaultTableModeldtm=newDefaultTableModel(row,rowname);
dtm.setRowCount(0);
修改快件完成状态)
PreparedStatementps=con.prepareStatement("selectcno,pname,acompfromcpwherecno=?
");
rs.updateString("acomp","Y");
rs.updateRow();
4.2.2点击信息管理高级界面可以进去添加/修改用户、添加/修改派件员、添加/修改快件和匹配快件和用户和派件员。
数据库代码:
添加用户):
INSERTINTOuVALUES(taxtaddu1,taxtaddu2,taxtaddu3,taxtaddu4,
taxtaddu5);
修改用户):
UPDATEuSETpassword=taxtchu2,realname=taxtchu3,
phoneno=taxtchu4,part=taxtchu5whereuname=taxtchu1;
删除用户):
DELETEFROMuWHEREunmane=taxtdelu1;
添加派件员):
INSERTINTOpVALUES(taxtaddp1,taxtaddp2,taxtaddp3,taxtaddp4,
taxtaddp5,taxtaddp6);
修改派件员):
UPDATEpSETpassword=taxtchp2,realname=taxtchp3,
phoneno=taxtchp4,time=taxtchp5topart=taxtchp6wherepname=taxtchp1;
删除派件员):
DELETEFROMpWHEREpnmane=taxtdelp1;
添加快件):
INSERTINTOcVALUES(taxtaddc1,taxtaddc2,taxtaddc3,taxtaddc4,
taxtaddc5);
修改快件):
UPDATEcSETcname=taxtchc2,weight=taxtchc3,frompart=taxtchc4,cost=taxtchp5wherecno=taxtchp1;
删除用户):
DELETEFROMcWHEREcno=taxtdelc1;
添加快件关联):
INSERTINTOcpVALUES(taxtaddcp1,taxtaddcp2,”N”);
INSERTINTOcuVALUES(taxtaddcu1,taxtaddcu2,”N”);
4.3用户模块
此模块中用户可以查询快件信息派件员信息。
数据库代码:
PreparedStatementps=con.prepareStatement("SELECTo,ame,cu.pcomp,p.realname,p.phoneno,p.time,p.topartFROMcINNERJOINcuONo=oINNERJOINcpONo=oINNERJOINpONcp.pname=p.pnameINNERJOINuONcu.uname=?
");
4.4派件员模块
派件员正确登录后,进入管理界面,可以查看快件任务和用户信息并且提供更改快件派送状态信息的能力:
数据库代码:
PreparedStatementps=con.prepareStatement("SELECTo,ame,cu.pcomp,u.realname,u.phoneno,c.weight,cp.acompFROMcINNERJOINcuONo=oINNERJOINcpONo=oINNERJOINuONcu.uname=u.unameINNERJOINpONcp.pname=?
");
修改快件派送状态):
UPDATEcuSETpcomp=“Y”wherecno=taxtfilesbox;
窗口基本功能都可以使用。
五、结 论
本系统经过测试,能完成快件派送系统的基本功能,用户、派件员和快件的添加、用户、快件派件员的删除,用户、派件员、管理员查看信息,管理员修改用户派件员快件信息(增、删、查、改)。
但面型实际过程中还有很多不足之处。
用eclipse中加载数据库驱动JDBC,安装MYSQL和其图形操作界面,eclipse中与数据库链接语言的实际应用,等等。
学习了很多东西,对于技术上的东西有很大提升,很好的提高了熟练度。
学无止境尤其是在使用Jtable加载数据库数据的时候特别难作,花费了大量时间。
参考资料
[1]《Java技术及其应用》李卫华编著清华大学出版社2009.6
[2]《数据库系统概论》王珊、萨师煊著高等教育出版社2013.5
[3]XX()、等网站
在文档最后我添加了一些个人的总结和心得,应该会对大家有些帮助请注意看,另外本实验的代码已经被我上传至CSDN网站上,需要参考的同学请去搜索。
本人是希望以图形界面来提交的,制作过程是:
首先由java>eclipse>mysql>navicat(数据库图形界面软件)>Windowsbuilder(eclipse插件)>软件准备完毕
制作过程:
建议首先自己以有图形界面的思维规划自己要做东西,然后以没有图形界面的形式先做一遍,专心做图形界面。
Jtable,真不是个东西。