超市账单管理系统doc.docx
《超市账单管理系统doc.docx》由会员分享,可在线阅读,更多相关《超市账单管理系统doc.docx(23页珍藏版)》请在冰豆网上搜索。
超市账单管理系统doc
3系统详细设计
3.1数据表结构设计
根据本项目的实际需求以及应用规模,我们只需要建立一个数据库,在该数据库中建立三个数据表。
(1)用户信息表consumer
(2)商品信息表product
(3)供应商信息表provider
对这3个数据表的字段名称、数据类型及属性具体说明如表3-1至表3-3所示:
表3-1用户信息表(consumer)
字段名(中文)
字段名(英文)
数据类型
长度
是否为空
用户编号
C_ID
Varchar2
20
No
用户名称
USERNAME
Varchar2
20
No
用户密码
PASSWORD
Varchar2
20
No
用户年龄
C_AGE
Number
20
No
用户性别
C_SEX
Varchar2
20
No
用户电话
C_PHONE
Varchar2
20
No
用户地址
C_ADDRESS
Varchar2
20
No
用户权限
C_AUTHORITY
Number
20
No
表3-2商品信息表(product)
字段名(中文)
字段名(英文)
数据类型
长度
是否为空
商品编号
PD_ID
Varchar2
20
No
商品名称
PD_NAME
Varchar2
20
No
商品数量
PD_NUMBER
Number
20
No
商品金额
AMOUNT
Number
20
No
商品描述
PD_DESCRIPTION
Varchar2
100
No
是否付款
PAYMENT
Varchar2
20
No
创建时间
CREATETIME
DATE
No
表3-3供应商信息表(provider)
字段名(中文)
字段名(英文)
数据类型
长度
是否为空
供应商编号
PV_ID
Varchar2
20
No
供应商名称
PV_NAME
Varchar2
20
No
联系人
LINKMAN
Varchar2
20
No
供应商号码
PV_PHONE
Varchar2
20
No
供应商描述
PV_DESCRIPTION
Varchar2
100
No
供应商地址
PV_ADDRESS
Varchar2
50
No
3.2主页面设计
本系统的所有界面采用Internet的设计方式,借鉴于网页的设计方法,本系统的界面
设计成如图3-1所示:
图3-1界面布局图
主界面包含三个主要区域,Part1为标题区,只显示系统标题;Part2为导航条区,显示全部的功能菜单;Part3为操作区域也是最大的区域,全部的数据录入,数据显示均在这里进行。
当点击Part2菜单中的按钮时,Part3中将显示不同的内容。
此功能通过iframe框架来实现,在三个区域包含不同的子页面。
3.3系统个子模块详细设计
本系统共有四个模块,分别为登录模块,用户管理模块,账单管理模块和供应商管理模块。
下面将分别对四个模块进行详细的介绍。
3.3.1登录模块
用户打开登录页面,在页面输入自己的用户名及密码,并且输入验证码,才能点击登录按钮,在提交表单之前,会在客户端对提交的表单进行非空验证,并会在下方显示出相应的提示。
前端验证通过后,系统会从数据库查询输入的用户名和对应的密码,当用户名存在并且密码正确时,登录成功,进入首页。
否则返回登陆页面,并显示“用户名或密码错误”的信息,用户需重新登录。
登陆界面如图3-2所示:
图3-2系统登录页面
主要代码见附录:
系统登录主代码。
当用户成功登陆后,页面上方会显示蓝色的登录用户的名称,并且会根据用户的权限显示相应的导航菜单,便于不同用户进行不同的操作。
管理员和普通用户登录成功进入的首页,如图3-3和3-4所示:
图3-3管理员登陆界面
图3-4普通用户登陆界面
3.3.2用户管理模块
点击左边导航栏中的“用户管理”,会进入用户管理界面。
用户可以在此界面根据需求对数据进行增、删、改、查等相关操作。
如图3-5所示:
图3-5用户管理界面
在这个界面中,用户可以通过在搜索框输入用户名,查找到所有符合条件的结果,如图3-6所示:
图3-6查找用户界面
主要代码见附录:
查找用户主代码。
用户也可以在用户界面点击“添加数据”按钮来进行数据的添加功能。
并且在添加的时候,会对特定项进行非空验证,并且会有相应的提示。
添加成功后,会更新数据库列表并进入用户首页。
如图3-7所示:
图3-7添加用户
主要代码见附录:
添加用户主代码。
在用户管理首页,点击用户名称会跳转到用户详情页面,可以查看用户更加详细的信息。
如图3-8所示:
图3-8用户详情
主要代码见附录:
查看用户详情主代码。
在用户详情页面中,用户可以根据需求修改用户的信息,也可以删除此用户。
修改信息会对所填表单进行非空判断,点击“提交”按钮时,会更新数据库并显示到页面。
如图3-9所示:
图3-9修改用户信息
主要代码见附录:
修改用户主代码。
3.3.3账单管理模块
点击左边导航栏中的“账单管理”,会进入账单管理界面。
用户可以在此界面根据不同需求对数据进行增、删、改、查等相关操作。
如图3-10所示:
图3-10账单管理界面
在这个界面,用户可以通过搜索框输入商品名称,查找到符合条件的结果,如图3-11所示:
图3-11查找账单界面
主要代码见附录:
查找账单主代码。
用户也可以在账单界面点击“添加数据”按钮来进行数据的添加功能。
并且在添加的时候,会对特定项进行非空验证,并且会有相应的提示。
添加成功后,会更新数据库列表并返回账单首页。
如图3-12所示:
图3-12添加账单
主要代码见附录:
添加账单主代码。
在账单管理首页,点击商品名称会跳转到账单详情页面,可以查看账单更加详细的信息。
如图3-13所示:
图3-13账单详情
主要代码见附录:
查看账单详情主代码。
在账单详情页面中,用户可以根据需求修改账单的信息,也可以删除此账单。
修改信息会对所填表单进行非空验证,点击“提交”按钮时,会更新数据库并显示到页面。
如图3-14所示:
图3-14修改账单信息
主要代码见附录:
修改账单主代码。
3.3.4供应商管理
点击左边导航栏中的“供应商管理”,会进入供应商管理界面。
用户可以在此界面根据不同需求对数据进行增、删、改、查等相关操作。
如图3-15所示:
图3-15供应商管理界面
在这个界面,用户可以通过搜索框输入供应商名称,查找到符合条件的结果,如图3-16所示:
图3-16查找供应商
主要代码见附录:
查找供应商主代码。
用户也可以在供应商界面点击“添加数据”按钮来进行数据的添加功能。
并且在添加的时候,会对特定项进行非空验证,并且会有相应的提示。
添加成功后,会更新数据库列表并返回供应商首页。
如图3-17所示:
图3-17添加供应商
主要代码见附录:
添加供应商主代码。
在供应商管理首页,点击供应商名称会跳转到供应商详情页面,可以查看供应商更加详细的信息。
如图3-18所示:
图3-18供应商详情
主要代码见附录:
查看供应商详情主代码。
在供应商详情页面中,用户可以根据需求修改供应商的信息,也可以删除此供应商。
修改信息会对所填表单进行非空判断,点击“提交”按钮时,会更新数据库并显示到页面。
如图3-19所示:
图3-19修改供应商信息
4系统的特点与不足
4.1系统的特点
1开发简单
本系统是基于javaweb开发的系统,使用MVC模式实现,主要用JavaBean、Jsp和Servlet技术充当MVC模式中的模型层、视图层和控制层,依靠Servlet技术接收Jsp传来的参数,根据不同情况调用不同的JavaBean处理用户请求,跳转到相应的Jsp页面将结果展现给用户。
整个系统结构清晰,结构简单,便于开发。
2便于维护和升级
本系统使用JDBC技术连接数据库,可以连接不同数据库,可移植性好;同时,整个系统的代码按照功能进行了详细的分层,结构明确,有条有理,方便开发人员对系统功能的扩展、升级和维护。
3使用方便
本系统使用B/S架构实现,因此在使用时无需安装其他客户端软件,在浏览器上就可以完成登录和其他操作。
同时,用户界面是采用Internet的设计方式,界面简单、整洁,导航清晰,用户很快就可以掌握使用方法。
4系统安全、稳定
本系统的软件建立在性能稳定的Windows操作平台上的,系统在开发以及调试的时候,每一个阶段都经过严格把关,每一个流程都进过严格的测试,确保系统的安全性和稳定性。
4.2系统的不足
1功能不太完善
由于时间仓促,并且没有什么经验,所以系统开发的时候考虑的不是很周全,系统实现的功能过于简单,只是简单的实现了用户、账单和商品的增、删、改、查。
没有更复杂的操作。
而且项目中就简单的创建了三个表,而且表与表之间没有什么关联,这在实际应用中
附录
系统登录主代码
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
//处理乱码
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
PrintWriterout=response.getWriter();
//接受参数
StringstrUsername=request.getParameter("username");
StringstrPassword=request.getParameter("password");
//调用Service层得到用户,判断权限
ConsumerServiceconsumerService=newConsumerServiceImpl();
Consumeritem=consumerService.getUserByUsername(strUsername);
HttpSessionsession=request.getSession();
session.setAttribute("user",item);
//调用service层进行登录验证
Booleanresult=consumerService.login(strUsername,strPassword);
if(result){//登录成功
response.sendRedirect("/project/page/index.jsp");
}else{
Stringreason="用户名或密码错误";
session.setAttribute("reason",reason);
response.sendRedirect("/project/page/login.jsp");
}
}
查找用户主代码
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
//处理乱码
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
//接受参数(主要用于根据用户名查找列表,username是从查找页面传过来的)
StringstrUsername=request.getParameter("userName");
//分页
PageBeanpb=newPageBean();
StringstrCurrentPage=request.getParameter("currentPage");
if(strCurrentPage!
=null&&!
"".equals(strCurrentPage)){
pb.setCurrentPage(Integer.parseInt(strCurrentPage));
}
StringstrPageSize=request.getParameter("pageSize");
if(strPageSize!
=null&&!
"".equals(strPageSize)){
pb.setPageSize(Integer.parseInt(strPageSize));
}
//调用Service层,获得所有用户列表
ConsumerServiceconsumerService=newConsumerServiceImpl();
Listlist=
consumerService.getAllUsersByPage(pb,strUsername);
request.setAttribute("list",list);
request.setAttribute("pb",pb);
request.getRequestDispatcher("/page/userIndex.jsp").forward(request,response);
}
添加用户主代码
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
//处理乱码
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
//接受页面的参数
StringstrId=request.getParameter("userId");
StringstrName=request.getParameter("username");
StringstrPass=request.getParameter("password");
StringstrAge=request.getParameter("age");
StringstrSex=request.getParameter("sex");
StringstrPhone=request.getParameter("phone");
StringstrAddress=request.getParameter("address");
StringstrAuthority=request.getParameter("authority");
//封装到用户对象
Consumeruser=newConsumer();
user.setC_id(Integer.parseInt(strId));
user.setUsername(strName);
user.setPassword(strPass);
user.setC_age(Integer.parseInt(strAge));
user.setC_sex(strSex);
user.setC_phone(strPhone);
user.setC_address(strAddress);
user.setC_authority(Integer.parseInt(strAuthority));
//调用Service层进行添加
ConsumerServiceconsumerService=newConsumerServiceImpl();
intresult=consumerService.addUser(user);
PrintWriterout=response.getWriter();
if(result>0){//添加成功
out.println("");
out.close();
}else{
out.println("");
out.close();
}
}
查看用户详情主代码
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
//处理乱码
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
//接受参数
StringstrId=request.getParameter("id");
intid=Integer.parseInt(strId);
//根据id获得对象
ConsumerServiceconsumerService=newConsumerServiceImpl();
Consumeruser=consumerService.getUserById(id);
request.setAttribute("user",user);
request.getRequestDispatcher("/page/userDetail.jsp").forward(request,response);
}
修改用户主代码
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
//处理乱码
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
//接受参数
StringstrId=request.getParameter("id");
StringstrUsername=request.getParameter("username");
StringstrPassword=request.getParameter("password");
StringstrSex=request.getParameter("sex");
StringstrAge=request.getParameter("age");
StringstrPhone=request.getParameter("phone");
StringstrAddress=request.getParameter("address");
StringstrAuthority=request.getParameter("authority");
intid=Integer.parseInt(strId);
intage=Integer.parseInt(strAge);
intauthority=Integer.parseInt(strAuthority);
//根据id获得该对象,进行封装
ConsumerServiceconsumerService=newConsumerServiceImpl();
Consumeruser=newConsumer();
user.setC_id(id);
user.setUsername(strUsername);
user.setPassword(strPassword);
user.setC_sex(strSex);
//user.setC_age(age);
user.setC_phone(strPhone);
user.setC_authority(authority);
user.setC_address(strAddress);
//调用方法,保存修改
intresult=consumerService.updateUser(user);
PrintWriterout=response.getWriter();
if(result>0){//成功
out.println("");
out.close();
}else{//失败
out.println("");
out.close();
}
}
查找账单主代码
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
//处理乱码
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
//接受参数(用于根据商品名称查询)
StringstrName=request.getParameter("pd_Name");
//分页
PageBeanpb=newPageBean();
StringstrCurrentPage=request.getParameter("currentPage");
if(strCurrentPage!
=null&&!
"".equals(strCurrentPage)){
pb.setCurrentPage(Integer.parseInt(strCurrentPage));
}
StringstrPageSize=request.getParameter("pageSize");
if(strPageSize!
=null&&!
"".equals(strPageSize)){