热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

超市账单管理系统设计思路

一.设计需求图1注意事项:1.登录界面应该有用户名和密码非空验证,登录错误有错误信息提示;2.根据用户权限不同,左侧菜单树展示内容不同(普通用户和管理员之分),普通用户只能修改自己账户的信息,不能修改
一.设计需求

图1
注意事项:
1.登录界面应该有用户名和密码非空验证,登录错误有错误信息提示;
2.根据用户权限不同,左侧菜单树展示内容不同(普通用户和管理员之分),普通用户只能修改自己账户的信息,不能修改其他用户信息;
3.管理员不能添加和修改账单信息,但是可以删除账单信息;
4.账单、供应商和用户模块都具有组合查询功能(模糊查询);
5.账单、供应商、用户和修改密码页应具有格式验证功能(js实现);
6.关键操作应该具有提示功能(删除,修改,增加);
7.浏览信息表信息时,各功能框不可修改(锁死);
二.设计素材分析
1.前端页面及样式已经提供:

图2
分别为:登录页面(login.html),系统主页面(admin_index.html:该页面使用HTML框架技术,分别由页面头部(admin_top.html),页面左侧(admin_left.html),页面右侧(实际自行添加admin_right页面,素材暂时使用admin_bill_list.html替代)),账单列表页面(admin_bill_list.html),账单增加页面(modify.html),供应商列表页面(providerAdmin.html),供应商增加页面(providerAdd.html),用户列表页面(userAdmin.html),用户增加页面(userAdd.html)。
2.数据库代码分析:
--创建供应商表
create table provider(--供应商管理:provider
providerID number primary key,--编号
providerName varchar2(30),--供应商名称
providerDesc varchar2(100),--供应商描述
contact varchar2(20),--联系人
phone varchar2(20),--电话
address varchar2(50)--地址
);
--创建用户表
create table users(--用户管理:users
userID number primary key,--编号
userName varchar2(20),--用户名称
userPassword varchar2(20),--用户名密码
gender varchar2(2),--性别
age number ,--年龄
phone varchar2(20),--电话
address varchar2(50),--地址
auth number--权限
);
--创建账单表
create table bill(--账单管理:modify
billID number primary key,--账单编号:
goodname varchar2(20),--商品名称
goodnumber number,--商品数量
goodunit varchar2(10),--商品单位
payMoney number,--交易金额
payStatus number,--是否付款(0:否;1:是)
providerID number references provider(providerID),--供应商编号 外键
usersID number references users(userID),--用户编号 外键
goodDescription varchar2(100),--商品描述
billDate date --账单时间
);
--创建三张表对应的序列
create sequence sep_provider
start with 0
minvalue 0;
create sequence sep_users
start with 0
minvalue 0;
create sequence sep_bill
start with 0
minvalue 0;
根据数据库的实际情况创建对题的实体类。
三.设计思路
1.本项目的系统框架结构:MVC架构
模型(Model ):
实现数据操作和业务处理,它对应的组件就是JavaBean,模型能够提供和处理数据,它的代码能被其他组件调用,可以达到代码重用的目的。
对应与本项目中的entity,util,dao和service包。
视图(View):
显示信息与用户交互的界面,它对应的组件是JSP页面或者HTML文件,视图一般不处理用户的请求,它只显示数据并接收用户的操作。
控制器(Control):
它的作用是接收请求,调用模型实现业务,调用视图显示数据,最终完成操作。
对应本项目中的servlet。
2.编写思路
针对该类型项目,编写思路很清晰:
(1)首先根据数据库及系统需求,尽可能的全面把模型牵扯的代码编写包成,具体如下:
参考数据库中表单的属性编写实体类,属性名尽量与数据库表属性一致。本项目中为Bill.java,Providers.java,Users.java;
因为设计到数据库操作,所以需要BaseDao.java;
为了实现系统的业务操作,所以需要DAO类和Service类,DAO类具体为BillDao,ProvidersDao,UserDao极其对应的接口实现类,Service类则完成所有DAO类的封装,为控制器所调用。
注意:编写完成,应先验证各个业务功能是否正确,防止后面系统功能调试时麻烦。

图3
(2)JSP页面改造
针对系统功能的需要大致需要如下JSP页面来实现界面功能:
登录页面:
Login.jsp——依照login.html
主要编写功能js登录验证,登录失败故障信息显示。
登录成功主界面:
Admin_index.jsp——依照admin_index.html
由frameset元素把admin_top.jsp(admin_top.html)、admin_left.jsp(admin_left.html)和admin_right.jsp(新建,欢迎图片)组成。
注意点:admin_left.jsp会根据用户的权限做相应的显示判断。
商品账单操作页面:
bill_list.jsp——依照admin_bill_list.html,主要实现商品信息列表显示。
Bill_add.jsp——依照modify.html,主要实现商品信息添加的功能(输入验证由js完成)。
Bill_update.jsp——新建页面,主要显示单个商品的具体信息(input文本框无法编辑),提供修改、删除功能。
Bill_doupdate.jsp——新建页面,主要完成商品修改信息功能(文本框可以编辑)。
供应商操作页面:
Provider_list.jsp——依照providerAdmin.html,主要实现供应商信息列表显示。
Provider_add.jsp——依照providerAdd.html,主要实现供应商信息添加功能(输入验证由js完成)。
Provider_update.jsp——新建页面,显示需要修改的供应商信息(文本框不能编辑)。
Provider_doupdate.jsp——新建页面,完成商品信息的修改(文本框可以修改)。
用户操作页面:
User_list.jap——依照userAdmin.html,显示用户信息列表。
User_add.jsp——依照userAdd.html,实现用户增加功能。
User_update.jsp——新增页面,实现单个用户信息显示(文本框不能编辑)。
User_doupdate.jsp——新增页面,编辑单个用户信息。
Password_update.jsp——新增页面,修改用户密码功能。
Common.jsp——实现页面正常登录判断功能。
注:以上页面的数据提交均指向servlet类,如下所示:

图4
数据操作指向servlet文件,并携带op参数,op参数负责引导相应的具体操作。
(3)servlet编写
servlet可由商品列表、供应商和用户独立的servlet组成,也可以由一个组合的servlet组成,针对复杂系统,建议编写单元模块功能的servlet。
通过不同的op标志位信息,servlet选择不同的逻辑操作,通过serviceImpl对象实现相应的增删改查动作,完成页面上的功能。

组合查询知识点:
Sql语句:select * from provider where providername like '%查询信息1%' and providerdesc like '%查询信息2%';(查询信息可以为空)

Java实现方式:

图5
推荐阅读
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • Python语法上的区别及注意事项
    本文介绍了Python2x和Python3x在语法上的区别,包括print语句的变化、除法运算结果的不同、raw_input函数的替代、class写法的变化等。同时还介绍了Python脚本的解释程序的指定方法,以及在不同版本的Python中如何执行脚本。对于想要学习Python的人来说,本文提供了一些注意事项和技巧。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
author-avatar
夕阳何处寻
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有