Make writing a habit together! This is the 7th day of my participation in the “Gold Digging Day New Plan · April More text Challenge”. Click here for more details.

Introduction:

Under the influence of rapid social development, banks continue to develop, greatly increasing the requirements on the quantity, diversity and quality of deposits, withdrawals and loans, making the management and operation of small banks more difficult than in the past decade. Based on this reality, it is very important and valuable to design a fast and convenient small bank management system. For the traditional management model in the bank, the bank management system has many incomparable advantages, the first is the rapid update of order information, followed by a large amount of information management, the last is a high degree of security, as well as the use of simple characteristics, which makes the management and operation of small bank management system is very convenient. With the continuous improvement of network and information technology in modern society, people’s living standard has reached a new level. Developing a management system for small banks is exactly what we need. This paper studies the development and implementation of related management system, from demand analysis, overall design to specific implementation, and finally completed the entire bank management system, so as to facilitate users and improve the management level of the bank.

System design:

The main implementation:

Home page, personal center, announcements, information management, user management, staff management, network management, management of account information, account deposit management, account management, account transfer withdrawal management, online consulting, sales information management, loan product management, information management, and payment information management application management, system management, and other functions, it has a simple interface, Convenient application, powerful interaction, completely based on the characteristics of the Internet.

The whole system is composed of multiple functional modules. It is necessary to list all the functional modules one by one, and then carry out the functional design one by one, so that each module has a corresponding functional design, and then carry out the overall design of the system.

System structure drawing

​​

The following technologies are mainly used:

Eclipse

This system uses Eclipse, Eclipse is an integrated development environment, can be used for Java or mobile applications and other aspects of the program development. It has many powerful functions such as compile, debug, test and publish. Support some other languages such as: HTML scripting, SQL, SPRING BOOT, CSS styles, SPRING, Hibernate, Javascript, etc.

 MySQL

MMySQL database is a well-known relational database. It uses a large number of two-dimensional tables to store data rather than encapsulating and storing data in the same “warehouse”, which is very conducive to improving speed and flexibility of data application.

The preferred database for sme website developers is also MySQL. SQL is its standard language. The database is favored by developers because of its size, speed and operating costs, especially its open source technology.

The Spring framework of the Boot

The Spring framework is an open source application framework on the Java platform that provides containers with inversion of control features. Although the Spring framework itself has no limitations on programming models, its frequent use in Java applications has made it so popular that it has since been used as a complement to, or even a replacement for, the EJB (EnterpriseJavaBeans) model. Spring framework for development provides a series of solutions, such as the use of the core features of the inversion of control and realize control FanZhuanLai through dependency injection container management object life cycle, using aspect oriented programming to declarative transaction management, integration of a variety of persistent data access technology management, to provide a large number of excellent Web framework for development, and so on. The Spring framework has the Inversion of Control (IOC) feature, which is designed to facilitate project maintenance and testing and provides a way to uniformly configure and manage Java objects through Java’s reflection mechanism. The Spring framework takes advantage of the lifecycle of container-managed objects, which can be configured by scanning AN XML file or specific Java annotations on a class, and obtained by developers through dependency lookup or dependency injection. The Spring framework has a section-oriented programming (AOP) framework, which is based on the proxy pattern and configurable at runtime. The AOP framework modularizes the cross-concerns between modules. The Spring framework’s AOP framework provides only basic AOP features and, while not comparable to the AspectJ framework, can satisfy basic requirements through integration with AspectJ. Spring FRAMEWORK transaction management, remote access and other functions can be implemented by using SpringAOP technology. Spring’s transaction management framework brings an abstraction mechanism to the Java platform that enables local and global transactions, as well as nested transactions, to work with savepoints and in almost any environment on the Java platform.

Function screenshots:

Login module:

​​

User front desk management:

System home page: on the system home page, you can view the home page, branch information, loan products, bank information, personal center, background management and other contents for detailed operation

​​

Network information: in the network information page, you can view the network name, network introduction, network picture, phone number, address and other contents for comment or favorites

​​

Loan products: You can view the product number, product name, picture, label, limit range, monthly interest rate, loan term, release date, product introduction and other contents in the loan product page to apply for a loan, comment or save​​

​​

Personal center: In the personal center page by filling in the user name, password, name, picture, gender, contact number, ID card and other content, information update operation, but also according to the needs of my collection for detailed operation​​

User background management:

Administrator login into the small bank management system can view the home page, personal center, announcements, information management, user management, staff management, network management, management of account information, account deposit management, account management, account transfer withdrawal management, online consulting, sales information management, loan product management, information management, and payment information management application management , system management and other functions for detailed operations

