超市账单管理系统

2025-04-26

3 系统详细设计

3.1 数据表结构设计

根据本项目的实际需求以及应用规模,我们只需要建立一个数据库,在该数据库中建立三个数据表。

(1) 用户信息表consumer (2) 商品信息表product (3) 供应商信息表provider

对这3个数据表的字段名称、数据类型及属性具体说明如表3-1至表3-3所示:

表3-1用户信息表(consumer)

字段名(中文) 用户编号 用户名称 用户密码 用户年龄 用户性别 用户电话 用户地址 用户权限 字段名(英文) C_ID USERNAME PASSWORD C_AGE C_SEX C_PHONE C_ADDRESS C_AUTHORITY 数据类型 Varchar2 Varchar2 Varchar2 Number Varchar2 Varchar2 Varchar2 Number 长度 20 20 20 20 20 20 20 20 是否为空 No No No No No No No No

表3-2商品信息表(product)

字段名(中文) 商品编号 商品名称 商品数量 商品金额 商品描述 是否付款 创建时间 字段名(英文) PD_ID PD_NAME PD_NUMBER AMOUNT PD_DESCRIPTION PAYMENT CREATETIME 数据类型 Varchar2 Varchar2 Number Number Varchar2 Varchar2 DATE 长度 20 20 20 20 100 20 是否为空 No No No No No No No 表3-3供应商信息表(provider)

字段名(中文) 供应商编号 供应商名称 联系人 供应商号码 供应商描述 供应商地址 字段名(英文) PV_ID PV_NAME LINKMAN PV_PHONE PV_DESCRIPTION PV_ADDRESS 数据类型 Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 长度 20 20 20 20 100 50 是否为空 No No No No No No

3.2主页面设计

本系统的所有界面 采用Internet的设计方式,借鉴于网页的设计方法,本系统的界面 设计成如图3-1所示:

Part1 系统标题 Part3 内容显示操作区 图3-1 界面布局图

Part2 导航 主界面包含三个主要区域,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 开发简单

本系统是基于java web开发的系统,使用MVC模式实现,主要用JavaBean、Jsp

和Servlet技术充当MVC模式中的模型层、视图层和控制层,依靠Servlet技术接收Jsp传来的参数,根据不同情况调用不同的JavaBean处理用户请求,跳转到相应的Jsp页面将结果展现给用户。整个系统结构清晰,结构简单,便于开发。

2便于维护和升级

本系统使用JDBC技术连接数据库,可以连接不同数据库,可移植性好;同时,

整个系统的代码按照功能进行了详细的分层,结构明确,有条有理,方便开发人员对系统功能的扩展、升级和维护。

3使用方便

本系统使用B/S架构实现,因此在使用时无需安装其他客户端软件,在浏览器上就可以完成登录和其他操作。同时,用户界面是采用Internet的设计方式,界面简单、整洁,导航清晰,用户很快就可以掌握使用方法。

4系统安全、稳定

本系统的软件建立在性能稳定的Windows操作平台上的,系统在开发以及调试的时候,每一个阶段都经过严格把关,每一个流程都进过严格的测试,确保系统的安全性和稳定性。

4.2系统的不足

1功能不太完善

由于时间仓促,并且没有什么经验,所以系统开发的时候考虑的不是很周全,系统实现的功能过于简单,只是简单的实现了用户、账单和商品的增、删、改、查。没有更复杂的操作。而且项目中就简单的创建了三个表,而且表与表之间没有什么关联,这在实际应用中

附录

系统登录主代码

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}

//处理乱码

