数据库课设广工广东工业大学课程设计报告13级.docx

上传人:b****2 文档编号:3177046 上传时间:2023-05-05 格式:DOCX 页数:19 大小:600.11KB
下载 相关 举报
数据库课设广工广东工业大学课程设计报告13级.docx_第1页
第1页 / 共19页
数据库课设广工广东工业大学课程设计报告13级.docx_第2页
第2页 / 共19页
数据库课设广工广东工业大学课程设计报告13级.docx_第3页
第3页 / 共19页
数据库课设广工广东工业大学课程设计报告13级.docx_第4页
第4页 / 共19页
数据库课设广工广东工业大学课程设计报告13级.docx_第5页
第5页 / 共19页
数据库课设广工广东工业大学课程设计报告13级.docx_第6页
第6页 / 共19页
数据库课设广工广东工业大学课程设计报告13级.docx_第7页
第7页 / 共19页
数据库课设广工广东工业大学课程设计报告13级.docx_第8页
第8页 / 共19页
数据库课设广工广东工业大学课程设计报告13级.docx_第9页
第9页 / 共19页
数据库课设广工广东工业大学课程设计报告13级.docx_第10页
第10页 / 共19页
数据库课设广工广东工业大学课程设计报告13级.docx_第11页
第11页 / 共19页
数据库课设广工广东工业大学课程设计报告13级.docx_第12页
第12页 / 共19页
数据库课设广工广东工业大学课程设计报告13级.docx_第13页
第13页 / 共19页
数据库课设广工广东工业大学课程设计报告13级.docx_第14页
第14页 / 共19页
数据库课设广工广东工业大学课程设计报告13级.docx_第15页
第15页 / 共19页
数据库课设广工广东工业大学课程设计报告13级.docx_第16页
第16页 / 共19页
数据库课设广工广东工业大学课程设计报告13级.docx_第17页
第17页 / 共19页
数据库课设广工广东工业大学课程设计报告13级.docx_第18页
第18页 / 共19页
数据库课设广工广东工业大学课程设计报告13级.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据库课设广工广东工业大学课程设计报告13级.docx

《数据库课设广工广东工业大学课程设计报告13级.docx》由会员分享,可在线阅读,更多相关《数据库课设广工广东工业大学课程设计报告13级.docx(19页珍藏版)》请在冰点文库上搜索。

数据库课设广工广东工业大学课程设计报告13级.docx

数据库课设广工广东工业大学课程设计报告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,真不是个东西。

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2