Java程式設計師週末時間搞錠銀行資訊管理系統畢業設計(java+springboot+mybatis+mysql+vue+elementui)等實現

語言: CN / TW / HK

theme: github highlight: a11y-dark


一起養成寫作習慣!這是我參與「掘金日新計劃 · 4 月更文挑戰」的第7天,點選檢視活動詳情

前言介紹:

在社會快速發展的影響下,銀行繼續發展,大大增加了存取款和貸款的數量、多樣性、質量等等的要求,使小型銀行的管理和運營比過去十年更加困難。依照這一現實為基礎,設計一個快捷而又方便的小型銀行管理系統是一項十分重要並且有價值的事情。對於傳統的在銀行管理制模型來說,銀行管理系統具有許多不可比擬的優勢,首先是快速更新訂單資訊,其次是大量資訊的管理,最後是高度安全,以及使用簡單等特性,這使得小型銀行管理系統的管理和運營非常方便。現代社會的網路和資訊科技不斷提高,人們的生活水平達到一個新的水平。發展小型銀行管理系統正是我們所需要的。這篇文章研究了相關管理系統的開發和實現,從需求分析、總體設計到具體實現,最終完成了整個銀行管理系統,從而方便了使用者和提高了銀行的管理水平。

系統設計:

主要實現

首頁、個人中心、通知公告管理、使用者管理、員工管理、網點資訊管理、賬戶資訊管理、賬戶存款管理、賬戶取款管理、賬戶轉賬管理、線上諮詢管理、銷戶資訊管理、貸款產品管理、貸款資訊管理、還款資訊管理、離職申請管理、系統管理等功能,其具有簡單的介面,方便的應用,強大的互動,完全基於網際網路的特點。 

整個系統是由多個功能模組組合而成的,要將所有的功能模組都一一列舉出來,然後進行逐個的功能設計,使得每一個模組都有相對應的功能設計,然後進行系統整體的設計。

系統結構圖

​​

主要用到以下技術:

Eclipse

本系統使用的是Eclipse, Eclipse是一個整合開發環境,可以用於Java或者移動應用等方面的程式開發。它有許多強大功能如:編譯、除錯、test和釋出等。同時支援一些其他語言如:HTML指令碼,SQL,SPRING BOOT,CSS樣式,Spring,Hibernate,Javascript等。

MySQL

MMySQL資料庫是較為出名的關係形資料庫,它使用大量的二維表來進行儲存資料而不是把資料封裝儲存早同一個“倉庫”中,十分有利於提高速度和資料應用的靈活性。

中小企業網站開發商的首選資料庫一般也是MySQL。SQL語言是它的標準語言。由於該資料庫在體積、速度和運營成本方面的優勢,特別是開放原始碼的技術特點,因此深受開發者的喜愛。

Spring Boot框架

Spring框架是Java平臺上的一種開源應用框架,提供具有控制反轉特性的容器。儘管Spring框架自身對程式設計模型沒有限制,但其在Java應用中的頻繁使用讓它備受青睞,以至於後來讓它作為EJB(EnterpriseJavaBeans)模型的補充,甚至是替補。Spring框架為開發提供了一系列的解決方案,比如利用控制反轉的核心特性,並通過依賴注入實現控制反轉來實現管理物件生命週期容器化,利用面向切面程式設計進行宣告式的事務管理,整合多種持久化技術管理資料訪問,提供大量優秀的Web框架方便開發等等。Spring框架具有控制反轉(IOC)特性,IOC旨在方便專案維護和測試,它提供了一種通過Java的反射機制對Java物件進行統一的配置和管理的方法。Spring框架利用容器管理物件的生命週期,容器可以通過掃描XML檔案或類上特定Java註解來配置物件,開發者可以通過依賴查詢或依賴注入來獲得物件。Spring框架具有面向切面程式設計(AOP)框架,SpringAOP框架基於代理模式,同時執行時可配置;AOP框架主要針對模組之間的交叉關注點進行模組化。Spring框架的AOP框架僅提供基本的AOP特性,雖無法與AspectJ框架相比,但通過與AspectJ的整合,也可以滿足基本需求。Spring框架下的事務管理、遠端訪問等功能均可以通過使用SpringAOP技術實現。Spring的事務管理框架為Java平臺帶來了一種抽象機制,使本地和全域性事務以及巢狀事務能夠與儲存點一起工作,並且幾乎可以在Java平臺的任何環境中工作。

功能截圖:

登入模組:

​​

使用者前臺管理:

系統首頁:在系統首頁可以檢視首頁、網點資訊、貸款產品、銀行資訊、個人中心、後臺管理等內容進行詳細操作

​​

