面向对象与交互式程序设计.docx
《面向对象与交互式程序设计.docx》由会员分享,可在线阅读,更多相关《面向对象与交互式程序设计.docx(23页珍藏版)》请在冰点文库上搜索。
面向对象与交互式程序设计
面向对象与交互式程序设计相关资料
题目甜品店职员及业务管理系统
学生姓名专业班级
指导教师
1.软件需求说明
2.概要设计说明
3.详细设计说明
4.实现与测试
5.总结
2017年11月25日
第1章软件需求说明
1.1系统背景
随着计算机技术、网络技术和信息技术的发展,现在办公系统更趋于系统化、科学化和网络化。
网络办公自动化系统是计算机技术和网络迅速发展的一个办公应用解决方案,它的主要目的是实现信息交流和信息共性,提供协同工作的手段,提高办公的效率,让人们从繁琐的有纸办公中解脱出来。
在全民创业的背景下,不少小公司,小商店纷纷涌现,并且在这个信息技术大发展的时代,大小用人单位都需要一套管理系统来提高管理效率,节约管理成本,本系统就是针对小甜品店的一个微型管理系统。
1.2功能需求
可以进行注册,分为两种角色,管理员和普通员工。
管理员可登陆管理员信息页面,对管理员信息进行修改或者删除。
同样管理员也可以登陆普通员工信息界面,对普通员工信息进行修改或者删除或者重置。
普通员工只能浏览所有员工信息,不可对其进行修改。
普通员工和管理员都可以登陆餐桌信息对其进行管理。
管理员可登陆菜品信息和订单信息对其进行管理。
1.3界面需求
1.注册界面以及登陆界面
2.网站主页展示菜品
3.管理后台主界面
4.管理员信息界面
5.普通员工信息界面
6.菜品管理界面
7.订单信息管理界面
8.餐桌管理界面
1.4安全需求
1.必须注册才能登陆
2.必须登陆才能进去其他页面
3.普通员工不能访问管理员权限的页面
第2章概要设计说明
2.1运行环境
1.操作系统在windowsXP以上
2.客户端要配备tomcat和SQL等应用开发软件
2.2需求概要
用户对软件系统要求使用简单方便,必要的功能一定不能少,且界面设计要大方得体,有良好的视觉效果,待现在系统没实现功能要记录清楚,系统最后阶段要尽量弥补用户所需的功能。
2.4限制描述
设计应当是模块化的,即该软件应当从逻辑上被划分成多个部件,分别实现各种特定功能和子功能。
设计最终应当给出具体的模块(例如子程序或过程),这些模块就具有独立的功能特性。
2.5总体设计
登录模块:
用户输入帐号和密码进行验证登录。
注册模块:
注册用户信息。
管理员信息模块:
对管理员信息进行管理。
普通员工信息模块:
对普通员工信息进行管理。
菜品模块:
对菜品进行管理。
订单模块:
对订单进行管理。
餐桌信息模块:
对餐桌信息进行管理。
2.6系统数据结构设计
职员表staffs
字段
字段名
类型
键
ID
id
varchar(10)
主键
姓名
name
Varchar(20)
null
性别
sex
varchar(10)
null
工号
num
varchar(10)
唯一
电话
tel
varchar(20)
null
用户表users
字段
字段名
类型
键
账号
username
varchar(20)
主键
密码
password
varchar(20)
null
性别
sex
varchar(10)
null
年龄
age
varchar(10)
null
菜品表dishes
字段
字段名
类型
键
编号
num
Varchar(10)
主键
菜品名
name
Varchar(20)
null
价格
price
double
null
订单表oders
字段
字段名
类型
键
编号
ordernum
varchar(20)
主键
订单项
items
varchar(50)
null
总价
countprice
varchar(10)
null
备注
notes
varchar(50)
null
餐桌表tables
字段
字段名
类型
键
餐桌号
num
varchar(10)
主键
就餐人数
personnum
varchar(10)
null
订单编号
ordernum
varchar(20)
外键关联订单
2.7系统出错处理设计
某个页面出问题,跳转到错误页面,并退回到登陆界面。
第3章详细设计说明
3.1开发所用技术
前端:
bootstrap框架htmljspcss
后端:
servlet
服务器:
tomcat
数据库:
mysql
3.2程序描述
1.登录模块
功能:
可供用户登陆到管理系统。
输入项目:
用户名和用户密码。
输出项目:
管理系统欢迎页面。
2.注册模块
功能:
供用户进行注册,提供注册页面。
输入项目:
注册相关信息,与数据库中字段一一对应。
输出项目:
注册成功界面。
3.管理员信息模块
功能:
可以查询/修改/删除/重置有关已经注册的管理员的信息。
输入项目:
管理员工号/姓名/年龄/性别。
输出项目:
查询结果界面。
4.普通员工信息模块
功能:
可以查询/修改/删除/重置有关已经注册的普通员工的信息。
输入项目:
员工工号/姓名/性别/年龄。
输出项目:
查询结果界面。
5.菜品模块
功能:
可供管理员对菜品进行上架/下架/价格/数量修改等管理操作。
输入项目:
菜品的相关信息,与数据库中菜品字段一一对应。
输出项目:
菜品查询结果页面。
6.订单模块
功能:
可供管理员对订单进行管理操作。
输入项目:
订单相关信息与数据库中一一对应。
输出项目:
订单查询结果页面。
7.餐桌信息模块
功能:
可供管理员或普通员工对餐桌信息进行查询以及修改。
输入项目:
餐桌相关信息,与数据库中一一对应。
输出项目:
餐桌信息查询结果。
3.3数据库设计
第4章实现与测试
4.1系统界面
首页
=======================================
点击“Loginin”进入登录/注册界面
=================================================
登录
管理员登录
===============================
注册界面
============================================
登陆成功后界面
在此界面可以浏览“今日推荐”,查看热门甜品或新品
============================================
点击“管理员信息”
==============================================
可以修改管理员信息
点击“EDIT”进行编辑修改
点击“SAVE”,保存,即修改成功
点击“CANCEL”,取消,即取消修改,保持原状
============================================
点击“DELETE”,删除信息
弹出对话框:
点击“确定”,删除信息
点击“取消”,不删除
====================================================
点击“RESET”,重置管理员密码
弹出对话框:
点击“确定”,重置密码
点击“取消”,取消重置
=====================================================
返回登陆后首页
点击“员工信息管理”
========================================================
在此界面仍可修改店内员工信息
点击“EDIT”进行编辑修改
点击“SAVE”,保存,即修改成功
点击“CANCEL”,取消,即取消修改,保持原状
========================================================
点击“DELETE”,删除信息
弹出对话框:
点击“确定”,删除信息
点击“取消”,不删除
====================================================
返回登陆后界面,进行其他操作。
。
。
。
========================================================
4.2连接数据库代码
packagecom.leadingsoft.demo.util;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.SQLException;
importcom.mysql.jdbc.Driver;
publicclassDbUtil{
privatestaticfinalStringURL="jdbc:
mysql:
//localhost:
3306/cake";
privatestaticfinalStringUSER_NAME="root";
privatestaticfinalStringPASSWORD="123456";
privateConnectionconn;
publicConnectiongetConnection(){
try{
DriverManager.registerDriver(newDriver());
this.conn=DriverManager.getConnection(URL,USER_NAME,PASSWORD);
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
returnconn;
}
publicvoidcloseConnection(){
if(conn!
=null){
try{
conn.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
}
=======================================================
4.3登录注册界面实现代码
packagecom.leadingsoft.demo;
importjava.io.IOException;
importjavax.servlet.RequestDispatcher;
importjavax.servlet.ServletException;
importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importcom.leadingsoft.demo.service.LoginService;
/**
*ServletimplementationclassLogin
*/
@WebServlet("/Login")
publicclassLoginextendsHttpServlet{
privatestaticfinallongserialVersionUID=1L;
/**
*@seeHttpServlet#doGet(HttpServletRequestrequest,HttpServletResponse
*response)
*/
@Override
protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
StringuserName=request.getParameter("userName");
Stringpassword=request.getParameter("password");
LoginServiceloginService=newLoginService();
intresult=loginService.validate(userName,password);
if(result<3){
request.setAttribute("error","用户名或密码错误!
");
RequestDispatcherrd=request.getRequestDispatcher("login.jsp");
rd.forward(request,response);
}else{
request.getSession().setAttribute("flag","1");
RequestDispatcherrd=request.getRequestDispatcher("WEB-INF/jsp/main.jsp");
rd.forward(request,response);
}
}
/**
*@seeHttpServlet#doPost(HttpServletRequestrequest,HttpServletResponse
*response)
*/
@Override
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
//TODOAuto-generatedmethodstub
doGet(request,response);
}
}
==================================================
4.4数据库数据删改部分代码
packagecom.leadingsoft.demo.dao;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.util.ArrayList;
importjava.util.List;
importcom.leadingsoft.demo.dto.User;
importcom.leadingsoft.demo.util.DbUtil;
publicclassUserDao{
publicUsersearchUser(Stringname){
DbUtilutil=newDbUtil();
Connectioncon=util.getConnection();
Useruser=null;
try{
PreparedStatementpstmt=con.prepareStatement("SELECT*FROMusersWHEREuser_name=?
");
pstmt.setString(1,name);
ResultSetrs=pstmt.executeQuery();
if(rs.next()){
user=newUser(rs.getString("user_name"),rs.getString("user_password"),rs.getString("sex"),
rs.getInt("age"));
}
rs.close();
pstmt.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
util.closeConnection();
}
returnuser;
}
publicListsearchAll(){
Listusers=newArrayList();
DbUtilutil=newDbUtil();
Connectioncon=util.getConnection();
try{
PreparedStatementpstmt=con.prepareStatement("SELECT*FROMusers");
ResultSetrs=pstmt.executeQuery();
while(rs.next()){
Useruser=newUser(rs.getString("user_name"),rs.getString("user_password"),rs.getString("sex"),
rs.getInt("age"));
users.add(user);
}
rs.close();
pstmt.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
util.closeConnection();
}
returnusers;
}
publicbooleandeleteUser(StringuserName){
DbUtilutil=newDbUtil();
Connectioncon=util.getConnection();
intresult=0;
try{
PreparedStatementpstmt=con.prepareStatement("DELETEFROMusersWHEREuser_name=?
");
pstmt.setString(1,userName);
result=pstmt.executeUpdate();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
util.closeConnection();
}
returnresult>0;
}
====================================================
4.5HTML+CSS界面部分代码
LOGIN
Loremipsumdolorsitamet,consectetur.
LOGIN