Based on java + springboot + Vue + node JS to realize the detailed design of campus stationery mall system

Blogger introduction: ✌ The company's main project, the whole network fan 10W+,csdn invited author, blog expert, CSDN New Star program tutor, high-quality creator in the Java field, CSDN blog star TOP100, Nuggets / Huawei cloud / Alibaba cloud / InfoQ and other platforms, focusing on the Java technology field and graduation design ✌

The official account: java Li Yangyong resume template, learning materials, interview questions, etc. 💪

🍅 Get the source code at the end of the article 🍅

🍅CSDN officially recommends that 10W+JAVA technicians publish their articles and punch in the community🍅

Preface introduction:

The popularity of computers and the advent of the Internet era make the release and dissemination of information more convenient and fast. Users can access multiple application systems through the browser on the computer, and obtain some management systems that can meet the needs of users. Sometimes the website system is more like a large "display platform". Users can choose the information they need to enter the system to view the home page, stationery video information, announcement information, personal center, background management and customer service. The function analysis of the system is that for the convenient management of the current network, according to the data survey, compared with the past, the growth is faster, and the way users log in through the Internet has formed a dependence. No matter what information content they need, they can find it directly on the Internet and have a large reference. They have a detailed understanding of the content information of the types and characteristics of the stationery mall platform, so that users can make more targeted choices. This also brings great convenience to users. Users can not view information in the traditional way, which not only wastes their time, but also the comparison process is relatively simple. Therefore, the development of furniture sales e-commerce platform can not only meet the needs of users, but also improve the work efficiency of administrators and reduce the original unnecessary workload.

System design:

System development process

When developing the campus stationery mall system, first analyze the needs, and then carry out the overall design and planning of the system, design the system function module, select the database, etc. the development process of the system is shown in the figure

Figure system development flow chart

User login process

In order to ensure the security of the system, to use the system to manage the system information, you must log in to the system first. As shown in the figure.

Figure login flow chart

System operation process

After opening and entering the system, the user will first display the login interface, enter the correct user name and password, and the system will automatically detect the information. If the information is correct, the user will enter the system function interface for operation, otherwise an error will be prompted and unable to log in. The operation process is shown in Figure 3-3.

Figure system operation flow chart

Function screenshot:

System home page:

Stationery goods: users can view stationery details in the stationery details interface

Commodity details: you can click the purchase button to purchase, and the stationery details interface is shown in the figure

Shopping cart: users can enter the shopping cart interface to view the stationery information of the shopping cart. The shopping cart interface is shown in the figure. Click the cashier button to enter the address filling interface.

Order information: after the user clicks to join the shopping cart and passes the client verification, submit the data to the database. The user information is saved in the background. After saving the data, you can view the data just inserted in the database.

Personal Center:

General user background:

Administrator background management:

If users want to purchase cakes, they must log in to the system. The user login interface is shown in the figure of user login interface; In the user information adding interface, fill in the information and submit the data to the database after being verified by the client. The user information is saved in the background. After saving the data, you can view the data just entered in the database. User registration is a data insertion operation. Before user registration, you need to verify whether the user has a database. If there is this user, you can't continue to register

User management: the administrator can view all member information, modify member information and delete. The member management interface is shown in the figure

Merchant management:

Commodity type: the administrator can add, edit and delete classification information. The classification management interface is shown as shown in the figure. Click the classification management link to enter classification information. In the classification information adding interface, fill in the information and submit the data to the database after being verified by the client. The background saves the cake classification information. After saving the data, you can view the data just entered in the database. After entering the classification information, in the classification list, read all the classification information to the collection object through the background query method, and display the collection object to the interface through html. There are two types of query: one is to query all cake classification sets, and the other is to query cake classification by conditions. The sql statements are different, and the final process is the same. In the list, you can delete the cake classification information. Before deleting, you need to prompt whether to delete it. The hint of this step belongs to the client control. When the deletion is determined, the server side deletion method is called to delete the database data and refresh the classification list.

Commodity information: the administrator can manage the cake, add, delete and edit information. The management interface is shown in the figure

Product information:

Order information: administrators can manage orders, view all order information, and ship and delete their orders. The order management interface is shown in the figure.

Data design:

The system uses MYSQL database as data storage. The details of each table in the database are introduced below.

The administrator table is a user information table that saves online cake sales. The table structure is shown in 4.1.

Table 4-1 admin administrator table

Listing

explain

type

size

Primary key

empty

Idyaopin

Primary key

int

4

Is primary key

Cannot be empty

Usernameyaopin

user name

varchar

50

no

Can be empty

Passwordyaopin

password

varchar

50

no

Can be empty

typeyaopin

