1、javaEE-课程设计-个人财务管理系统软 件 学 院课程设计报告书课程名称 JavaEE 课程设计 设计题目 个人财务系统 专业班级 软件工程 学 号 xxxxxxxxx07 姓 名 xxxxx 指导教师 姜彦吉 2011 年 12 月1 设计时间2011年12月12日12月16日2 设计目的JavaEE课程设计是对所学JavaEE与中间件课程的小结,是提高学生对所学知识综合应用能力的一种方式,是集中实践性环节之一。要求同学们对课程中所学习到的知识综合运用,开发有一定规模的Java Web程序。3设计任务设计个人帐务管理系统,要求用户以合法的身份登录后可以对系统进行操作,用户可以查看,添加,
2、删除和计算某段时间内帐务的收入和支出信息等。帐务信息包括收入和支出两种,还有日期和备注。4 设计内容 4.1 设计题目个人财务管理系统 4.1.1系统功能要求用只有拥有合法身份才能登录系统,用以合法身份登录后可以产看帐务信息、添加帐务信息、删除帐务信息、分别统计某个时间段内的收入和支出总额。4.1.2 数据库存储要求 数据的存储要求:收入数额,支出数额,备注,日期4.1.3数据库的设计 表1(数据存储要求)列名称数据类型长度idbigint8incomemoneymoney8costmoneymoney8recordvarchar50timevarchar8图1(数据库存储数据)4.1.4系统
3、构造关系登陆窗口 no密码yes操作界面 查询保存计算帐目删除图2(jsp页面构造)Jsp页面传递参数调用servlet类参数计算方法servlet删除方法servlet查询方法servlet保存方法servlet删除方法dao类查询方法dao类保存方法dao类计算方法dao类图3(Java类功能调用)4.2 Jsp 页面设计4.2.1登录界面 图4(登录界面)代码如下:欢迎登陆个人财务统计系统! 用户名称:用户密码: 4.2.2登录成功界面 图5(登录成功查询界面) 代码如下: 欢迎登录: 增加帐目明细请输入: 收入数额: 支出数额: 附加备注: 输入日期: 查询帐目明细请点击: 删除帐目信
4、息请如下: 请输入要 删除帐目的日期: 起始Id号: 终止Id号: 4.2.3查询结果界面图6(查询结果界面)4.3Java方法设计4.3.1Servlet类控制增删改操作的servlet类代码设计如下:public class AccountController extends HttpServlet protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException doPost(request,response);protect
5、ed void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException int arg=Integer.parseInt(request.getParameter(arg); switch(arg) case 1:this.findAllAccount(request,response); break; case 2:this.saveAllAccount(request,response); break; case 3:this.deleteSom
6、eAccount(request,response); break; case 4:this.caculateAccount(request,response); break; protected void caculateAccount(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException int a=0;int b=0; a=Integer.parseInt(request.getParameter(id); b=Integer.parseInt(requ
7、est.getParameter(id); AccountDao accountDao=new AccountDao(); List list2=accountDao.caculateAccount(a,b); request.setAttribute(result,list2); RequestDispatcher rdt1=request.getRequestDispatcher(/Result1.jsp); rdt1.forward(request, response);public void findAllAccount(HttpServletRequest request, Http
8、ServletResponse response) throws ServletException, IOException AccountDao accountDao=new AccountDao(); List list=accountDao.findAllAccount(); request.setAttribute(accounts, list); RequestDispatcher rdt=request.getRequestDispatcher(/Result.jsp); rdt.forward(request, response); public void saveAllAcco
9、unt(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException request.setCharacterEncoding(gbk); double incomemoney=0.0; double costmoney=0.0; incomemoney=Double.parseDouble(request.getParameter(incomemoney); costmoney=Double.parseDouble(request.getParameter(cost
10、money); String record=(String)request.getParameter(record); String time=(String)request.getParameter(time); MyAccount myAccount=new MyAccount(); myAccount.setIncomemoney(incomemoney); myAccount.setCostmoney(costmoney); myAccount.setRecord(record); myAccount.setTime(time); AccountDao accountDao=new A
11、ccountDao(); try accountDao.saveAllAccount(myAccount); catch(Exception e) e.printStackTrace(); this.findAllAccount(request,response); public void deleteSomeAccount(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException request.setCharacterEncoding(gbk); String
12、 time=request.getParameter(time); MyAccount myAccount=new MyAccount(); myAccount.setTime(time); AccountDao accountDao=new AccountDao(); try accountDao.deleteSomeAccount(myAccount); catch(Exception e) e.printStackTrace(); this.findAllAccount(request, response); 密码验证的Servlet类的代码如下:public class LoginSe
13、rvlet extends HttpServlet public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException doGet(req,resp);public void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException String username=req.getParameter(username); Strin
14、g password=req.getParameter(password); User user=new User(); user.setUsername(username); user.setPassword(password); HttpSession session=req.getSession(); String forward=; if(UserService.CheckLogin(user) forward=/Search.jsp; session.setAttribute(name, username); else forward=/error.jsp; RequestDispa
15、tcher rd=req.getRequestDispatcher(forward); rd.forward(req,resp); 4.3.2Dao类密码验证的Dao类代码设计如下:public class UserService public static boolean CheckLogin(User user) if(user.getUsername().equals(lb)&user.getPassword().equals(123) return true; return false; 帐务添加查询计算的Dao类代码设计如下:public class AccountDao priva
16、te Connection conn; public List findAllAccount() conn=DBCon.getConnection(); String listSQL=select * from myaccount; List list=new ArrayList(); try PreparedStatement psmt=conn.prepareStatement(listSQL); ResultSet rs=psmt.executeQuery(); while(rs.next() MyAccount account=new MyAccount(); account.setI
17、d(rs.getInt(1); account.setIncomemoney(rs.getDouble(2); account.setCostmoney(rs.getDouble(3); account.setRecord(rs.getString(4); account.setTime(rs.getString(5); list.add(account); mit(); return list; catch(Exception e) e.printStackTrace(); finally if(conn!=null) try conn.close(); catch(SQLException
18、 e) e.printStackTrace(); return list; public boolean saveAllAccount(MyAccount account)throws Exception conn=DBCon.getConnection(); String listSQL=insert into myaccount values(?,?,?,?); PreparedStatement psmt=conn.prepareStatement(listSQL); try psmt.setDouble(1, account.getIncomemoney(); psmt.setDoub
19、le(2, account.getCostmoney(); psmt.setString(3, account.getRecord(); psmt.setString(4, account.getTime(); psmt.executeUpdate(); mit(); return true; catch(SQLException e) conn.rollback(); e.printStackTrace(); return false; public boolean deleteSomeAccount(MyAccount account)throws Exception conn=DBCon
20、.getConnection(); String listSQL=delete from myaccount where time=? ; PreparedStatement psmt=conn.prepareStatement(listSQL); try psmt.setString(1, account.getTime(); psmt.executeUpdate(); mit(); return true; catch(SQLException e) conn.rollback(); e.printStackTrace(); return false; public List cacula
21、teAccount(int x,int y) conn=DBCon.getConnection(); double incometotal=0.0; double costtotal=0.0; int i=0; List list2=new ArrayList(); try MyAccount account=new MyAccount(); for( i=x;i=y;i+) String listSQL1=selct incomemoney from myaccount where id=i; PreparedStatement psmt1=conn.prepareStatement(lis
22、tSQL1); ResultSet rs1=psmt1.executeQuery(); psmt1.execute(); incometotal=incometotal+rs1.getDouble(2); String listSQL2=select costmoney from myaccount where id=i; PreparedStatement psmt2=conn.prepareStatement(listSQL2); ResultSet rs2=psmt2.executeQuery(); psmt2.execute(); costtotal=costtotal+rs2.get
23、Double(3); mit(); account.setIncomemoney(incometotal); account.setCostmoney(costtotal); list2.add(account); return list2; catch(SQLException e) e.printStackTrace(); return list2; 4.3.3数据库连接类数据库连接代码如下:public class DBCon public static Connection getConnection() String url=jdbc:microsoft:sqlserver:/loc
24、alhost:1433;databaseName=myaccountbase;String user=sa;String psw=sa;Connection conn=null;tryClass.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);catch(ClassNotFoundException e)e.printStackTrace();tryconn=DriverManager.getConnection(url, user, psw);conn.setAutoCommit(false);return conn;catch(S
25、QLException e)e.printStackTrace();return null;5 总结与展望通过本次课程设计自己JavaWeb编程加深了理解,对MVC模型的工作原理和工作过程有了更深刻的理解,对struts2模型及其工作过程也有了比从前更深的认识,对于如何配置web.xml和struts.xml文件也加深了记忆,Filterdispatcher过滤器的作用自己也进一步加深了印象。最重要的是自己在这次课程设计中培养了自己独立觉问题的能力和解决问题的耐心。比如自己在计算收入和支出帐务的和的时候,刚开始自己所写的算法之不能正确的计算出结果,总是在返回的物理视图显示0.0 0.0,在运行
26、期间控制没有显示任何错误,原来自己在初始化的时候给incometotal和costtotal都初始化为0.0而自己的方法在执行查询语句后得到一个Resultset结果集自己在累加计算收入和支出的综合的时候,自己在if语句的调减中rs.next()取非,导致没有进行累加计算,结果如论如何都返回0.0和0.0这两个结果。只要把去非的!去掉即可得到正确的计算结果并返回给物理视图。参考文献1 范立峰,林果园.JavaWeb程序设计教程.第1版, 北京:人民邮电出版社,2010 成绩评定成绩 教师签字1 目录1 设计时间12 设计目的13设计任务14 设计内容14.1 设计题目14.1.1系统功能要求14.1.2 数据库存储要求14.1.3数据库的设计14.1.4系统构造关系24.2 Jsp 页面设计34.2.1登录界面34.2.2登录成功界面44.2.3查询结果界面54.3.1Servlet类64.3.2Dao类104.3.3数据库连接类145 总结与展望15参考文献15成绩评定15
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100