response.setContentType(\request.setCharacterEncoding(\PrintWriter out = response.getWriter();

//接受参数

String strUsername=request.getParameter(\String strPassword=request.getParameter(\

//调用Service层得到用户,判断权限

ConsumerService consumerService=new ConsumerServiceImpl(); Consumer item=consumerService.getUserByUsername(strUsername); HttpSession session=request.getSession(); session.setAttribute(\

//调用service层进行登录验证

Boolean result=consumerService.login(strUsername, strPassword); if(result){//登录成功 }

response.sendRedirect(\String reason=\用户名或密码错误\session.setAttribute(\

response.sendRedirect(\}else{

查找用户主代码

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

添加用户主代码

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//处理乱码

response.setContentType(\request.setCharacterEncoding(\//接受页面的参数 }

//处理乱码

response.setContentType(\request.setCharacterEncoding(\

//接受参数(主要用于根据用户名查找列表,username是从查找页面传过来的) String strUsername=request.getParameter(\//分页

PageBean pb=new PageBean();

String strCurrentPage=request.getParameter(\if(strCurrentPage != null && !\ }

String strPageSize=request.getParameter(\if(strPageSize != null && !\ }

//调用Service层,获得所有用户列表

ConsumerService consumerService=new ConsumerServiceImpl(); Listlist= request.setAttribute(\request.setAttribute(\

request.getRequestDispatcher(\

pb.setPageSize(Integer.parseInt(strPageSize)); pb.setCurrentPage(Integer.parseInt(strCurrentPage));

consumerService.getAllUsersByPage(pb,strUsername);

}

String strId=request.getParameter(\String strName=request.getParameter(\String strPass=request.getParameter(\String strAge=request.getParameter(\String strSex=request.getParameter(\String strPhone=request.getParameter(\String strAddress=request.getParameter(\String strAuthority=request.getParameter(\//封装到用户对象

Consumer user=new Consumer(); 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层进行添加

ConsumerService consumerService=new ConsumerServiceImpl(); int result=consumerService.addUser(user); PrintWriter out = response.getWriter(); if(result>0){//添加成功 }

out.println(\增加成功!'); out.close();

out.println(\增加失败,请重试!'); out.close();

window.location.href='UserListServlet'\

}else{

history.go(-1)\

查看用户详情主代码

public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

修改用户主代码

public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { //处理乱码 response.setContentType(\ request.setCharacterEncoding(\ //接受参数 String strId=request.getParameter(\ String strUsername=request.getParameter(\ String strPassword=request.getParameter(\ String strSex=request.getParameter(\ String strAge=request.getParameter(\ String strPhone=request.getParameter(\ String strAddress=request.getParameter(\ String strAuthority=request.getParameter(\ int id=Integer.parseInt(strId); int age=Integer.parseInt(strAge); int authority=Integer.parseInt(strAuthority); //根据id获得该对象,进行封装 ConsumerService consumerService=new ConsumerServiceImpl(); Consumer user=new Consumer(); user.setC_id(id); user.setUsername(strUsername);

}

//处理乱码

response.setContentType(\request.setCharacterEncoding(\//接受参数

String strId=request.getParameter(\int id=Integer.parseInt(strId); //根据id获得对象

ConsumerService consumerService=new ConsumerServiceImpl(); Consumer user=consumerService.getUserById(id); request.setAttribute(\

request.getRequestDispatcher(\

user.setPassword(strPassword); user.setC_sex(strSex); //user.setC_age(age); user.setC_phone(strPhone); user.setC_authority(authority); user.setC_address(strAddress); //调用方法,保存修改 int result=consumerService.updateUser(user); PrintWriter out = response.getWriter(); if(result>0){//成功 out.println(\修改成功!'); window.location.href='UserListServlet';\ out.close(); }else{//失败 out.println(\修改失败,请重试!'); history.go(-1);\ out.close(); } }

查找账单主代码

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//处理乱码

response.setContentType(\request.setCharacterEncoding(\//接受参数(用于根据商品名称查询)

String strName=request.getParameter(\ //分页

PageBean pb=new PageBean();

String strCurrentPage=request.getParameter(\if(strCurrentPage!=null && !\ }

String strPageSize=request.getParameter(\if(strPageSize != null && !\

pb.setPageSize(Integer.parseInt(strPageSize)); pb.setCurrentPage(Integer.parseInt(strCurrentPage));

}

}

//调用方法,获取商品账单列表

ProductService pdService=new ProductServiceImpl(); List list=pdService.getAllPbsByPage(pb, strName); request.setAttribute(\request.setAttribute(\

request.getRequestDispatcher(\

添加账单主代码

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//处理乱码

response.setContentType(\request.setCharacterEncoding(\//接受参数

String strId=request.getParameter(\String strName=request.getParameter(\String strNumber=request.getParameter(\String strAmount=request.getParameter(\

String strDescription=request.getParameter(\String strPayment=request.getParameter(\int id=Integer.parseInt(strId);

int number=Integer.parseInt(strNumber); int amount=Integer.parseInt(strAmount); //封装

Product product=new Product(); product.setPd_id(id);

product.setPd_name(strName); product.setPd_number(number); product.setAmount(amount); product.setPayment(strPayment); product.setPd_description(strDescription); //调用方法进行添加操作

ProductService pdService=new ProductServiceImpl(); int result=pdService.addPb(product); PrintWriter out = response.getWriter(); if(result>0){//添加成功

out.println(\增加成功!');

window.location.href='ProductListServlet'\

查看账单详情主代码

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

修改账单主代码

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//处理乱码 }

//处理乱码

response.setContentType(\request.setCharacterEncoding(\//获取参数

String strId=request.getParameter(\int id=Integer.parseInt(strId); //根据id获得对象

ProductService pdService=new ProductServiceImpl(); Product product=pdService.getPbById(id); request.setAttribute(\

request.getRequestDispatcher(\ }

}

out.close();

}else{

out.println(\增加失败,请重试!'); out.close();

history.go(-1)\

response.setContentType(\request.setCharacterEncoding(\//接受参数

String strId=request.getParameter(\

String strName=request.getParameter(\String strNumber=request.getParameter(\String strAmount=request.getParameter(\

String strDescription=request.getParameter(\String strPayment=request.getParameter(\int id=Integer.parseInt(strId);

int number=Integer.parseInt(strNumber); int amount=Integer.parseInt(strAmount); //封装

Product product=new Product(); product.setPd_id(id);

product.setPd_name(strName); product.setPd_number(number); product.setAmount(amount);

product.setPd_description(strDescription); product.setPayment(strPayment);

//调用方法货的对象,对该对象进行修改

ProductService pdService=new ProductServiceImpl(); int result=pdService.updatePb(product); PrintWriter out = response.getWriter(); if(result>0){//成功

out.println(\修改成功!');

window.location.href='ProductListServlet';\

}

}

out.close();

}else{//失败

out.println(\修改失败,请重试!'); out.close();

history.go(-1);\

查找供应商主代码

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

添加供应商主代码

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//处理乱码

response.setContentType(\request.setCharacterEncoding(\//接受页面的参数

String strId=request.getParameter(\ }

//处理乱码

response.setContentType(\request.setCharacterEncoding(\

//接受参数(主要用于根据用户名查找列表,username是从查找页面传过来的) String strUsername=request.getParameter(\//分页

PageBean pb=new PageBean();

String strCurrentPage=request.getParameter(\if(strCurrentPage != null && !\

pb.setCurrentPage(Integer.parseInt(strCurrentPage String strPageSize=request.getParameter(\if(strPageSize != null && !\ }

//调用Service层,获得所有用户列表

ProviderService pvService=new ProviderServiceImpl();

List list=pvService.getAllPvsByPage(pb, strUsername); request.setAttribute(\request.setAttribute(\

request.getRequestDispatcher(\

pb.setPageSize(Integer.parseInt(strPageSize));

response);

String strName=request.getParameter(\String strPhone=request.getParameter(\String strAddress=request.getParameter(\String strDescription=request.getParameter(\String linkman=request.getParameter(\int id=Integer.parseInt(strId); //封装

Provider provider=new Provider(); provider.setPv_id(id);

provider.setPv_name(strName); provider.setPv_phone(strPhone);

provider.setPv_description(strDescription); provider.setPv_address(strAddress); provider.setLinkman(linkman); //调用Service层进行添加

ProviderService pvService=new ProviderServiceImpl(); int result=pvService.addPv(provider); PrintWriter out = response.getWriter(); if(result>0){//添加成功

out.println(\增加成功!');

window.location.href='ProviderListServlet'\

修改供应商主代码

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//处理乱码

response.setContentType(\ }

}

out.close();

}else{

out.println(\增加失败,请重试!'); out.close();

history.go(-1)\

}

request.setCharacterEncoding(\//接受参数

String strId=request.getParameter(\int id=Integer.parseInt(strId); //根据id获得对象

ProviderService pvService=new ProviderServiceImpl(); Provider provider=pvService.getPvById(id); request.setAttribute(\

request.getRequestDispatcher(\

response);


超市账单管理系统.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:适合小学生朗诵的3篇文章

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219