Android快速實(shí)現(xiàn)一個(gè)財(cái)務(wù)APP程序詳解
前言
昨天有個(gè)粉絲朋友也想學(xué)開發(fā)Web和小程序、安卓,問可以在大學(xué)學(xué)會(huì)嗎?
在學(xué)校學(xué)到的東西真的有限:
在很多的高校,有一些教授是學(xué)院派的,他們沒有做過多少開發(fā)工作,上課就是照本宣科,講的知識(shí)點(diǎn)都是陳年落伍的技術(shù),更別說帶學(xué)生做項(xiàng)目了。
現(xiàn)在的很多碩博學(xué)生幫老師做課件,然后老師上課一頓讀。
當(dāng)然有的老師開發(fā)能力也是很強(qiáng)的,他們有開發(fā)經(jīng)驗(yàn),可以更加全面地理解技術(shù)知識(shí)點(diǎn),然后傳遞給學(xué)生,也能拿到一些科研項(xiàng)目,然后帶學(xué)生實(shí)戰(zhàn)。
但是,但是,這種老師少之又少。我平時(shí)輔導(dǎo)過大量的計(jì)算機(jī)學(xué)生,也有個(gè)VIP群,很多學(xué)習(xí)VIP項(xiàng)目的小伙伴,也變得越來越強(qiáng),
我總結(jié)出來,大部門計(jì)算機(jī)教學(xué)水平真的一般般:
1,教材落后,還有很多Java課程在教Swing/SSH框架,這已經(jīng)是淘汰多少年的技術(shù)了。
2,實(shí)戰(zhàn)不足。學(xué)生在大學(xué)期間代碼量極少,少得可憐,沒有項(xiàng)目實(shí)戰(zhàn)。找工作和企業(yè)的要求無法匹配。
3,教授課程方式極其落后。這是計(jì)算機(jī)啊,不是匯報(bào)工作,你全課程ppt有啥用。是念ppt學(xué)生能理解,還是給學(xué)生實(shí)操下項(xiàng)目,學(xué)生可以理解????
4,課后輔導(dǎo)比較差。在國外的一些名校,老師每周抽出三個(gè)小時(shí)作為 office hour,國內(nèi)的老師下課,直接拍屁股走人,課后沒有輔導(dǎo)。
昨天沒事,開發(fā)了一個(gè)APP的財(cái)務(wù)系統(tǒng),如果需要學(xué)習(xí)開發(fā),可以一起?。〖佑?,奧利給!
一,系統(tǒng)的技術(shù)棧
移動(dòng)端,采用安卓進(jìn)行開發(fā),Android它應(yīng)用于安卓系統(tǒng)軟件和程序開發(fā),其由谷歌公司推出,目前在國際市場(chǎng)上有著廣泛的應(yīng)用及開發(fā)環(huán)境,并不瘦限制研發(fā)人員能夠通過修改開放的源代碼來實(shí)現(xiàn)各種使用的 APP軟件,開發(fā)的軟件程序具有界面友好穩(wěn)定性好等特點(diǎn),安卓系統(tǒng)架構(gòu)圖具體如下:

后端采用的Java進(jìn)行開發(fā)的,數(shù)據(jù)庫采用的Mysql。
系統(tǒng)的功能架構(gòu):

二,系統(tǒng)界面







后臺(tái):