網點資訊:在網點資訊頁面中可以檢視網點名稱、網點介紹、網點圖片、電話、地址等內容進行評論或收藏操作

​​

貸款產品:在貸款產品頁面中可以檢視產品編號、產品名稱、圖片、標籤、額度範圍、月利率、貸款期限、釋出日期、產品介紹等內容進行申請貸款、評論或收藏操作​​

​​

個人中心: 在個人中心頁面通過填寫使用者名稱、密碼、姓名、圖片、性別、聯絡電話、身份證等內容,進行資訊更新操作,還可以根據需要對我的收藏進行詳細操作​​

使用者後臺管理:

管理員登入進入小型銀行管理系統可以檢視首頁、個人中心、通知公告管理、使用者管理、員工管理、網點資訊管理、賬戶資訊管理、賬戶存款管理、賬戶取款管理、賬戶轉賬管理、線上諮詢管理、銷戶資訊管理、貸款產品管理、貸款資訊管理、還款資訊管理、離職申請管理、系統管理等功能進行詳細操作

通知公告管理:在通知公告管理頁面中可以檢視索引、公告標題、圖片、釋出日期等內容,進行詳情,修改或刪除等操作

使用者資訊管理:在網點資訊管理頁面中可以對索引、網點名稱、圖片、網點介紹、電話、地址等內容,進行詳情、修改、檢視評論或刪除等操作

員工資訊管理

員工檔案管理

網點資訊管理

使用者存款管理:在賬戶資訊管理頁面中可以對索引、使用者名稱、姓名、聯絡電話、身份證、卡號、密碼、金額、開卡日期等內容進行詳情、存款、取款、轉賬、修改或刪除等操作

使用者取款管理

使用者轉賬管理:在賬戶轉賬管理頁面中可以對索引、使用者名稱、姓名、聯絡電話、身份證、卡號、金額、對方卡號、開戶名、轉賬說明、轉賬日期、員工工號、員工姓名等內容,進行詳情、修改或刪除等操作

貸款產品管理:在貸款產品管理頁面中可以對索引、產品編號、產品名稱、封面圖、標籤、額度範圍、月利率、貸款期限、釋出日期等內容,進行詳情、修改、檢視評論或刪除等操作

還款資訊管理:在還款資訊管理頁面中可以對索引、產品編號、產品名稱、金額、備註、還款日期、使用者名稱、姓名、聯絡電話、身份證、稽核回覆、稽核狀態、稽核等內容,進行詳情、修改或刪除等操作

員工離職管理

系統設定管理: 

程式碼實現:

````java

/* * 使用者 * 後端介面 * @author * @email * @date 2022-04-08 18:18:08 / @RestController @RequestMapping("/yonghu") public class YonghuController { @Autowired private YonghuService yonghuService;

@Autowired
private TokenService tokenService;

/**
 * 登入
 */
@IgnoreAuth
@RequestMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
    YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", username));
    if(user==null || !user.getMima().equals(password)) {
        return R.error("賬號或密碼不正確");
    }

    String token = tokenService.generateToken(user.getId(), username,"yonghu",  "使用者" );
    return R.ok().put("token", token);
}

/**
 * 註冊
 */
@IgnoreAuth
@RequestMapping("/register")
public R register(@RequestBody YonghuEntity yonghu){
    //ValidatorUtils.validateEntity(yonghu);
    YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", yonghu.getYonghuming()));
    if(user!=null) {
        return R.error("註冊使用者已存在");
    }
    Long uId = new Date().getTime();
    yonghu.setId(uId);
    yonghuService.insert(yonghu);
    return R.ok();
}

/**
 * 退出
 */
@RequestMapping("/logout")
public R logout(HttpServletRequest request) {
    request.getSession().invalidate();
    return R.ok("退出成功");
}

/**
 * 獲取使用者的session使用者資訊
 */
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
    Long id = (Long)request.getSession().getAttribute("userId");
    YonghuEntity user = yonghuService.selectById(id);
    return R.ok().put("data", user);
}

/**
 * 密碼重置
 */
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
    YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", username));
    if(user==null) {
        return R.error("賬號不存在");
    }
    user.setMima("123456");
    yonghuService.updateById(user);
    return R.ok("密碼已重置為:123456");
}


/**
 * 後端列表
 */
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,YonghuEntity yonghu,
    HttpServletRequest request){
    EntityWrapper<YonghuEntity> ew = new EntityWrapper<YonghuEntity>();
    PageUtils page = yonghuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yonghu), params), params));

    return R.ok().put("data", page);
}

