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(); List
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
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
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);
百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库超市账单管理系统在线全文阅读。
相关推荐: