1、超市账单管理系统doc 3 系统详细设计3.1 数据表结构设计根据本项目的实际需求以及应用规模,我们只需要建立一个数据库,在该数据库中建立三个数据表。(1) 用户信息表consumer(2) 商品信息表product(3) 供应商信息表provider对这3个数据表的字段名称、数据类型及属性具体说明如表3-1至表3-3所示:表3-1用户信息表(consumer)字段名(中文)字段名(英文)数据类型长度是否为空用户编号C_IDVarchar220No用户名称USERNAMEVarchar220No用户密码PASSWORDVarchar220No用户年龄C_AGENumber20No用户性别C_S
2、EXVarchar220No用户电话C_PHONEVarchar220No用户地址C_ADDRESSVarchar220No用户权限C_AUTHORITYNumber20No表3-2商品信息表(product)字段名(中文)字段名(英文)数据类型长度是否为空商品编号PD_IDVarchar220No商品名称PD_NAMEVarchar220No商品数量PD_NUMBERNumber20No商品金额AMOUNTNumber20No商品描述PD_DESCRIPTIONVarchar2100No是否付款PAYMENTVarchar220No创建时间CREATETIMEDATENo表3-3供应商信息表
3、(provider)字段名(中文)字段名(英文)数据类型长度是否为空供应商编号PV_IDVarchar220No供应商名称PV_NAMEVarchar220No联系人LINKMANVarchar220No供应商号码PV_PHONEVarchar220No供应商描述PV_DESCRIPTIONVarchar2100No供应商地址PV_ADDRESSVarchar250No3.2主页面设计本系统的所有界面 采用Internet的设计方式,借鉴于网页的设计方法,本系统的界面设计成如图3-1所示:图3-1 界面布局图主界面包含三个主要区域,Part1为标题区,只显示系统标题;Part2为导航条区,显示
4、全部的功能菜单;Part3为操作区域也是最大的区域,全部的数据录入,数据显示均在这里进行。当点击Part2菜单中的按钮时,Part3中将显示不同的内容。此功能通过iframe框架来实现,在三个区域包含不同的子页面。3.3 系统个子模块详细设计本系统共有四个模块,分别为登录模块,用户管理模块,账单管理模块和供应商管理模块。下面将分别对四个模块进行详细的介绍。3.3.1登录模块 用户打开登录页面,在页面输入自己的用户名及密码,并且输入验证码,才能点击登录按钮,在提交表单之前,会在客户端对提交的表单进行非空验证,并会在下方显示出相应的提示。前端验证通过后,系统会从数据库查询输入的用户名和对应的密码,
5、当用户名存在并且密码正确时,登录成功,进入首页。否则返回登陆页面,并显示“用户名或密码错误”的信息,用户需重新登录。登陆界面如图3-2所示:图3-2 系统登录页面主要代码见附录:系统登录主代码。当用户成功登陆后,页面上方会显示蓝色的登录用户的名称,并且会根据用户的权限显示相应的导航菜单,便于不同用户进行不同的操作。管理员和普通用户登录成功进入的首页,如图3-3和3-4所示:图3-3 管理员登陆界面图3-4 普通用户登陆界面3.3.2用户管理模块点击左边导航栏中的“用户管理”,会进入用户管理界面。用户可以在此界面根据需求对数据进行增、删、改、查等相关操作。如图3-5所示:图3-5 用户管理界面在
6、这个界面中,用户可以通过在搜索框输入用户名,查找到所有符合条件的结果,如图3-6所示:图3-6 查找用户界面主要代码见附录:查找用户主代码。用户也可以在用户界面点击“添加数据”按钮来进行数据的添加功能。并且在添加的时候,会对特定项进行非空验证,并且会有相应的提示。添加成功后,会更新数据库列表并进入用户首页。如图3-7所示:图3-7 添加用户主要代码见附录:添加用户主代码。在用户管理首页,点击用户名称会跳转到用户详情页面,可以查看用户更加详细的信息。如图3-8所示:图3-8用户详情主要代码见附录:查看用户详情主代码。在用户详情页面中,用户可以根据需求修改用户的信息,也可以删除此用户。修改信息会对
7、所填表单进行非空判断,点击“提交”按钮时,会更新数据库并显示到页面。如图3-9所示:图3-9 修改用户信息主要代码见附录:修改用户主代码。3.3.3账单管理模块点击左边导航栏中的“账单管理”,会进入账单管理界面。用户可以在此界面根据不同需求对数据进行增、删、改、查等相关操作。如图3-10所示:图3-10 账单管理界面在这个界面,用户可以通过搜索框输入商品名称,查找到符合条件的结果,如图3-11所示:图3-11 查找账单界面主要代码见附录:查找账单主代码。用户也可以在账单界面点击“添加数据”按钮来进行数据的添加功能。并且在添加的时候,会对特定项进行非空验证,并且会有相应的提示。添加成功后,会更新
8、数据库列表并返回账单首页。如图3-12所示:图3-12 添加账单主要代码见附录:添加账单主代码。在账单管理首页,点击商品名称会跳转到账单详情页面,可以查看账单更加详细的信息。如图3-13所示:图3-13 账单详情主要代码见附录:查看账单详情主代码。在账单详情页面中,用户可以根据需求修改账单的信息,也可以删除此账单。修改信息会对所填表单进行非空验证,点击“提交”按钮时,会更新数据库并显示到页面。如图3-14所示:图3-14 修改账单信息主要代码见附录:修改账单主代码。3.3.4供应商管理点击左边导航栏中的“供应商管理”,会进入供应商管理界面。用户可以在此界面根据不同需求对数据进行增、删、改、查等
9、相关操作。如图3-15所示:图3-15 供应商管理界面在这个界面,用户可以通过搜索框输入供应商名称,查找到符合条件的结果,如图3-16所示:图3-16 查找供应商主要代码见附录:查找供应商主代码。用户也可以在供应商界面点击“添加数据”按钮来进行数据的添加功能。并且在添加的时候,会对特定项进行非空验证,并且会有相应的提示。添加成功后,会更新数据库列表并返回供应商首页。如图3-17所示:图3-17 添加供应商主要代码见附录:添加供应商主代码。在供应商管理首页,点击供应商名称会跳转到供应商详情页面,可以查看供应商更加详细的信息。如图3-18所示:图3-18 供应商详情主要代码见附录:查看供应商详情主
10、代码。在供应商详情页面中,用户可以根据需求修改供应商的信息,也可以删除此供应商。修改信息会对所填表单进行非空判断,点击“提交”按钮时,会更新数据库并显示到页面。如图3-19所示:图3-19 修改供应商信息4 系统的特点与不足4.1系统的特点 1 开发简单 本系统是基于java web开发的系统,使用MVC模式实现,主要用JavaBean、Jsp和Servlet技术充当MVC模式中的模型层、视图层和控制层,依靠Servlet技术接收Jsp传来的参数,根据不同情况调用不同的JavaBean处理用户请求,跳转到相应的Jsp页面将结果展现给用户。整个系统结构清晰,结构简单,便于开发。 2便于维护和升级
11、 本系统使用JDBC技术连接数据库,可以连接不同数据库,可移植性好;同时,整个系统的代码按照功能进行了详细的分层,结构明确,有条有理,方便开发人员对系统功能的扩展、升级和维护。 3使用方便本系统使用B/S架构实现,因此在使用时无需安装其他客户端软件,在浏览器上就可以完成登录和其他操作。同时,用户界面是采用Internet的设计方式,界面简单、整洁,导航清晰,用户很快就可以掌握使用方法。4系统安全、稳定本系统的软件建立在性能稳定的Windows操作平台上的,系统在开发以及调试的时候,每一个阶段都经过严格把关,每一个流程都进过严格的测试,确保系统的安全性和稳定性。4.2系统的不足1功能不太完善由于
12、时间仓促,并且没有什么经验,所以系统开发的时候考虑的不是很周全,系统实现的功能过于简单,只是简单的实现了用户、账单和商品的增、删、改、查。没有更复杂的操作。而且项目中就简单的创建了三个表,而且表与表之间没有什么关联,这在实际应用中附录系统登录主代码public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException /处理乱码 response.setContentType(text/html;charset=UTF-8); reques
13、t.setCharacterEncoding(UTF-8); PrintWriter out = response.getWriter(); /接受参数 String strUsername=request.getParameter(username); String strPassword=request.getParameter(password); /调用Service层得到用户,判断权限 ConsumerService consumerService=new ConsumerServiceImpl(); Consumer item=consumerService.getUserByUs
14、ername(strUsername); HttpSession session=request.getSession(); session.setAttribute(user, item); /调用service层进行登录验证 Boolean result=consumerService.login(strUsername, strPassword); if(result)/登录成功 response.sendRedirect(/project/page/index.jsp); else String reason=用户名或密码错误; session.setAttribute(reason,
15、 reason); response.sendRedirect(/project/page/login.jsp); 查找用户主代码public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException /处理乱码 response.setContentType(text/html;charset=UTF-8); request.setCharacterEncoding(UTF-8); /接受参数(主要用于根据用户名查找列表,username
16、是从查找页面传过来的) String strUsername=request.getParameter(userName); /分页 PageBean pb=new PageBean(); String strCurrentPage=request.getParameter(currentPage); if(strCurrentPage != null & !.equals(strCurrentPage) pb.setCurrentPage(Integer.parseInt(strCurrentPage); String strPageSize=request.getParameter(pag
17、eSize); if(strPageSize != null & !.equals(strPageSize) pb.setPageSize(Integer.parseInt(strPageSize); /调用Service层,获得所有用户列表 ConsumerService consumerService=new ConsumerServiceImpl(); Listlist=consumerService.getAllUsersByPage(pb,strUsername); request.setAttribute(list, list); request.setAttribute(pb,
18、pb); request.getRequestDispatcher(/page/userIndex.jsp).forward(request, response); 添加用户主代码public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException /处理乱码 response.setContentType(text/html;charset=UTF-8); request.setCharacterEncoding(UTF-8); /接受
19、页面的参数 String strId=request.getParameter(userId); String strName=request.getParameter(username); String strPass=request.getParameter(password); String strAge=request.getParameter(age); String strSex=request.getParameter(sex); String strPhone=request.getParameter(phone); String strAddress=request.getP
20、arameter(address); String strAuthority=request.getParameter(authority); /封装到用户对象 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.se
21、tC_address(strAddress); user.setC_authority(Integer.parseInt(strAuthority); /调用Service层进行添加 ConsumerService consumerService=new ConsumerServiceImpl(); int result=consumerService.addUser(user); PrintWriter out = response.getWriter(); if(result0)/添加成功 out.println(alert(增加成功!);window.location.href=User
22、ListServlet); out.close(); else out.println(alert(增加失败,请重试!);history.go(-1); out.close(); 查看用户详情主代码public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException /处理乱码 response.setContentType(text/html;charset=UTF-8); request.setCharacterEncoding(UTF
23、-8); /接受参数 String strId=request.getParameter(id); int id=Integer.parseInt(strId); /根据id获得对象 ConsumerService consumerService=new ConsumerServiceImpl(); Consumer user=consumerService.getUserById(id); request.setAttribute(user, user); request.getRequestDispatcher(/page/userDetail.jsp).forward(request,
24、response); 修改用户主代码public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException /处理乱码 response.setContentType(text/html;charset=UTF-8); request.setCharacterEncoding(UTF-8); /接受参数 String strId=request.getParameter(id); String strUsername=request.getP
25、arameter(username); String strPassword=request.getParameter(password); String strSex=request.getParameter(sex); String strAge=request.getParameter(age); String strPhone=request.getParameter(phone); String strAddress=request.getParameter(address); String strAuthority=request.getParameter(authority);
26、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); user.setPassword(strPassword); use
27、r.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(result0)/成功 out.println(alert(修改成功!);window.location.href=UserListServ
28、let;); out.close(); else/失败 out.println(alert(修改失败,请重试!);history.go(-1);); out.close(); 查找账单主代码public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException /处理乱码 response.setContentType(text/html;charset=UTF-8); request.setCharacterEncoding(UTF-8)
29、; /接受参数(用于根据商品名称查询) String strName=request.getParameter(pd_Name); /分页 PageBean pb=new PageBean(); String strCurrentPage=request.getParameter(currentPage); if(strCurrentPage!=null & !.equals(strCurrentPage) pb.setCurrentPage(Integer.parseInt(strCurrentPage); String strPageSize=request.getParameter(pageSize); if(strPageSize != null & !.equals(strPageSize)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1