/**
 * 前端列表
 */
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,YonghuEntity yonghu, HttpServletRequest request){
    EntityWrapper<YonghuEntity> ew = new EntityWrapper<YonghuEntity>();
    PageUtils page = yonghuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yonghu), params), params));
    return R.ok().put("data", page);
}

/**
 * 列表
 */
@RequestMapping("/lists")
public R list( YonghuEntity yonghu){
    EntityWrapper<YonghuEntity> ew = new EntityWrapper<YonghuEntity>();
    ew.allEq(MPUtil.allEQMapPre( yonghu, "yonghu")); 
    return R.ok().put("data", yonghuService.selectListView(ew));
}

 /**
 * 查詢
 */
@RequestMapping("/query")
public R query(YonghuEntity yonghu){
    EntityWrapper< YonghuEntity> ew = new EntityWrapper< YonghuEntity>();
    ew.allEq(MPUtil.allEQMapPre( yonghu, "yonghu")); 
    YonghuView yonghuView =  yonghuService.selectView(ew);
    return R.ok("查詢使用者成功").put("data", yonghuView);
}

/**
 * 後端詳情
 */
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
    YonghuEntity yonghu = yonghuService.selectById(id);
    return R.ok().put("data", yonghu);
}

/**
 * 前端詳情
 */
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
    YonghuEntity yonghu = yonghuService.selectById(id);
    return R.ok().put("data", yonghu);
}




/**
 * 後端儲存
 */
@RequestMapping("/save")
public R save(@RequestBody YonghuEntity yonghu, HttpServletRequest request){
    yonghu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    //ValidatorUtils.validateEntity(yonghu);
    YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", yonghu.getYonghuming()));
    if(user!=null) {
        return R.error("使用者已存在");
    }
    yonghu.setId(new Date().getTime());
    yonghuService.insert(yonghu);
    return R.ok();
}

/**
 * 前端儲存
 */
@RequestMapping("/add")
public R add(@RequestBody YonghuEntity yonghu, HttpServletRequest request){
    yonghu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    //ValidatorUtils.validateEntity(yonghu);
    YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", yonghu.getYonghuming()));
    if(user!=null) {
        return R.error("使用者已存在");
    }
    yonghu.setId(new Date().getTime());
    yonghuService.insert(yonghu);
    return R.ok();
}

/**
 * 修改
 */
@RequestMapping("/update")
public R update(@RequestBody YonghuEntity yonghu, HttpServletRequest request){
    //ValidatorUtils.validateEntity(yonghu);
    yonghuService.updateById(yonghu);//全部更新
    return R.ok();
}


/**
 * 刪除
 */
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
    yonghuService.deleteBatchIds(Arrays.asList(ids));
    return R.ok();
}

/**
 * 提醒介面
 */
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
                     @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
    map.put("column", columnName);
    map.put("type", type);

    if(type.equals("2")) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar c = Calendar.getInstance();
        Date remindStartDate = null;
        Date remindEndDate = null;
        if(map.get("remindstart")!=null) {
            Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
            c.setTime(new Date()); 
            c.add(Calendar.DAY_OF_MONTH,remindStart);
            remindStartDate = c.getTime();
            map.put("remindstart", sdf.format(remindStartDate));
        }
        if(map.get("remindend")!=null) {
            Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
            c.setTime(new Date());
            c.add(Calendar.DAY_OF_MONTH,remindEnd);
            remindEndDate = c.getTime();
            map.put("remindend", sdf.format(remindEndDate));
        }
    }

    Wrapper<YonghuEntity> wrapper = new EntityWrapper<YonghuEntity>();
    if(map.get("remindstart")!=null) {
        wrapper.ge(columnName, map.get("remindstart"));
    }
    if(map.get("remindend")!=null) {
        wrapper.le(columnName, map.get("remindend"));
    }


    int count = yonghuService.selectCount(wrapper);
    return R.ok().put("count", count);
}

}

````