type

varchar

30

no

Can be empty

The order table is an order information table for saving online cake sales, in which id is the primary key, and the table structure is shown in 4.2.

Table 4-2 orders

Listing

explain

type

size

Primary key

empty

idyaopin

Primary key

int

11

Is primary key

Cannot be empty

onumberyaopin

order number

varchar

50

no

Can be empty

Spcyaopin

commodity

varchar

50

no

Can be empty

Slcyaopin

quantity

varchar

50

no

Can be empty

addressyaopin

address

varchar

50

no

Can be empty

teyaopin

Telephone

varchar

13

no

Can be empty

emailyaopin

User mailbox

varchar

20

no

Can be empty

shffyaopin

Receiving

varchar

60

no

Can be empty

zfffyaopin

User payment

varchar

10

no

Can be empty

leavewordyaopin

guest book

varchar

2000

no

Can be empty

addtimeyaopin

date

time

no

Can be empty

xnameyaopin

Next person

varchar

10

no

Can be empty

ztyaopin

Status of the order

varchar

2

no

Can be empty

totalyaopin

Total price

varchar

10

no

Can be empty

kuaidiyaopin

Express name

varchar

20

no

Can be empty

knumberyaopin

Odd Numbers

int

20

no

Can be empty

Receiveryaopin

Consignee Name

varchar

10

no

Can be empty

The commodity table is a commodity information table for saving cake sales, in which id is the primary key, and the table structure is shown in 4.3.

Table 4-3 # goods list

Listing

explain

type

size

Primary key

empty

idyaopin

Primary key

int

4

Is primary key

Cannot be empty

pidyaopin

Type number

int

4

no

Can be empty

categoryidyaopin

Classification number

int

4

no

Can be empty

pnumberyaopin

Item number

varchar

10

no

Can be empty

titleyaopin

Name of commodity

varchar

10

no

Can be empty

amountyaopin

Inventory quantity

int

10

no

Can be empty

cishuyaopin

sales volume

int

10

no

Can be empty

mpriceyaopin

Market price

decimal

10

no

Can be empty

spriceyaopin

Member price

decimal

10

no

Can be empty

contentyaopin

Detailed introduction

text

no

Can be empty

apvyaopin

click

int

4

no

Can be empty

imgyaopin

picture

varchar

50

no

Can be empty

statusyaopin

state

int

2

no

Can be empty

addtimeyaopin

Add time

timestamp

no

Can be empty

The category table is a category information table for saving cake sales, in which id is the primary key, and the table structure is shown in 4.4.

Table 4-4 # category table

Listing

explain

type

size

Primary key

empty

idyaopin

Primary key

int

4

Is primary key

Cannot be empty

pidyaopin

Classification type

int

6

no

Can be empty

titleyaopin

Classification name

varchar

60

no

Can be empty

Code implementation:

@Service("ordersService")
public class OrdersServiceImpl extends ServiceImpl<OrdersDao, OrdersEntity> implements OrdersService {
	

    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        Page<OrdersEntity> page = this.selectPage(
                new Query<OrdersEntity>(params).getPage(),
                new EntityWrapper<OrdersEntity>()
        );
        return new PageUtils(page);
    }
    
    @Override
	public PageUtils queryPage(Map<String, Object> params, Wrapper<OrdersEntity> wrapper) {
		  Page<OrdersView> page =new Query<OrdersView>(params).getPage();
	        page.setRecords(baseMapper.selectListView(page,wrapper));
	    	PageUtils pageUtil = new PageUtils(page);
	    	return pageUtil;
 	}
    
  
	@Override
	public List<OrdersView> selectListView(Wrapper<OrdersEntity> wrapper) {
		return baseMapper.selectListView(wrapper);
	}

	@Override
	public OrdersView selectView(Wrapper<OrdersEntity> wrapper) {
		return baseMapper.selectView(wrapper);
	}
  @Override
	public List<OrdersVO> selectListVO(Wrapper<OrdersEntity> wrapper) {
 		return baseMapper.selectListVO(wrapper);
	}
	
	@Override
	public OrdersVO selectVO(Wrapper<OrdersEntity> wrapper) {
 		return baseMapper.selectVO(wrapper);
	}
	
}
/**
 * order
 * Back end interface
 * @author 
 * @email 
 * @date 2022-03-27 17:11:41
 */
@RestController
@RequestMapping("/orders")
public class OrdersController {
    @Autowired
    private OrdersService ordersService;
    

