本文已参与「新人创作礼」活动,一起开启掘金创作之路。
系统设计流程——以酒店隔离信息系统为例
第一章需求建模
总用例图:
图1 总用例图
用例规约1:
用例名称: 点餐服务
用例编号:HM03
参与者:隔离人员
前置条件:系统身份验证成功
后置条件:系统新增一条订单信息
基本流:
1隔离人员向系统提出了点餐服务请求
2系统查找并显示套餐信息(套餐名称、套餐价格、套餐数量、套餐简述)
3系统提示隔离人员选择所需的套餐
4隔离人员选择所需的套餐
5系统验证套餐数量大于0
6系统提示隔离人员选择继续点餐或结算
7隔离人员选择结算
8系统提示隔离人员付款
9隔离人员付款
10系统验证付款成功
11系统提示隔离人员付款成功并生成订单信息(订单号、下单人、套餐名称、套餐数量、总金额、下单时间)
备选流:
5a:系统验证套餐数量不足
1提示隔离人员所选择的套餐已售罄,请选择其他套餐
2回到基本流的第3步
7a:隔离人员选择继续点餐
1回到基本流的第3步
10a:系统验证付款失败
1系统提示隔离人员再次付款或退出系统
2a隔离人员选择再次付款
1回到基本流第7步
2b隔离人员选择退出系统
1系统关闭
图2 用例一活动图
用例规约2:
用例名称: 医疗服务
用例编号: HM04
参与者:隔离人员
前置条件:系统身份验证成功
后置条件:系统增加一条医疗预约时间信息
基本流:
1隔离人员向系统提出医疗服务请求
2系统提示隔离人员选择预约时间
3隔离人员选择预约时间
4系统验证所选时间空闲
5系统提示预约成功并生成预约记录
备选流:
4a:系统验证所选时间繁忙
1系统提示隔离人员所选择的时间已预约满
2回到基本流的第3步
图3 用例二活动图
第二章 分析建模
2.1用例点餐服务分析建模
图4用例一系统顺序图
图5用例一分析阶段顺序图
图6用例一领域模型
2.2用例医疗服务分析建模
图7用例二系统顺序图
图8用例二分析阶段顺序图
图9用例二领域模型
第三章 设计建模
3.1总体架构图
图10架构设计包图
3.2用例点餐服务设计建模
图11用例一设计阶段顺序图
图12用例一设计类图
3.3用例医疗服务设计建模
图13用例二设计阶段顺序图
图14用例二设计类图
3.4总体数据库设计
root(rootid,password)
people(peopleid,room,name,classify,num)
suitfood(suitid,img,num,price,content)
selllist(selllistid,sellnum,time,totalprice,rootid,suitid)
第四章 实现
4.1 m层源代码
package cn.itcast.hotelm.domain;
import java.math.BigDecimal;
import java.util.List;
public class Order {
private double total_price;
private List<OrderItem> orderItemlist;
public double getTotal_price() {
return total_price;
}
public void setTotal_price(double total_price) {
this.total_price = total_price;
}
public double getprice(List<OrderItem> orderItems)
{
BigDecimal b3=new BigDecimal("0");
for (OrderItem o:orderItems)
{
BigDecimal b1=new BigDecimal(o.getTotal_price());
b3.add(b1);
}
return b3.doubleValue();
}
public List<OrderItem> getOrderItemlist() {
return orderItemlist;
}
public void setOrderItemlist(List<OrderItem> orderItemlist) {
this.orderItemlist = orderItemlist;
}
}
4.2 v层源代码
package cn.itcast.hotelm.web.servlet.CartServlet;
import cn.itcast.hotelm.domain.*;
import cn.itcast.hotelm.service.PeopleService;
import cn.itcast.hotelm.service.OrderService;
import cn.itcast.hotelm.service.impl.PeopleServiceImpl;
import cn.itcast.hotelm.service.impl.OrderServiceImpl;
import cn.itcast.commons.CommonUtils;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
@WebServlet("/front/OrderServlet")
public class OrderServlet extends HttpServlet {
OrderService orderService=new OrderServiceImpl();
PeopleService peopleService=new PeopleServiceImpl();
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String method = request.getParameter("method");
if(method.equals("add")) {
add_order(request,response);
}
else if(method.equals("get")) {
get_order(request,response);
}
else if(method.equals(("confirm"))) {
confirm_order(request,response);
}
else if(method.equals("delete")) {
delete_order(request,response);
}
}
protected void add_order(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Cart cart = (Cart)request.getSession().getAttribute("cartitemlist");
User user = (User)request.getSession().getAttribute("user");
Order orders=new Order();
People peoples=new People();
Set<Map.Entry<String, CartItem>> entries = cart.getCartmap().entrySet();
List<OrderItem> order=new ArrayList<OrderItem>();
String username=user.getUsername();
String na=user.getReal_name();
String cellp=user.getCell_phone();
String as=user.getAddress();
protected void get_order(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Order order=new Order();
User user = (User)request.getSession().getAttribute("user");
String username=user.getUsername();
List<OrderItem> orders=orderService.get(username);
order.setOrderItemlist(orders);
order.setTotal_price(order.getprice(orders));
request.setAttribute("order",order);
request.getRequestDispatcher("/front/my-order.jsp").forward(request,response);
}
protected void confirm_order(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String sell_id=request.getParameter("sell_id");
request.setAttribute("msg","success");
orderService.confirm(sell_id,"交易成功");
request.getRequestDispatcher("/front/msg.jsp").forward(request,response);
}
protected void delete_order(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String sell_id=request.getParameter("sell_id");
int qr=Integer.parseInt(request.getParameter("quantity"));
String b_id=request.getParameter("b_id");
request.setAttribute("msg","fail");
orderService.confirm(sell_id,"交易失败");
peopleService.upPeople(b_id,qr);
request.getRequestDispatcher("/front/msg.jsp").forward(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
4.3 c层源代码
package cn.itcast.hotelm.service;
import cn.itcast.hotelm.domain.Order;
import cn.itcast.hotelm.domain.OrderItem;
import java.util.List;
public interface OrderService {
public void add(Order order);
public List<OrderItem> get(String username);
public void confirm(String sell_id,String state);
}
package cn.itcast.hotelm.dao.impl;
import cn.itcast.hotelm.dao.OrderDao;
import cn.itcast.hotelm.domain.Order;
import cn.itcast.hotelm.domain.OrderItem;
import cn.itcast.hotelm.util.JDBCUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.Date;
import java.util.List;
public class OrderDaoImpl implements OrderDao {
private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
public void addOrderitemList(Order order) {
List<OrderItem> list = order.getOrderItemlist();
for (OrderItem e : list) {
String sel_id = e.getSell_id();
String username = e.getUsername();
String id = e.getId();
int sel_n = e.getSell_num();
double total_price = e.getTotal_price();
String state = e.getState();
Date time = e.getTime();
String sql = "insert into selllist values(?,?,?,?,?,?,?)";
template.update(sql, sel_id, username, id, sel_n, time, total_price, state);
}
}
public List<OrderItem> getOrderitems(String username) {
String sql = "select sell_id,username,img,selllist.id,sell_num,time,total_price,state from selllist,people where username=? and selllist.id=people.id";
List<OrderItem> query = template.query(sql, new BeanPropertyRowMapper<OrderItem>(OrderItem.class), username);
return query;
}
public void update_state(String sell_id,String state) {
String sql = "update selllist set state=? where sell_id=?";
int count = template.update(sql,state,sell_id);
}
}
第五章 个人总结
在课程设计过程中遇到了很多困难,首先是在系统的设计中,由于是初次设计因此在很多对于当前阶段该完成的事完成的不够全面;其次是在实现的过程中遇到了无数的bug,经常对于这些bug都要修正好久,但最后在小组讨论与老师同学的帮助下还是解决了这些问题。
同时,也通过这次的课程设计对项目开发过程中的信息系统分析与设计有了更深入的了解,能够更有经验的去面对一个项目的开发。不仅如此,也深刻体会到了迭代式开发设计的优越处所在。通过不断的改进与精华需求,不断的提高系统的实用价值,为后续更深入的计算机方向学习打好了基础。