```java

/* * 銷戶資訊 * 後端介面 * @author * @email * @date 2022-04-08 18:18:08 / @RestController @RequestMapping("/xiaohuxinxi") public class XiaohuxinxiController { @Autowired private XiaohuxinxiService xiaohuxinxiService;

/**
 * 後端列表
 */
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,XiaohuxinxiEntity xiaohuxinxi,
    HttpServletRequest request){
    String tableName = request.getSession().getAttribute("tableName").toString();
    if(tableName.equals("yonghu")) {
        xiaohuxinxi.setYonghuming((String)request.getSession().getAttribute("username"));
    }
    EntityWrapper<XiaohuxinxiEntity> ew = new EntityWrapper<XiaohuxinxiEntity>();
    PageUtils page = xiaohuxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, xiaohuxinxi), params), params));

    return R.ok().put("data", page);
}

/**
 * 前端列表
 */
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,XiaohuxinxiEntity xiaohuxinxi, HttpServletRequest request){
    EntityWrapper<XiaohuxinxiEntity> ew = new EntityWrapper<XiaohuxinxiEntity>();
    PageUtils page = xiaohuxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, xiaohuxinxi), params), params));
    return R.ok().put("data", page);
}

/**
 * 列表
 */
@RequestMapping("/lists")
public R list( XiaohuxinxiEntity xiaohuxinxi){
    EntityWrapper<XiaohuxinxiEntity> ew = new EntityWrapper<XiaohuxinxiEntity>();
    ew.allEq(MPUtil.allEQMapPre( xiaohuxinxi, "xiaohuxinxi")); 
    return R.ok().put("data", xiaohuxinxiService.selectListView(ew));
}

 /**
 * 查詢
 */
@RequestMapping("/query")
public R query(XiaohuxinxiEntity xiaohuxinxi){
    EntityWrapper< XiaohuxinxiEntity> ew = new EntityWrapper< XiaohuxinxiEntity>();
    ew.allEq(MPUtil.allEQMapPre( xiaohuxinxi, "xiaohuxinxi")); 
    XiaohuxinxiView xiaohuxinxiView =  xiaohuxinxiService.selectView(ew);
    return R.ok("查詢銷戶資訊成功").put("data", xiaohuxinxiView);
}

/**
 * 後端詳情
 */
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
    XiaohuxinxiEntity xiaohuxinxi = xiaohuxinxiService.selectById(id);
    return R.ok().put("data", xiaohuxinxi);
}

/**
 * 前端詳情
 */
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
    XiaohuxinxiEntity xiaohuxinxi = xiaohuxinxiService.selectById(id);
    return R.ok().put("data", xiaohuxinxi);
}


/**
 * 後端儲存
 */
@RequestMapping("/save")
public R save(@RequestBody XiaohuxinxiEntity xiaohuxinxi, HttpServletRequest request){
    xiaohuxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    //ValidatorUtils.validateEntity(xiaohuxinxi);
    xiaohuxinxiService.insert(xiaohuxinxi);
    return R.ok();
}

/**
 * 前端儲存
 */
@RequestMapping("/add")
public R add(@RequestBody XiaohuxinxiEntity xiaohuxinxi, HttpServletRequest request){
    xiaohuxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    //ValidatorUtils.validateEntity(xiaohuxinxi);
    xiaohuxinxiService.insert(xiaohuxinxi);
    return R.ok();
}

/**
 * 修改
 */
@RequestMapping("/update")
public R update(@RequestBody XiaohuxinxiEntity xiaohuxinxi, HttpServletRequest request){
    //ValidatorUtils.validateEntity(xiaohuxinxi);
    xiaohuxinxiService.updateById(xiaohuxinxi);//全部更新
    return R.ok();
}


/**
 * 刪除
 */
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
    xiaohuxinxiService.deleteBatchIds(Arrays.asList(ids));
    return R.ok();
}

/**
 * 提醒介面
 */
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
                     @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
    map.put("column", columnName);
    map.put("type", type);

    if(type.equals("2")) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar c = Calendar.getInstance();
        Date remindStartDate = null;
        Date remindEndDate = null;
        if(map.get("remindstart")!=null) {
            Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
            c.setTime(new Date()); 
            c.add(Calendar.DAY_OF_MONTH,remindStart);
            remindStartDate = c.getTime();
            map.put("remindstart", sdf.format(remindStartDate));
        }
        if(map.get("remindend")!=null) {
            Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
            c.setTime(new Date());
            c.add(Calendar.DAY_OF_MONTH,remindEnd);
            remindEndDate = c.getTime();
            map.put("remindend", sdf.format(remindEndDate));
        }
    }

    Wrapper<XiaohuxinxiEntity> wrapper = new EntityWrapper<XiaohuxinxiEntity>();
    if(map.get("remindstart")!=null) {
        wrapper.ge(columnName, map.get("remindstart"));
    }
    if(map.get("remindend")!=null) {
        wrapper.le(columnName, map.get("remindend"));
    }

    String tableName = request.getSession().getAttribute("tableName").toString();
    if(tableName.equals("yonghu")) {
        wrapper.eq("yonghuming", (String)request.getSession().getAttribute("username"));
    }

    int count = xiaohuxinxiService.selectCount(wrapper);
    return R.ok().put("count", count);
}

}

``` ​

論文參考:

原始碼獲取:

大家點贊、收藏、關注、評論啦 、檢視👇🏻👇🏻👇🏻主頁獲取聯絡方式👇🏻👇🏻👇🏻

打卡 文章 更新 257/  365天

「其他文章」