Notice and Bulletin management: On the notice and bulletin management page, you can view, modify, or delete the index, bulletin title, image, and release date

User information management: On the node information management page, you can perform detailed operations, modify, view comments, or delete the index, node name, picture, node introduction, phone number, and address

Employee information Management:

Employee archives management:

Branch information management:

User deposit management: index, user name, name, contact number, ID card, card number, password, amount, card opening date and other contents can be detailed, deposit, withdrawal, transfer, modify or delete in the account information management page

User withdrawal management:

User transfer management: index, user name, name, contact number, ID card, card number, amount, other party’s card number, account opening name, transfer description, transfer date, employee’s number, employee’s name and other contents can be detailed, modified or deleted in the account transfer management page

Loan product management: Index, product number, product name, cover image, label, limit range, monthly interest rate, loan term, release date and other contents can be detailed, modified, view comments or delete in the loan product management page

Repayment information management: Index, product number, product name, amount, remarks, repayment date, user name, name, contact number, ID card, review reply, review status, review and other contents can be detailed, modified or deleted in the repayment information management page

Employee turnover management:

System Settings management:

Code implementation:


/** * user * back-end interface *@author 
 * @email 
 * @dateThe 2022-04-08 18:18:08 * /
@RestController
@RequestMapping("/yonghu")
public class YonghuController {
    @Autowired
    private YonghuService yonghuService;
    
	@Autowired
	private TokenService tokenService;
	
	/** * login */
	@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("Incorrect account number or password");
		}
		
		String token = tokenService.generateToken(user.getId(), username,"yonghu"."User" );
		return R.ok().put("token", token);
	}
	
	/** * Register */
	@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("Registered user already exists");
		}
		Long uId = new Date().getTime();
		yonghu.setId(uId);
        yonghuService.insert(yonghu);
        return R.ok();
    }
	
	/** * exit */
	@RequestMapping("/logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("Exit successful");
	}
	
	/** * Get user session user information */
    @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("Account does not exist");
    	}
        user.setMima("123456");
        yonghuService.updateById(user);
        return R.ok("Password reset to 123456");
    }


    /** * Back-end list */
    @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);
    }

	/** * list */
    @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));
    }

	 /** * query */
    @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("User query succeeded").put("data", yonghuView);
    }
	
    /** ** */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        YonghuEntity yonghu = yonghuService.selectById(id);
        return R.ok().put("data", yonghu);
    }

    /** * Front-end details */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        YonghuEntity yonghu = yonghuService.selectById(id);
        return R.ok().put("data", yonghu);
    }
    



    /** * The backend saves */
    @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("User already exists");
		}
		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("User already exists");
		}
		yonghu.setId(new Date().getTime());
        yonghuService.insert(yonghu);
        return R.ok();
    }

    /** * modify */
    @RequestMapping("/update")
    public R update(@RequestBody YonghuEntity yonghu, HttpServletRequest request){
        //ValidatorUtils.validateEntity(yonghu);
        yonghuService.updateById(yonghu);// All updates
        return R.ok();
    }
    

    /** * delete */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        yonghuService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /** * remind interface */
	@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); }}Copy the code

/** * Subscriber information * back-end interface *@author 
 * @email 
 * @dateThe 2022-04-08 18:18:08 * /
@RestController
@RequestMapping("/xiaohuxinxi")
public class XiaohuxinxiController {
    @Autowired
    private XiaohuxinxiService xiaohuxinxiService;
    


    /** * Back-end list */
    @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);
    }

	/** * list */
    @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));
    }

	 /** * query */
    @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("Query for account cancellation information succeeded").put("data", xiaohuxinxiView);
    }
	
    /** ** */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        XiaohuxinxiEntity xiaohuxinxi = xiaohuxinxiService.selectById(id);
        return R.ok().put("data", xiaohuxinxi);
    }

    /** * Front-end details */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        XiaohuxinxiEntity xiaohuxinxi = xiaohuxinxiService.selectById(id);
        return R.ok().put("data", xiaohuxinxi);
    }
    

    /** * The backend saves */
    @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();
    }

    /** * modify */
    @RequestMapping("/update")
    public R update(@RequestBody XiaohuxinxiEntity xiaohuxinxi, HttpServletRequest request){
        //ValidatorUtils.validateEntity(xiaohuxinxi);
        xiaohuxinxiService.updateById(xiaohuxinxi);// All updates
        return R.ok();
    }
    

    /** * delete */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        xiaohuxinxiService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /** * remind interface */
	@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); }}Copy the code

Thesis Reference:

Source code:

Thumb up, collection, attention, comment, view 👇 🏻 👇 🏻 👇 🏻 home page contact 👇 🏻 👇 🏻 👇 🏻

Clocked articles updated 257/365 days