    /**
     * Backend list
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,OrdersEntity orders,
		HttpServletRequest request){
    	if(!request.getSession().getAttribute("role").toString().equals("administrators")) {
    		orders.setUserid((Long)request.getSession().getAttribute("userId"));
    	}
        EntityWrapper<OrdersEntity> ew = new EntityWrapper<OrdersEntity>();
		PageUtils page = ordersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, orders), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * Front end list
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,OrdersEntity orders, HttpServletRequest request){
        EntityWrapper<OrdersEntity> ew = new EntityWrapper<OrdersEntity>();
		PageUtils page = ordersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, orders), params), params));
        return R.ok().put("data", page);
    }

	/**
     * list
     */
    @RequestMapping("/lists")
    public R list( OrdersEntity orders){
       	EntityWrapper<OrdersEntity> ew = new EntityWrapper<OrdersEntity>();
      	ew.allEq(MPUtil.allEQMapPre( orders, "orders")); 
        return R.ok().put("data", ordersService.selectListView(ew));
    }

	 /**
     * query
     */
    @RequestMapping("/query")
    public R query(OrdersEntity orders){
        EntityWrapper< OrdersEntity> ew = new EntityWrapper< OrdersEntity>();
 		ew.allEq(MPUtil.allEQMapPre( orders, "orders")); 
		OrdersView ordersView =  ordersService.selectView(ew);
		return R.ok("Order query succeeded").put("data", ordersView);
    }
	
    /**
     * Back end details
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        OrdersEntity orders = ordersService.selectById(id);
        return R.ok().put("data", orders);
    }

    /**
     * Front end save
     */
    @RequestMapping("/add")
    public R add(@RequestBody OrdersEntity orders, HttpServletRequest request){
    	orders.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(orders);
        ordersService.insert(orders);
        return R.ok();
    }

    /**
     * modify
     */
    @RequestMapping("/update")
    public R update(@RequestBody OrdersEntity orders, HttpServletRequest request){
        //ValidatorUtils.validateEntity(orders);
        ordersService.updateById(orders);//Update all
        return R.ok();
    }
    
    /**
     * Front end details
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        OrdersEntity orders = ordersService.selectById(id);
        return R.ok().put("data", orders);
    }
    



    /**
     * Backend save
     */
    @RequestMapping("/save")
    public R save(@RequestBody OrdersEntity orders, HttpServletRequest request){
    	orders.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(orders);
    	orders.setUserid((Long)request.getSession().getAttribute("userId"));
        ordersService.insert(orders);
        return R.ok();
    }
    


    /**
     * delete
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        ordersService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * Reminder 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<OrdersEntity> wrapper = new EntityWrapper<OrdersEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}
		if(!request.getSession().getAttribute("role").toString().equals("administrators")) {
    		wrapper.eq("userid", (Long)request.getSession().getAttribute("userId"));
    	}


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


}

Project summary:

The realization of the overall function module of the stationery mall system is mainly a test of the content they have learned in the past few years in college. For the system, the realization of the system is mainly started through the current intelligent stationery mall system platform. The administrator can approve the information and user information according to the problem information, and can add, modify and delete the data information according to the demand, It perfectly solves the problems encountered in the current stationery mall system platform.

After a semester's graduation project, the implementation is nearing the end. So far, when I recall the system development day of the whole semester, I have gained a lot. The main task of the graduation project is to establish an intelligent stationery mall system platform, which mainly uses the development tools of Java and Mysql database to operate each functional module of the system. Finally, the system debugging results show that the system can basically meet the functional requirements.

The development of stationery mall system platform is of great help to the improvement of my college study. It enables me to learn the technical problems related to computer knowledge and the communication with people. It makes me realize that no matter what we do, we need to persevere and work hard. Only by trying and sticking to it, can we succeed and get the joy of success. If we don't try, we just think, we don't even have the chance of success, and we do it in practice, Will be closer and closer to success. With the road moving forward, the future road is beautiful.

For the implementation of stationery mall system, I designed a management system for the first time. In the design process of the project, I overcame various difficulties, and in the face of these difficulties, I actively faced them, tried to solve problems, and better mastered the theoretical knowledge and practical ability. From the development of the system to the completion of the design, I completed a more comprehensive, more perfect and safer platform management system, which also made me feel a great sense of achievement and made me more confident in the future.  

Source code acquisition:

Everyone likes, collects, pays attention to, comments and views 👇🏻👇🏻👇🏻 WeChat official account for contact information 👇🏻👇🏻👇🏻

Punch in article update: 256 / 365 days

Recommended subscription of wonderful column: in the column below 👇🏻👇🏻👇🏻👇🏻

Excellent practical case of Java project "100 sets"

Web front end final homework web page practice "100 sets"

Tags: Java Vue node.js

Posted by Promark on Sat, 16 Apr 2022 08:35:05 +0930