记账本二次开发
一.概述
我国经济飞速发展,各种手机软件也都在被广泛应用,如今大家有了更多的渠道花钱,如今记账本小程序的开发使得人们可以随时随地进行支出收入的计算,同时也督促自己管理好自己的资产。特开发了记账微信小程序。
记账本的设计主要是对系统所要实现的功能进行详细考虑,确定所要实现的功能后进行界面的设计,在这中间还要考虑如何可以更好的将功能及页面进行很好的结合,方便用户可以很容易明了的找到自己所需要的信息,还有系统平台后期的可操作性,通过对信息内容的详细了解进行技术的开发。
二.流程图
理想
三.原代码
用户登录
`protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter(“username”);
String password = req.getParameter(“password”);
String type = req.getParameter(“type”);
HttpSession session = req.getSession();
try {
if(type.equals(“用户”)){
if(str.equals(randomCode)){
User user = userService.loginUser(username, password);
session.setAttribute(“currentUser”, user);
session.setAttribute(“currentType”, “用户”);
req.getRequestDispatcher(“index.jsp”).forward(req, resp);
}
else{
req.setAttribute(“messageInfo”, “验证码错误!请重新输入”);
req.getRequestDispatcher(“login.jsp”).forward(req, resp);
}} catch (Exception e) {
req.setAttribute(“messageInfo”, e.getMessage());
e.printStackTrace();
req.getRequestDispatcher(“login.jsp”).forward(req, resp);
}
}
@Override
public User loginUser(String username, String password) throws UserException {
User user2 = userDao.findUserByName(username);
if(user2==null){
throw new UserException(“用户名不存在,请重新输入!”);
}if(!password.equals(user2.getPassword())){
throw new UserException(“登录密码错误,请重新输入!”);
}
return user2;
}
用户注册
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter(“user.name”);
String password = req.getParameter(“user.pass”);
String rname = req.getParameter(“user.rname”);
String sex = req.getParameter(“user.sex”);
String age = req.getParameter(“user.age”);
String tel = req.getParameter(“user.tel”);
user = new User(name,sex,age,password,tel,rname,new Date());
HttpSession session = req.getSession();
session.setAttribute(“user”, user);
try{
userService.registerUser(user);
req.getRequestDispatcher(“zhuceSuccess.jsp”).forward(req, resp);
}
@Override
public void registerUser(User user) throws UserException {
User user2 = userDao.findUserByName(user.getName());
if(user2!=null){
throw new UserException(“用户已存在,请重新输入!”);
}else{
userDao.saveUser(user);
}
}
信息修改
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String str = req.getParameter(“user.id”);
long id = Long.parseLong(str);
String name = req.getParameter(“user.name”);
String password = req.getParameter(“user.pass”);
String rname = req.getParameter(“user.rname”);
String sex = req.getParameter(“user.sex”);
String age = req.getParameter(“user.age”);
String tel = req.getParameter(“user.tel”);
HttpSession session = req.getSession();
user = new User(id,name,sex,age,password,tel,rname,new Date());
try{
userService.editUser(user);
resp.sendRedirect(“editUserSuccess.jsp”);
}
@Override
public void editUser(User user) {
userDao.updateUser(user);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try {
String name = req.getParameter(“zhang.name”);
String type = req.getParameter(“zhang.type”);
String kind = req.getParameter(“zhang.kind”);
String date = req.getParameter(“zhang.date”);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(“yyyy-MM-dd”);
Date time = simpleDateFormat.parse(date);
String string = req.getParameter(“zhang.count”);
double count =Double.parseDouble(string);
String yong = req.getParameter(“zhang.yong”);
String info = req.getParameter(“http://zhang.info“);
HttpSession session = req.getSession();
User user = (User) session.getAttribute(“currentUser”);
String rname = user.getRname();
String username = user.getName();
Zhang zhang = new Zhang(name,username,rname,type,kind,time,count,yong,info);
zhangService.addZhang(zhang);
List
System.out.println(list);
req.getSession().setAttribute(“zhang_list”, list);
resp.sendRedirect(“zhang/zhang_list.jsp”);
@Override
public void addZhang(Zhang zhang) throws ZhangException {
try{
zhangdao.addZhang(zhang);
}catch(Exception e){
throw new ZhangException(“添加失败,请重新添加”);
}
}记账流程
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
User user = (User) session.getAttribute(“currentUser”);
String name = user.getName();
List
session.setAttribute(“zhang_list”, list);
resp.sendRedirect(“zhang/zhang_list.jsp”);
}
@Override
public List
return zhangdao.findZhangByUsername(username);
}查询
Tong tong1 = tongService.findTongByMonth(month,username);
if(tong1==null){
Tong tong = new Tong(username,”入账”,”公费”,new Date(),year,month,num1,num2);
tongService.saveTong(tong);
String info=”<set name=’出账’ value='”+tong.getZhi()+”‘ /><set name=’入账’ value='”+tong.getShou()+”‘ />”;
req.setAttribute(“data”, info);
req.getRequestDispatcher(“zhang/zhang_ylist.jsp”).forward(req, resp);
}else{
long id =tong1.getId();
Tong tong = new Tong(id,username,”入账”,”公费”,new Date(),year,month,num1,num2);
tongService.updateTong(tong);
String info=”<set name=’出账’ value='”+tong.getZhi()+”‘ /><set name=’入账’ value='”+tong.getShou()+”‘ />”;
req.setAttribute(“data”, info);
req.getRequestDispatcher(“zhang/zhang_ylist.jsp”).forward(req, resp);`
四.功能方面的开发
1. 明细方面
① 货币仅支持人民币,可以加设多种货币,记录后并自动以当天汇率转化为人民币。
② 关于初始的明细方面,设置的分类过于复杂,可精简设置,后续用户自己依据自身需求进行添加。
③ 记录支出和收入时,可以分配不同银行卡和不同平台,更好管理资产。
2. 图表方面
① 增加图标制作方面。
② 可以根据分类进行图表制作,如饮食方面的图表制作可以使用户一目了然。
3. 记账方面
① 总数据不够明确。
② 账户云端数据同步做的不完整。
③ 可设置每月/年的存储计划以及预算设置,督促用户存钱。
④ 可进行与上月/年的支出进行对比,花费大头一目了然。
4. 发现方面
① 可根据用户记账习惯推荐理财产品或者文章。
② 可与外卖,网购平台联合,推出抢购优惠券等活动,为用户节省财产支出。
5. 设置方面
① 专业版的费用对比于得到的额外功能没有达到预期。
② 可以多设置几个声音键,增加趣味性。
③ iCloud对于安卓用户不适用,可以后续开发一项适合安卓用户云存储的东西。
④ 可设置进入app输入的密码,对隐私进行保护。
⑤ 语言比较单一,仅支持中文。
⑥ 可加入拍照记账,减轻用户记账负担和难度。
⑦ 页面过于简单,可增加自选壁纸,或者更换主题颜色等功能,使用户使用app时更加赏心悦目。
⑧ 交互上,可以更加优化,鲨鱼记账的交互中规中矩,可对比其他记账软件,让用户体验感更好。
五.增添饼状图
`
Tong tong1 = tongService.findTongByMonth(month,username);
if(tong1==null){
Tong tong = new Tong(username,”入账”,”公费”,new Date(),year,month,num1,num2);
tongService.saveTong(tong);
String info=”<set name=’出账’ value='”+tong.getZhi()+”‘ /><set name=’入账’ value='”+tong.getShou()+”‘ />”;
req.setAttribute(“data”, info);
req.getRequestDispatcher(“zhang/zhang_ylist.jsp”).forward(req, resp);
}else{
long id =tong1.getId();
Tong tong = new Tong(id,username,”入账”,”公费”,new Date(),year,month,num1,num2);
tongService.updateTong(tong);
String info=”<set name=’出账’ value='”+tong.getZhi()+”‘ /><set name=’入账’ value='”+tong.getShou()+”‘ />”;
req.setAttribute(“data”, info);
req.getRequestDispatcher(“zhang/zhang_ylist.jsp”).forward(req, resp);`
运行结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通