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

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

二,系統(tǒng)界面







后臺:






三,系統(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("請輸入賬號");
if (password == null || password.trim().isEmpty()) return JsonResult.error("請輸入密碼");
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("用戶名或密碼錯誤");
}
}
@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("請輸入賬號");
if (password == null || password.trim().isEmpty()) return JsonResult.error("請輸入密碼");
if (nickname == null || nickname.trim().isEmpty()) return JsonResult.error("請輸入真實姓名");
if (dianhua == null || dianhua.trim().isEmpty()) return JsonResult.error("請輸入電話");
if (youxiang == null || youxiang.trim().isEmpty()) return JsonResult.error("請輸入郵箱");
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)存在,請重試!");
}
if (userService.save(user1)) {
return JsonResult.ok("注冊成功");
}
return JsonResult.error("注冊失敗");
}
@PostMapping("/userupdate")
@ResponseBody
public JsonResult update(Integer id, String username, String password, String nickname) {
if (username == null || username.trim().isEmpty()) return JsonResult.error("請輸入賬號");
if (password == null || password.trim().isEmpty()) return JsonResult.error("請輸入密碼");
if (nickname == null || nickname.trim().isEmpty()) return JsonResult.error("請輸入真實姓名");
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("請輸入賬號");
if (password == null || password.trim().isEmpty()) return JsonResult.error("請輸入密碼");
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快速實現(xiàn)一個財務(wù)APP程序詳解的文章就介紹到這了,更多相關(guān)Android財務(wù)APP內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android仿支付寶自定義密碼輸入框及安全鍵盤(密碼鍵盤)
這篇文章主要介紹了Android仿支付寶自定義密碼輸入框及安全鍵盤(密碼鍵盤),需要的朋友可以參考下2018-01-01
Android開發(fā)使用自定義View將圓角矩形繪制在Canvas上的方法
這篇文章主要介紹了Android開發(fā)使用自定義View將圓角矩形繪制在Canvas上的方法,結(jié)合實例形式分析了Android自定義view繪制圓角矩形的相關(guān)方法與使用技巧,需要的朋友可以參考下2017-10-10
Android實現(xiàn)史上最簡單自定義開關(guān)按鈕的方法
在平常的開發(fā)中按鈕是經(jīng)常使用到的控件之一,下面這篇文章主要給大家介紹了關(guān)于Android實現(xiàn)史上最簡單自定義開關(guān)按鈕的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-04-04
android 跳轉(zhuǎn)進市場的實現(xiàn)代碼
本篇文章是對android中跳轉(zhuǎn)進市場的實現(xiàn)代碼進行了詳細的分析介紹,需要的朋友參考下2013-06-06
第三方開源Android TickPlusDrawable狀態(tài)可以通過動畫切換的按鈕
Android tickplusdrawable(TickPlusDrawable)是一個狀態(tài)可以通過動畫切換的按鈕,本文給大家分享第三方開源Android TickPlusDrawable狀態(tài)可以通過動畫切換的按鈕,感興趣的朋友一起學(xué)習(xí)吧2015-12-12

