食品消费管理系统.docx
《食品消费管理系统.docx》由会员分享,可在线阅读,更多相关《食品消费管理系统.docx(29页珍藏版)》请在冰豆网上搜索。
食品消费管理系统
得分:
课程设计报告
食品消费卡管理系统设计
姓名
班级
学号
课程名称
指导教师
2015年1月1日
1食品消费卡管理系统应用分析
1.1食品消费卡管理系统的应用背景
依据现阶段食堂食品的实际业务情况,通过对整个系统的需求分析、概念模型设计、逻辑模型设计到物理数据库模型设计与实现等各环节进行分析与描述。
从而以此为基础,建立起科学、高效的管理系统,实现食品管理,餐厅管理以及消费管理的功能。
最终达到方便管理人员对食品,消费等的管理,实现食堂管理的高效化和统一化,和提高管理方便性及可行性的目的。
1.2学生管理系统应用需求
1.2.1功能需求
通过对学生使用消费卡在学校餐厅的消费流程进行分析,完成具有食品管理、消费管理、餐厅管理等相关功能的小型数据库管理应用系统。
完成人员、消费卡、餐厅、食品价目表的维护完成消费表的生成,并计算消费折扣。
按人员、时间、餐厅统计计算消费总额按食品类别、时间、餐厅统计计算消费总额等功能。
1.2.2数据处理需求
系统主要处理需求有如下几点:
1)对基本信息管理:
食品信息、学生信息、餐厅信息等;
2)对食品管理:
食品登记、食品查询、食品消费等;
3)对消费管理:
消费登记、消费记录查询等。
1.3食品消费卡管理系统功能分析
从数据库获得相应的权限后,登录进去,然后对食品表,消费卡,餐厅表等进行增,删,改,查的操作。
功能流程图如下:
表1功能流程图
2总体设计
2.1数据库概念设计
本系统主要有食品,餐厅和消费卡三个实体集,一个餐厅可以有多种食品,一种食品也可以在不同餐厅中,这两个实体集之间是多对多联系;一个消费人员可以点多道菜,每道菜可以被多个消费人员点,这两个实体集间关系是多对多关系;一个消费人员有一张消费卡,一张消费卡只能被一个人拥有,这两个实体集之间关系是一对一。
全局E-R图如下:
表2全局E-R图
实体装换为所对应的关系模式:
食品(食品编号,菜名,菜价,食品类型)
餐厅(餐厅编号,餐厅名称,日销售额)
消费卡(学号消费卡编号联系方式)
消费人员(学号姓名班级性别)
联系转化为所对应的关系模式:
使用(餐厅编号,消费卡编号)
拥有(学号,消费卡编号)
购买(食品编号,消费卡编号,学号)
出售(餐厅编号,食品编号)
2.2应用软件系统功能划分
1)消费卡管理
显示消费卡的相关信息,便于管理员进行下一步操作。
2)菜单管理
显示菜单的相关信息,便于管理员进行下一步操作。
3)食品管理
显示食品表的相关信息,便于管理员进行下一步操作。
4)餐厅管理
显示餐厅表的相关信息,便于管理员进行下一步操作。
3系统详细设计
3.1数据库关系模式设计
实体完整性约束:
食品信息(食品编号,菜名,菜价,食品类型)
餐厅信息(餐厅编号,餐厅名称,日销售额)
消费卡信息(学号姓名班级性别消费卡编号联系方式)
消费记录信息(餐厅号,学号,,菜数量,消费额,消费记录)
3.2软件模块设计
软件分为四大模块,分别为消费卡模块,菜单模块,食品模块,登陆信息模块,餐厅模块。
3.3各模块功能
消费卡模块功能:
查询,添加,删除,修改消费卡信息
菜单模块功能:
查询,修改,添加,删除食品编号,菜名,菜价,食品类型。
食品模块功能:
包含所有食品编号菜名菜价等。
登陆信息模块功能:
使用登陆账号,密码登入食品消费卡管理系统。
消费记录模块功能:
查询部分消费者的消费信息。
4系统实现
4.1登录界面设计
管理员登录时,只有输入正确的账号和密码,才能进入,正确的账号和密码存储在数据库中,账号或密码错误时,也会有相应的提示,登录界面如下:
表3登录界面
输入正确的账号和密码,然后即可进入。
4.2功能界面和食品管理设计
登录进入之后,便会出现如下界面:
表4主界面
主界面显示的是食品表的相关信息,由菜单栏和相应的按钮组成,可以清楚的看到食品表的结构和详细信息,也可以进行食品表的相关操作。
4.3消费卡管理设计
消费卡管理的界面设计如下:
表5消费卡界面
通过上图,我们可以清楚的看到消费卡表的详细信息,通过查询,添加,修改,删除按钮可以对表进行操作,满足实际需求。
4.4消费记录
消费记录界面设计如下:
表6消费记录
在数据库中,通过复杂查询,可以得到上述的信息,通过上表,我们能够详细的看到每个同学的消费情况,可以方便管理员的管理。
4.5餐厅管理
餐厅管理的界面设计如下:
表7餐厅表
通过上图可知餐厅表的详细信息,管理员可通过相应的按钮对餐厅表进行相关操作。
5实验总结
通过本次课程设计,明白了实验的重要性,不管你的理论知识学习的如何,都必须通过不断的练习才能对知识有更深刻的理解。
我不但加深了对数据库基础理论和基本知识的理解,更是学习和实践了如何对食品销售管理系统数据库进行设计。
通过实战,更详细的了解了系统开发的具体流程。
通过对系统的需求分析、概念模型设计、逻辑模型设计到物理数据库模型设计与实现等各环节的实施和设计,学习和理解了开发和设计一个小型数据库系统时设计数据库系统模型的基本方法。
虽然实际设计操作过程中还是出存在很多不足,但是通过亲自动手和动脑,运用数据库解决实际问题的能力仍得到了一定提高。
附录
packageJava;
importjava.io.IOException;
importjava.util.Properties;
publicclassConfig{
//step1:
创建连接配置文件对象
privatefinalstaticPropertiesprop=newProperties();
static{
try{
//step2:
加载dbconfig.properties配置文件prop.load(Config.class.getResourceAsStream("dbconfigs.properties"));
}catch(IOExceptione){
e.printStackTrace();
}
}
//step3:
设置获取配置文件7个常量
publicstaticfinalStringCLASS_NAME=prop.getProperty("DRIVERCLASSNAME");
publicstaticfinalStringDATABASE_URL=prop.getProperty("DATABASE_URL");
publicstaticfinalStringUSERNAME=prop.getProperty("USERNAME");
publicstaticfinalStringPASSWORD=prop.getProperty("PASSWORD");
}
packageJava;
importjava.sql.*;
publicclassDatabaseHelper{
//三大属性,四大方法
//三大属性是指JDBC体系中的三个核心接口
privateConnectionconn=null;
privatePreparedStatementpstmt=null;
privateResultSetrs=null;
//四大方法
//method1:
创建数据库连接
publicConnectiongetConnection()throwsClassNotFoundException,SQLException{
try{
//step1:
加载连接驱动,java反射原理
Class.forName(Config.CLASS_NAME);
//step2:
创建connection接口对象,用于获取数据库连接对象。
三个参数url连接的字符串,username账号,password密码
Stringurl=Config.DATABASE_URL;
System.out.println("url="+url);
//step3:
创建数据库连接
conn=DriverManager.getConnection(url,Config.USERNAME,Config.PASSWORD);
}catch(ClassNotFoundExceptione){
e.printStackTrace();
conn=null;
throwe;
}catch(SQLExceptione){
e.printStackTrace();
conn=null;
throwe;
}
returnconn;
}
//method2:
关闭数据库方法
publicvoidcloseConn(){
//关闭顺序:
ResultSetPreparedStatementConnection
//关闭:
ResultSet
if(rs!
=null){
try{
rs.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
//关闭:
PreparedStatement
if(pstmt!
=null){
try{
pstmt.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
//关闭:
Connection
if(conn!
=null){
try{
conn.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
System.out.println("数据库连接已关闭");
}
//method3:
用于发送增、删、改的方法
publicintexecuteUpdate(finalStringsql,finalObject[]params)throwsException{
//step1:
获取数据库连接
this.getConnection();
try{
//step3:
创建Statement接口对象
pstmt=conn.prepareStatement(sql);
//step4:
动态为pstmt对象赋值参数
for(inti=0;ipstmt.setObject(i+1,params[i]);
}
//step5:
使用Statement对象发送sql语句
intaffectedRows=pstmt.executeUpdate();
//step6:
返回结果
returnaffectedRows;
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
return-1;
}
}
//method4:
用于发送查询结果的方法
publicResultSetexecQuery(finalStringsql,finalObject[]params)throwsException{
//step1:
获取数据库连接
this.getConnection();
try{
//step3:
创建PreparedStatement接口对象
pstmt=conn.prepareStatement(sql);
//step4:
动态为pstmt对象赋值参数
for(inti=0;ipstmt.setObject(i+1,params[i]);
}
//step5:
使用Statement对象发送sql语句
rs=pstmt.executeQuery();
//step6:
返回结果
returnrs;
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
returnnull;
}
}
publicintgetMaxId(Stringsql,Object[]params)throwsException{
//step1:
获取数据库连接
this.getConnection();
try{
//step3:
创建PreparedStatement接口对象
pstmt=conn.prepareStatement(sql);
//step4:
动态为pstmt对象赋值参数
for(inti=0;ipstmt.setObject(i+1,params[i]);
}
//step5:
使用Statement对象发送sql语句
rs=pstmt.executeQuery();
//step6:
返回结果
returnrs.getInt
(1);
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
return0;
}finally{
this.closeConn();
}
}
}
DRIVERCLASSNAME=com.microsoft.sqlserver.jdbc.SQLServerDriver
DATABASE_URL=jdbc:
sqlserver:
//127.0.0.1:
1433;databaseName=FoodCard
USERNAME=root
PASSWORD=123456
xmlversion="1.0"encoding="UTF-8"?
>
packageSql;
importJava.DatabaseHelper;
importcom.zjl.entity.Card;
importjava.sql.Connection;
importjava.sql.SQLException;
importjava.sql.Statement;
importjava.util.logging.Level;
importjava.util.logging.Logger;
publicclassCardAction{
staticDatabaseHelperhelper=newDatabaseHelper();
staticConnectionconn=null;
publicstaticintAddCard()throwsClassNotFoundException,SQLException
{
conn=helper.getConnection();
Statementstmt=conn.createStatement();
Stringsql="INSERTINTOcardVALUES('"+Card.cardID+"','"+Card.userAccount+"','"+Card.userName+"','"+Card.userClass+"','"+Card.userSex+"','"+Card.userTel+"')";
stmt.executeUpdate(sql);
conn.close();
return1;
}
publicstaticvoidUpdateData()throwsClassNotFoundException,SQLException{
conn=helper.getConnection();
Statementstmt=conn.createStatement();
Stringsql="updatecardsetuserAccount='"+Card.userAccount+"',userName='"+Card.userName+"',userClass='"+Card.userClass+"',userSex='"+Card.userSex+"',userTel='"+Card.userTel
+"'wherecardID='"+Card.cardID+"'";
stmt.execute(sql);
conn.close();
}
publicstaticvoiddelrow()throwsClassNotFoundException,SQLException{
conn=helper.getConnection();
Statementstmt=conn.createStatement();
Stringsql="DeleteFROMcardwherecardID='"+Card.cardID+"'";
stmt.execute(sql);
conn.close();
}
}
/*
*Tochangethislicenseheader,chooseLicenseHeadersinProjectProperties.
*Tochangethistemplatefile,chooseTools|Templates
*andopenthetemplateintheeditor.
*/
packageSql;
importJava.DatabaseHelper;
importjava.sql.Connection;
importjava.sql.ResultSet;
importjava.sql.Statement;
importjavax.swing.JTable;
importjavax.swing.table.DefaultTableModel;
publicclassGetTableData{
DatabaseHelperhelper=newDatabaseHelper();
Connectionconn=null;
publicvoidgetData(JTableTableInfo,StringtableName,intcloNum){
TableInfo.removeAll();
try
{
conn=helper.getConnection();
Statementstmt=conn.createStatement();
Stringsql="SELECT*FROM"+tableName+"";
TableInfo=setModelList(TableInfo,tableName);
ResultSetres=stmt.executeQuery(sql);
Stringstr[][]=newString[100][100];
introw=0;
while(res.next())
{
row++;
for(intj=1;j<=cloNum;j++)
{
str[row][j-1]=res.getString(j);
}
}
conn.close();
//TableModelmodel=TableInfo.getModel();
DefaultTableModelmodel=(DefaultTableModel)TableInfo.getModel();
for(inti=0;i{
model.addRow(str[i+1]);
}
TableInfo.setModel(model);
}
catch(Exceptione)
{
e.printStackTrace();
}
}
publicvoidgetRecordData(JTableTableInfo,StringtableName){
TableInfo.removeAll();
try
{
conn=helper.getConnection();
Statementstmt=conn.createStatement();
Stringsql="selectcard.cardID,card.userName,food.vname,food.belong,restaurant.rno,restaurant.rname,consume.cmoney,consume.ctimefromconsumejoinfoodonconsume.vno=food.vnojoincardonconsume.cinfo=card.cardIDjoinrestaurantonconsume.rno=restaurant.rno";
TableInfo=setModelList(TableInfo,"record");
ResultSetres=stmt.executeQuery(sql);
Stringstr[][]=newString[100][100];
introw=0;
while(res.next())
{
row++;
for(intj=1;j<=8;j++)
{
str[row][j-1]=res.getString(j);
}
}
conn.close();
DefaultTableModelmodel=(DefaultTableModel)TableInfo.getModel();
for(inti=0;i{
model.addRow(str[i+1]);
}
TableInfo.setModel(model);
}
catch(Exceptione)
{
e.printStackTrace();
}
p
|
|