三,系統(tǒng)核心代碼
/**
* 小孟v:jishulearn
*/
@Controller
@RequestMapping("/api")
public class ApiController {
@Autowired
private UsersService userService;
@Autowired
private ShouruService shouruService;
@Autowired
private ZhichuService zhichuService;
@Autowired
private GudingzhichuService gudingzhichuService;
@Autowired
private GudingzhichuleixService gudingzhichuleixService;
@Autowired
private ShourutypeService shourutypeService;
@Autowired
private ZhichutypeService zhichutypeService;
@Autowired
private WenzhangService wenzhangService;
@Autowired
private GonggaoService gonggaoService;
@PostMapping("/userlogin")
@ResponseBody
public JsonResult login(String username, String password) {
if (username == null || username.trim().isEmpty()) return JsonResult.error("請(qǐng)輸入賬號(hào)");
if (password == null || password.trim().isEmpty()) return JsonResult.error("請(qǐng)輸入密碼");
Users user = userService.getOne(new QueryWrapper<Users>().eq("username", username).eq("password", password));
if (user != null) {
return JsonResult.ok("登錄成功").setData(user);
} else {
return JsonResult.error("用戶名或密碼錯(cuò)誤");
}
}
@PostMapping("/userreg")
@ResponseBody
public JsonResult reg(String username, String password, String nickname, String dianhua, String youxiang,String image) {
if (username == null || username.trim().isEmpty()) return JsonResult.error("請(qǐng)輸入賬號(hào)");
if (password == null || password.trim().isEmpty()) return JsonResult.error("請(qǐng)輸入密碼");
if (nickname == null || nickname.trim().isEmpty()) return JsonResult.error("請(qǐng)輸入真實(shí)姓名");
if (dianhua == null || dianhua.trim().isEmpty()) return JsonResult.error("請(qǐng)輸入電話");
if (youxiang == null || youxiang.trim().isEmpty()) return JsonResult.error("請(qǐng)輸入郵箱");
Users user1 = new Users();
user1.setUsername(username);
user1.setNickname(nickname);
user1.setPassword(password);
user1.setDianhua(dianhua);
user1.setYouxiang(youxiang);
user1.setImage(image);
Users user = userService.getOne(new QueryWrapper<Users>().eq("username", username));
if (user!=null){
return JsonResult.error("用戶名已經(jīng)存在,請(qǐng)重試!");
}
if (userService.save(user1)) {
return JsonResult.ok("注冊(cè)成功");
}
return JsonResult.error("注冊(cè)失敗");
}
@PostMapping("/userupdate")
@ResponseBody
public JsonResult update(Integer id, String username, String password, String nickname) {
if (username == null || username.trim().isEmpty()) return JsonResult.error("請(qǐng)輸入賬號(hào)");
if (password == null || password.trim().isEmpty()) return JsonResult.error("請(qǐng)輸入密碼");
if (nickname == null || nickname.trim().isEmpty()) return JsonResult.error("請(qǐng)輸入真實(shí)姓名");
Users userone = userService.getById(id);
if (userone == null) {
return JsonResult.ok("用戶不存在!");
}
userone.setUsername(username);
userone.setPassword(password);
userone.setNickname(nickname);
if (userService.updateById(userone)) {
return JsonResult.ok("修改成功");
}
return JsonResult.error("修改失敗");
}
@PostMapping("/userupdatePass")
@ResponseBody
public JsonResult updatePass(Integer id, String username, String password) {
if (username == null || username.trim().isEmpty()) return JsonResult.error("請(qǐng)輸入賬號(hào)");
if (password == null || password.trim().isEmpty()) return JsonResult.error("請(qǐng)輸入密碼");
Users userone = userService.getById(id);
if (userone == null) {
return JsonResult.ok("用戶不存在!");
}
userone.setUsername(username);
userone.setPassword(password);
if (userService.updateById(userone)) {
return JsonResult.ok("修改成功");
}
return JsonResult.error("修改失敗");
}
@PostMapping("/userupdateImage")
@ResponseBody
public JsonResult updateImage(Integer id, String image) {
Users userone = userService.getById(id);
if (userone == null) {
return JsonResult.ok("用戶不存在!");
}
userone.setImage(image);
if (userService.updateById(userone)) {
return JsonResult.ok("修改成功");
}
return JsonResult.error("修改失敗");
}
@ResponseBody
@RequestMapping("/shouru/list")
public JsonResult ShouRuList(String username) {
PageParam<Zhichu> pageParam = new PageParam<>();
pageParam.put("username", username);
List<Shouru> records = shouruService.listAll(pageParam.getNoPageParam());
return JsonResult.ok().setData(records);
}
@ResponseBody
@RequestMapping("/wenzhang/list")
public JsonResult WenZhangList() {
PageParam<Wenzhang> pageParam = new PageParam<>();
List<Wenzhang> records = wenzhangService.listAll(pageParam.getNoPageParam());
return JsonResult.ok().setData(records);
}
@ResponseBody
@RequestMapping("/gonggao/list")
public JsonResult GongGaoList() {
PageParam<Gonggao> pageParam = new PageParam<>();
List<Gonggao> records = gonggaoService.listAll(pageParam.getNoPageParam());
return JsonResult.ok().setData(records);
}/**
* 管理
* Created by xiaomeng,vx:jiushulearn
*/
@Controller
@RequestMapping("/caiwu/gonggao")
public class GonggaoController extends BaseController {
@Autowired
private GonggaoService gonggaoService;
@RequestMapping()
public String view() {
return "caiwu/gonggao.html";
}
/**
* 分頁查詢
*/
@ResponseBody
@RequestMapping("/page")
public PageResult<Gonggao> page(HttpServletRequest request) {
PageParam<Gonggao> pageParam = new PageParam<>(request);
return new PageResult<>(gonggaoService.page(pageParam, pageParam.getWrapper()).getRecords(), pageParam.getTotal());
//return gonggaoService.listPage(pageParam); // 使用關(guān)聯(lián)查詢
}
/**
* 查詢?nèi)?
*/
@ResponseBody
@RequestMapping("/list")
public JsonResult list(HttpServletRequest request) {
PageParam<Gonggao> pageParam = new PageParam<>(request);
return JsonResult.ok().setData(gonggaoService.list(pageParam.getOrderWrapper()));
//List<Gonggao> records = gonggaoService.listAll(pageParam.getNoPageParam()); // 使用關(guān)聯(lián)查詢
//return JsonResult.ok().setData(pageParam.sortRecords(records));
}
/**
* 根據(jù)id查詢
*/
@ResponseBody
@RequestMapping("/get")
public JsonResult get(Integer id) {
return JsonResult.ok().setData(gonggaoService.getById(id));
// 使用關(guān)聯(lián)查詢
//PageParam<Gonggao> pageParam = new PageParam<>();
//pageParam.put("id", id);
//List<Gonggao> records = gonggaoService.listAll(pageParam.getNoPageParam());
//return JsonResult.ok().setData(pageParam.getOne(records));
}
/**
* 添加
*/
@ResponseBody
@RequestMapping("/save")
public JsonResult save(Gonggao gonggao) {
if (gonggaoService.save(gonggao)) {
return JsonResult.ok("添加成功");
}
return JsonResult.error("添加失敗");
}
/**
* 修改
*/
@ResponseBody
@RequestMapping("/update")
public JsonResult update(Gonggao gonggao) {
if (gonggaoService.updateById(gonggao)) {
return JsonResult.ok("修改成功");
}
return JsonResult.error("修改失敗");
}
/**
* 刪除
*/
@ResponseBody
@RequestMapping("/remove")
public JsonResult remove(Integer id) {
if (gonggaoService.removeById(id)) {
return JsonResult.ok("刪除成功");
}
return JsonResult.error("刪除失敗");
}
/**
* 批量添加
*/
@ResponseBody
@RequestMapping("/saveBatch")
public JsonResult saveBatch(@RequestBody List<Gonggao> list) {
if (gonggaoService.saveBatch(list)) {
return JsonResult.ok("添加成功");
}
return JsonResult.error("添加失敗");
}
/**
* 批量修改
*/
@ResponseBody
@RequestMapping("/updateBatch")
public JsonResult updateBatch(@RequestBody BatchParam<Gonggao> batchParam) {
if (batchParam.update(gonggaoService, "id")) {
return JsonResult.ok("修改成功");
}
return JsonResult.error("修改失敗");
}@Controller
@RequestMapping("/caiwu/gudingzhichu")
public class GudingzhichuController extends BaseController {
@Autowired
private GudingzhichuService gudingzhichuService;
@Autowired
private GudingzhichuleixService gudingzhichuleixService;
private List<String> shijianleixing=new ArrayList<>();
@RequestMapping()
public String view(Model model) {
model.addAttribute("leixing",gudingzhichuleixService.list());
//每周 每月 每年 一直
shijianleixing.add("每周");
shijianleixing.add("每月");
shijianleixing.add("每年");
shijianleixing.add("一直");
model.addAttribute("shijianleixing", shijianleixing);
return "caiwu/gudingzhichu.html";
}
/**
* 分頁查詢
*/
@ResponseBody
@RequestMapping("/page")
public PageResult<Gudingzhichu> page(HttpServletRequest request) {
PageParam<Gudingzhichu> pageParam = new PageParam<>(request);
return new PageResult<>(gudingzhichuService.page(pageParam, pageParam.getWrapper()).getRecords(), pageParam.getTotal());
//return gudingzhichuService.listPage(pageParam); // 使用關(guān)聯(lián)查詢
}
/**
* 查詢?nèi)?
*/
@ResponseBody
@RequestMapping("/list")
public JsonResult list(HttpServletRequest request) {
PageParam<Gudingzhichu> pageParam = new PageParam<>(request);
return JsonResult.ok().setData(gudingzhichuService.list(pageParam.getOrderWrapper()));
//List<Gudingzhichu> records = gudingzhichuService.listAll(pageParam.getNoPageParam()); // 使用關(guān)聯(lián)查詢
//return JsonResult.ok().setData(pageParam.sortRecords(records));
}
/**
* 根據(jù)id查詢
*/
@ResponseBody
@RequestMapping("/get")
public JsonResult get(Integer id) {
return JsonResult.ok().setData(gudingzhichuService.getById(id));
// 使用關(guān)聯(lián)查詢
//PageParam<Gudingzhichu> pageParam = new PageParam<>();
//pageParam.put("id", id);
//List<Gudingzhichu> records = gudingzhichuService.listAll(pageParam.getNoPageParam());
//return JsonResult.ok().setData(pageParam.getOne(records));
}
/**
* 添加
*/
@ResponseBody
@RequestMapping("/save")
public JsonResult save(Gudingzhichu gudingzhichu) {
if (gudingzhichuService.save(gudingzhichu)) {
return JsonResult.ok("添加成功");
}
return JsonResult.error("添加失敗");
}
/**
* 修改
*/
@ResponseBody
@RequestMapping("/update")
public JsonResult update(Gudingzhichu gudingzhichu) {
if (gudingzhichuService.updateById(gudingzhichu)) {
return JsonResult.ok("修改成功");
}
return JsonResult.error("修改失敗");
}到此這篇關(guān)于Android快速實(shí)現(xiàn)一個(gè)財(cái)務(wù)APP程序詳解的文章就介紹到這了,更多相關(guān)Android財(cái)務(wù)APP內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Android 個(gè)人理財(cái)工具六:顯示賬單明細(xì) 下
- Android 個(gè)人理財(cái)工具五:顯示賬單明細(xì) 上
- Android 個(gè)人理財(cái)工具四:添加賬單頁面 下
- Android 個(gè)人理財(cái)工具三:添加賬單頁面 上
- Android 個(gè)人理財(cái)工具二:使用SQLite實(shí)現(xiàn)啟動(dòng)時(shí)初始化數(shù)據(jù)
- Android 個(gè)人理財(cái)工具一:項(xiàng)目概述與啟動(dòng)界面的實(shí)現(xiàn)
- Android 錢包支付之輸入支付密碼的實(shí)現(xiàn)步驟
- Android 高仿微信轉(zhuǎn)賬金錢輸入框規(guī)則
相關(guān)文章
Android模擬器實(shí)現(xiàn)手機(jī)添加文件到sd卡的方法
這篇文章主要介紹了Android模擬器實(shí)現(xiàn)手機(jī)添加文件到sd卡的方法,詳細(xì)分析了Android模擬器添加文件到sd卡的步驟與相關(guān)技巧,需要的朋友可以參考下2016-06-06
一文帶你了解Android中的網(wǎng)絡(luò)請(qǐng)求
安卓開發(fā)網(wǎng)絡(luò)請(qǐng)求可謂是安卓開發(fā)的靈魂,如果你不會(huì)網(wǎng)絡(luò)請(qǐng)求,那么你開發(fā)的應(yīng)用軟件就是一具沒有靈魂的枯骨。本文主要為大家介紹的是Android的網(wǎng)絡(luò)請(qǐng)求,感興趣的可以跟隨小編一起學(xué)習(xí)一下2022-11-11
Android自定義View實(shí)現(xiàn)仿1號(hào)店垂直滾動(dòng)廣告條代碼
這篇文章主要介紹了Android自定義View實(shí)現(xiàn)仿1號(hào)店垂直滾動(dòng)廣告條代碼,實(shí)現(xiàn)步驟及實(shí)現(xiàn)原理本文給大家介紹的非常詳細(xì),需要的朋友參考下吧2017-01-01
Android開發(fā)四大組件之實(shí)現(xiàn)電話攔截和電話錄音
這篇文章給大家介紹Android開發(fā)四大組件之實(shí)現(xiàn)電話攔截和電話錄音,涉及到android四大基本組件在程序中的應(yīng)用,對(duì)android四大基本組件感興趣的朋友可以參考下本篇文章2015-10-10
Android簡(jiǎn)單實(shí)現(xiàn)菜單拖拽排序的功能
這篇文章主要介紹了Android簡(jiǎn)單實(shí)現(xiàn)菜單拖拽排序的功能,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)價(jià)值,需要的朋友可以參考一下2022-07-07
Android中使用Vectors(2)繪制優(yōu)美的路徑動(dòng)畫
這篇文章主要介紹了Android中使用Vectors(2)繪制優(yōu)美的路徑動(dòng)畫的相關(guān)資料,需要的朋友可以參考下2016-03-03
Android編程實(shí)現(xiàn)讀取工程中的txt文件功能
這篇文章主要介紹了Android編程實(shí)現(xiàn)讀取工程中的txt文件功能,結(jié)合實(shí)例形式詳細(xì)分析了Android讀取txt文件的原理、操作步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-02-02
Android Studio導(dǎo)入項(xiàng)目非常慢的解決方法
這篇文章主要為大家詳細(xì)介紹了Android Studio導(dǎo)入項(xiàng)目非常慢的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11

