Design and implementation of Android-based new student forecasting system APP

1 Introduction

With the continuous change of the country's education policy, since the beginning of the 20th century, the government has begun to implement the enrollment expansion plan. As of 2020, the total number of college students in my country has climbed to nearly 50 million, and the popularization of university education is gradually being realized. With the increasing number of freshmen, every year in September, colleges and universities will face a series of problems in the registration of freshmen, and the registration of freshmen is an important part of the management of colleges and universities, which is related to the smooth development of follow-up work and conduct. Affected by the enrollment expansion policy, colleges and universities will accept more new students every year in the opening season than in the previous year, and need to complete more registration procedures for new students, so the registration process for each semester will be very cumbersome. Now many schools use the APP registration system to simplify the process and improve efficiency, but some schools have complicated functions of the existing registration system, and students cannot complete the registration well, and lack the statistical accuracy of the registration system and some convenient functions that the registration system should have. Therefore, a freshman forecasting system APP is designed to improve the efficiency of school freshman registration, and at the same time, it must meet the basic functions of students' use, such as querying school announcements, student curriculum queries, and student information queries.

The APP system is mainly divided into two operation terminals.

One is the background administrator system and client. When the account operation authority is sufficient, you can modify and enter the student enrollment information and student curriculum, and at the same time, you can publish announcements on the system for students to view, and for teachers and teachers in the Academic Affairs Office to use.

The second is to log in to the user terminal for new students. It is mainly used for registration of new students, and to check information such as majors, classes, schedules, etc. It can also upload personal information to the background. The system is implemented using MySQL database, and is mainly used by freshmen and school students.

The system has achieved the design goal of the system, can meet the basic use requirements of the school, reduce the manual workload of freshman registration work, timely return the information of students who are confirmed to attend school, facilitate students to query information, and promote the standardized needs of freshman registration work management.

2. Development tools and technologies

2.1 HeidiSQL

HeidiSQL is a free and open source database client software. Graphical, data-based interface. After specific configuration, it can support functions such as browsing databases, managing tables, browsing and convenient records, and managing user permissions. Heidi SQ. It is a graphical interface used to simplify mini server and database management. It is developed by Delphi and supports MySQL, SQL Server, and PostgreSQL servers. HeidiSQL provides an easy-to-use interface for switching SQL queries between database browsers and tabs with syntax highlighting. It is convenient to browse the database, manage tables, views, stored procedures, triggers, browse and edit records, and manage user permissions. Additionally, you can import data from text files, run SQL queries, synchronize tables between two databases and export selected tables to other databases or to SQL scripts. The specific HeidiSQL operation diagram is shown in Figure 2.1:

 2.2 SQLyog

SQLyog is a professional graphical management software. SQLyog is easy to operate and powerful. It can help users easily manage their own MYSQL databases. SQLyog supports exporting in multiple data formats. It can quickly help users back up and restore data, and can also quickly run SQL. Script files provide convenience for users. Produced by the industry-renowned Webyog company. Using SQLyog can quickly and intuitively allow you to maintain remote MySQL databases through the network from any corner of the world. The database is mainly used to realize the function of saving user data, and at the same time, it must have a connection function to facilitate users to access data in the database and search for data. Therefore, the database must have a certain degree of security and independence to avoid data leakage. The specific SQLyog operation diagram is shown in Figure 2.2:

After creating a new account, using the old encryption method, and then authorizing the super administrator, it can also be used to log in with this administrator. The specific SQLyog connection diagram is shown in Figure 2.3.

2.3 Android Studio

Android Studio is a software development tool of Google. Through the support of Gradle-based construction, it is possible to preview the effect by dragging and controlling UI controls through this platform. The templates provided by the platform can be used to generate commonly used application designs and components. The specific Android Studio operation diagram is shown in Figure 2.4.

Through this software, you can see the preview of the information management software made, which is convenient for modifying the UI design of the student operation terminal. The specific modification process is shown in Figure 2.5 as the UI modification diagram of the operation terminal.

2.4 Eclipse

Eclipse is an integrated development environment for java programming language with more than 10 years of vitality. It has functions such as intelligent selection, rich navigation mode, history record function and coding assistance, which is very friendly to the writing environment of our developers. At the same time, we can use the graphical interface to realize the writing of the background management system we see. Although there are more coding environments now, the compatibility is still more friendly to eclipse. The specific eclipse graphical operation terminal is shown in Figure 2.6.

2.5 Android system architecture

The Android system architecture is a general general-purpose operating system architecture. The main architecture is divided into the application layer, the application framework layer, the system runtime layer and the Linux kernel layer from the high level to the low level.

Application program: mainly program software operated by the client. Generally, it is a function usage layer, and the Android programming language is generally java language, because the development efficiency of java is high enough, and at the same time, the difficulty of getting started is low. Android is written in java language and because java has good cross-platform features, it is enough to support the use of many of our existing Android devices and maintain application stability.

Application Framework: Primarily an API framework for developers to access. Mainly include Views, Lists, Grids, Textboxes, Buttons, Content Providers, Resource Manager, Notification Manager (Notification Manager), Activity Manager (Activity Manager).

System runtime library: By using the library owned by the platform, the components in the system can be used. Provide platform program developers with related services through the framework of the upper layer. Includes some core libraries. Such as system C library, media library, Surface Manager, LibWebCore and other runtime libraries.

Linux kernel : The Linux kernel acts as an intermediate layer between hardware and software, and its function is to pass application requests to the hardware layer. At the same time, the kernel is also a library, which provides system-oriented commands for applications and facilitates system calls for applications.

The complete flowchart of the Android architecture is shown in Figure 2.7.

2.6 Java

Features of Java: Since Java is multi-user and cross-platform, it has many functions and is easy to use. These two most basic features. Java has characteristics such as simplicity, object-oriented, distributed , robustness , security , platform independence and portability, multithreading , and dynamics. At the same time, Java can write desktop applications , Web applications, distributed systems and embedded system applications, etc.

The operating principle of Java: the source file is compiled into a bytecode file class by a writer, and then the bytecode file is generated into a corresponding executable file by an interpreter in the JVM. The specific Java operation principle diagram is shown in Figure 2.8.

The Java operation process is built by the Java virtual machine and the Java application program interface through the Java platform, and the Java language is the channel to enter this platform. Programs written and compiled in the Java language can run on this platform. The flowchart of Java operation is shown in Figure 2.9.

2.7 Structured Query Language

SQL is a special-purpose programming language whose function is to access data through databases and to query, update and manage relational database systems .

The main features are: functional integration, unified structure, automatic completion of the system, concise language and so on.

Structured Query Language is mainly divided into six parts: 1. Data Query Language ( DQL : ), 2. Data Manipulation Language (DML: ), 3. Transaction Control Language (TCL), 4. Data Control Language (DCL), 5. , Data Definition Language ( DDL ), 6, Pointer Control Language (CCL).

Data query language: Let the database execute data query language statements and send the results to the client. It is an inevitable and important means of obtaining data.

Data operation language: used for database operation and data operation and access work programming statements.

Transaction control language: mainly used to manipulate complex and difficult data.

Data Control Language: Used to set and change database user and role permission statements.

Data Definition Language: Classify data by defining permission data in the database.

Pointer control language: stipulates the usage rules of the program to promote the normal use of the database.

3. Functional design

Functional introduction of system function modules: The new student registration system is mainly divided into student client and teacher background management system.

The functions involved in the student client are: login account, query basic information, view system related announcements, pay relevant fees and query payment details, view class schedule, upload personal information, change account password and other functions.

The functions involved in the teacher background management system include: related functions of the student management module, related functions of the fee management module, related functions of the course management module, related functions of the information registration module, and related functions of the system announcement module.

The functions needed for system management mainly include: student information management function module, which is further divided into information registration module, fee management module, course management module, student management module, system announcement module, etc.

The structure diagram of the information registration module is shown in the figure:

 Information registration module function brief introduction: information editing, the function of editing the student's gender, name, phone number, ID number, home address, graduate school and other information.

The structure diagram of the expense management module is shown in the figure:

 

 Function introduction of expense management module: add expense information, modify expense information, delete expense information, view expense information. The specific cost information can be changed, such as tuition fee, military training fee, apartment supplies fee, sundries fee, book fee, medical examination fee and other information modification functions.

The structure diagram of the course management module is shown in the figure:

 

 Brief introduction to the specific functions of the course management module: add course information, modify course information, delete course information, and view course information. Specific course information includes modifying departments, majors, classes, curriculum and other content modification functions.

The structure diagram of the student management module is shown in the figure:

 

Brief introduction to the functions of the student management module: including adding student information, modifying student information, deleting student information, and viewing student information. Among them, the specific student information is changed to department, name, major, student number, class, dormitory building number, and dormitory number. The student ID is the initial account password of the student terminal.

The structure diagram of the system announcement module is shown in the figure:

 

Function introduction of the system bulletin module: add, modify, delete, view bulletins, and mark the title, content, release date and other functions. 

4. Functional renderings

4.1 Background  management function operation

First of all, you should create an administrator account to be able to record new student information. Add a new administrator after logging in to the initial administrator account. The initial administrator account is admin and the password is 2014122. After logging in, you can add an administrator account in the background student management system.

(1) Administrator account login

 The initial administrator account has the highest authority and cannot be added or deleted. After logging in to the background, you should switch to your own administrator account to continue logging in. After entering the correct administrator account password, you can enter the student management system. The background login interface is as shown in the figure:

(2) Add an administrator account

Add a new administrator account through the initial administrator account. The interface diagram for adding an administrator account is shown in the figure:

 (3) Add an administrator account

  After logging in to the administrator account, you can add the information of the new students, and then the information of the new students can be kept in the background student management system, and the new students can log in through the APP.

When adding student information, you can select the student's student number, class, major, dormitory building number, and dormitory number, so that students can check their own information on the front-end APP. At the same time, it supports modification operations. The specific addition of newborn information is shown in the figure:

After completing the login of new student information, you can add student tuition fees, class schedules, and issue system announcements based on student information, so that students can complete subsequent payment and facilitate students to understand information.

Add a student tuition chart as shown in the figure:

 Add a class schedule as shown in the figure:

Publish the system announcement as shown in the figure: 

4.2 Newborn APP function  operation _

  After the administrator account adds the new student information in the background student management system, it is predicted that the new students can obtain the APP through online methods, and then log in to the APP through their own student number and the initial password is the student number to complete a series of operations.

(1) New student account login

After logging in through the account, freshmen can add their own information and change the account password.

The login diagram of the new account is as shown in the figure:

The information addition diagram is shown in the figure:

​​ ​

Modify the account password as shown in the figure: 

(2) Other functions of APP

After logging into the APP, freshmen should complete their own basic information check, payment, check the class schedule, check the system announcement and other functions.

Check the basic information as shown in the figure:

New student fees are as follows: 

View the curriculum as shown in the picture: 

 Consult the system announcement as shown in the figure:

5. Core code

public class BaseController {
	
	protected Logger logger = Logger.getLogger(this.getClass());

	private static final long serialVersionUID = 6357869213649815390L;
	
	/** new PageData对象
	 * @return
	 */
	public PageData getPageData(){
		return new PageData(this.getRequest());
	}
	
	/**得到ModelAndView
	 * @return
	 */
	public ModelAndView getModelAndView(){
		return new ModelAndView();
	}
	
	/**得到request对象
	 * @return
	 */
	public HttpServletRequest getRequest() {
		HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
		return request;
	}

	/**得到32位的uuid
	 * @return
	 */
	public String get32UUID(){
		return UuidUtil.get32UUID();
	}
	
	/**得到分页列表的信息
	 * @return
	 */
	public Page getPage(){
		return new Page();
	}
	
	public static void logBefore(Logger logger, String interfaceName){
		logger.info("");
		logger.info("start");
		logger.info(interfaceName);
	}
	
	public static void logAfter(Logger logger){
		logger.info("end");
		logger.info("");
	}
	
}
@Controller
@RequestMapping(value="/datasource2")
public class DataSource2Controller extends BaseController {
	
	String menuUrl = "datasource2/list.do"; //菜单地址(权限用)
	@Resource(name="datasource2Service")
	private DataSource2Manager datasource2Service;
	
	/**保存
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/save")
	public ModelAndView save() throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"新增DataSource2");
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		pd.put("DATASOURCE2_ID", this.get32UUID());	//主键
		datasource2Service.save(pd);
		mv.addObject("msg","success");
		mv.setViewName("save_result");
		return mv;
	}
	
	/**删除
	 * @param out
	 * @throws Exception
	 */
	@RequestMapping(value="/delete")
	public void delete(PrintWriter out) throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"删除DataSource2");
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限
		PageData pd = new PageData();
		pd = this.getPageData();
		datasource2Service.delete(pd);
		out.write("success");
		out.close();
	}
	
	/**修改
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/edit")
	public ModelAndView edit() throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"修改DataSource2");
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		datasource2Service.edit(pd);
		mv.addObject("msg","success");
		mv.setViewName("save_result");
		return mv;
	}
	
	/**列表
	 * @param page
	 * @throws Exception
	 */
	@RequestMapping(value="/list")
	public ModelAndView list(Page page) throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"列表DataSource2");
		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		String keywords = pd.getString("keywords");				//关键词检索条件
		if(null != keywords && !"".equals(keywords)){
			pd.put("keywords", keywords.trim());
		}
		page.setPd(pd);
		List<PageData>	varList = datasource2Service.list(page);	//列出DataSource2列表
		mv.setViewName("dst/datasource2/datasource2_list");
		mv.addObject("varList", varList);
		mv.addObject("pd", pd);
		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
		return mv;
	}
	
	/**去新增页面
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/goAdd")
	public ModelAndView goAdd()throws Exception{
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		mv.setViewName("dst/datasource2/datasource2_edit");
		mv.addObject("msg", "save");
		mv.addObject("pd", pd);
		return mv;
	}	
	
	 /**去修改页面
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/goEdit")
	public ModelAndView goEdit()throws Exception{
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		pd = datasource2Service.findById(pd);	//根据ID读取
		mv.setViewName("dst/datasource2/datasource2_edit");
		mv.addObject("msg", "edit");
		mv.addObject("pd", pd);
		return mv;
	}	
	
	 /**批量删除
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/deleteAll")
	@ResponseBody
	public Object deleteAll() throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"批量删除DataSource2");
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限
		PageData pd = new PageData();		
		Map<String,Object> map = new HashMap<String,Object>();
		pd = this.getPageData();
		List<PageData> pdList = new ArrayList<PageData>();
		String DATA_IDS = pd.getString("DATA_IDS");
		if(null != DATA_IDS && !"".equals(DATA_IDS)){
			String ArrayDATA_IDS[] = DATA_IDS.split(",");
			datasource2Service.deleteAll(ArrayDATA_IDS);
			pd.put("msg", "ok");
		}else{
			pd.put("msg", "no");
		}
		pdList.add(pd);
		map.put("list", pdList);
		return AppUtil.returnObject(pd, map);
	}
	
	 /**导出到excel
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/excel")
	public ModelAndView exportExcel() throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"导出DataSource2到excel");
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;}
		ModelAndView mv = new ModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		Map<String,Object> dataMap = new HashMap<String,Object>();
		List<String> titles = new ArrayList<String>();
		titles.add("标题");	//1
		titles.add("内容");	//2
		dataMap.put("titles", titles);
		List<PageData> varOList = datasource2Service.listAll(pd);
		List<PageData> varList = new ArrayList<PageData>();
		for(int i=0;i<varOList.size();i++){
			PageData vpd = new PageData();
			vpd.put("var1", varOList.get(i).getString("TITLE"));	    //1
			vpd.put("var2", varOList.get(i).getString("CONTENT"));	    //2
			varList.add(vpd);
		}
		dataMap.put("varList", varList);
		ObjectExcelView erv = new ObjectExcelView();
		mv = new ModelAndView(erv,dataMap);
		return mv;
	}
	
	@InitBinder
	public void initBinder(WebDataBinder binder){
		DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
	}
}
public class ShopDetailAcitivity extends AppCompatActivity implements View.OnClickListener {

    private TextView tvShopName,tvTime,tvNotice,tvTile;
    private ImageView ivShopPic,ivBack;


    private ShopBean bean;



    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //绑定布局文件,把布局文件当作我们这个activity的界面
        setContentView(R.layout.acitivity_shop_detail);

        bean= (ShopBean) getIntent().getSerializableExtra("shop");
        if(bean==null){
            return;
        }


        initView();

        setData();
    }

    private void setData() {
        tvShopName.setText(bean.getShopName());
        tvTime.setText(bean.getTime());
        tvNotice.setText(bean.getShopNotice());
        Glide.with(this).load(bean.getShopPic()).error(R.mipmap.ic_launcher).into(ivShopPic);
    }

    private void initView() {
        tvShopName=findViewById(R.id.tv_shop_name);
        tvTime=findViewById(R.id.tv_time);
        tvNotice=findViewById(R.id.tv_notice);
        tvTile=findViewById(R.id.tv_title);

        ivShopPic=findViewById(R.id.iv_shop_pic);
        ivBack=findViewById(R.id.iv_back);

        tvTile.setText("店铺详情");
        ivBack.setVisibility(View.VISIBLE);
        ivBack.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.iv_back:
                finish();
                break;
        }
    }
}
@Controller
@RequestMapping(value="/cost")
public class CostController extends BaseController {
	
	String menuUrl = "cost/list.do"; //菜单地址(权限用)
	@Resource(name="costService")
	private CostManager costService;
	
	/**保存
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/save")
	public ModelAndView save() throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"新增Cost");
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		pd.put("COST_ID", this.get32UUID());	//主键
		costService.save(pd);
		mv.addObject("msg","success");
		mv.setViewName("save_result");
		return mv;
	}
	
	/**删除
	 * @param out
	 * @throws Exception
	 */
	@RequestMapping(value="/delete")
	public void delete(PrintWriter out) throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"删除Cost");
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限
		PageData pd = new PageData();
		pd = this.getPageData();
		costService.delete(pd);
		out.write("success");
		out.close();
	}
	
	/**修改
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/edit")
	public ModelAndView edit() throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"修改Cost");
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		costService.edit(pd);
		mv.addObject("msg","success");
		mv.setViewName("save_result");
		return mv;
	}
	
	/**列表
	 * @param page
	 * @throws Exception
	 */
	@RequestMapping(value="/list")
	public ModelAndView list(Page page) throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"列表Cost");
		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		String keywords = pd.getString("keywords");				//关键词检索条件
		if(null != keywords && !"".equals(keywords)){
			pd.put("keywords", keywords.trim());
		}
		page.setPd(pd);
		List<PageData>	varList = costService.list(page);	//列出Cost列表
		mv.setViewName("newreport/cost/cost_list");
		mv.addObject("varList", varList);
		mv.addObject("pd", pd);
		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
		return mv;
	}
	
	/**去新增页面
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/goAdd")
	public ModelAndView goAdd()throws Exception{
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		mv.setViewName("newreport/cost/cost_edit");
		mv.addObject("msg", "save");
		mv.addObject("pd", pd);
		return mv;
	}	
	
	 /**去修改页面
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/goEdit")
	public ModelAndView goEdit()throws Exception{
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		pd = costService.findById(pd);	//根据ID读取
		mv.setViewName("newreport/cost/cost_edit");
		mv.addObject("msg", "edit");
		mv.addObject("pd", pd);
		return mv;
	}	
	
	 /**批量删除
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/deleteAll")
	@ResponseBody
	public Object deleteAll() throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"批量删除Cost");
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限
		PageData pd = new PageData();		
		Map<String,Object> map = new HashMap<String,Object>();
		pd = this.getPageData();
		List<PageData> pdList = new ArrayList<PageData>();
		String DATA_IDS = pd.getString("DATA_IDS");
		if(null != DATA_IDS && !"".equals(DATA_IDS)){
			String ArrayDATA_IDS[] = DATA_IDS.split(",");
			costService.deleteAll(ArrayDATA_IDS);
			pd.put("msg", "ok");
		}else{
			pd.put("msg", "no");
		}
		pdList.add(pd);
		map.put("list", pdList);
		return AppUtil.returnObject(pd, map);
	}
	
	 /**导出到excel
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/excel")
	public ModelAndView exportExcel() throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"导出Cost到excel");
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;}
		ModelAndView mv = new ModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		Map<String,Object> dataMap = new HashMap<String,Object>();
		List<String> titles = new ArrayList<String>();
		titles.add("学费");	//1
		titles.add("书本费");	//2
		titles.add("公寓用品费");	//3
		titles.add("军训费");	//4
		titles.add("杂物费");	//5
		dataMap.put("titles", titles);
		List<PageData> varOList = costService.listAll(pd);
		List<PageData> varList = new ArrayList<PageData>();
		for(int i=0;i<varOList.size();i++){
			PageData vpd = new PageData();
			vpd.put("var1", varOList.get(i).get("STUCOST").toString());	//1
			vpd.put("var2", varOList.get(i).get("BOOKCOST").toString());	//2
			vpd.put("var3", varOList.get(i).get("GOODSCOST").toString());	//3
			vpd.put("var4", varOList.get(i).getString("TRAINCOST"));	    //4
			vpd.put("var5", varOList.get(i).getString("SUNDCOST"));	    //5
			varList.add(vpd);
		}
		dataMap.put("varList", varList);
		ObjectExcelView erv = new ObjectExcelView();
		mv = new ModelAndView(erv,dataMap);
		return mv;
	}
	
	@InitBinder
	public void initBinder(WebDataBinder binder){
		DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
	}
}
@Controller
@RequestMapping(value="/course")
public class CourseController extends BaseController {
	
	String menuUrl = "course/list.do"; //菜单地址(权限用)
	@Resource(name="courseService")
	private CourseManager courseService;
	
	/**保存
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/save")
	public ModelAndView save(@RequestParam(value = "tp", required = false) MultipartFile file,
			@RequestParam(value = "tpz", required = false) String tpz,
			@RequestParam(value = "DEPARTMENT", required = false) String DEPARTMENT,
			@RequestParam(value = "SUBJECT", required = false) String SUBJECT,
			@RequestParam(value = "CLASS", required = false) String CLASS
			) throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"新增Course");
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		pd.put("COURSE_ID", this.get32UUID());	//主键
		pd.put("DEPARTMENT", DEPARTMENT);	//课程表
		pd.put("SUBJECT", SUBJECT);	//课程表
		pd.put("CLASS", CLASS);	//课程表
		if (null == tpz) {
			tpz = "";
		}
		String ffile = DateUtil.getDays(), fileName = "";
		if (null != file && !file.isEmpty()) {
			String filePath = PathUtil.getClasspath() + Const.FILEPATHIMG
					+ ffile; // 文件上传路径
			fileName = FileUpload.fileUp(file, filePath, this.get32UUID()); // 执行上传
			pd.put("COURSEURL", ffile + "/" + fileName); // 路径
		//	 pd.put("C_FILENAME", fileName);
		} else {
			pd.put("COURSEURL", tpz);
		}
		
		courseService.save(pd);
		mv.addObject("msg","success");
		mv.setViewName("save_result");
		return mv;
	}
	
	/**删除
	 * @param out
	 * @throws Exception
	 */
	@RequestMapping(value="/delete")
	public void delete(PrintWriter out) throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"删除Course");
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限
		PageData pd = new PageData();
		pd = this.getPageData();
		courseService.delete(pd);
		out.write("success");
		out.close();
	}
	
	/**修改
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/edit")
	public ModelAndView edit(
			@RequestParam(value = "tp", required = false) MultipartFile file,
			@RequestParam(value = "tpz", required = false) String tpz,
			@RequestParam(value = "DEPARTMENT", required = false) String DEPARTMENT,
			@RequestParam(value = "SUBJECT", required = false) String SUBJECT,
			@RequestParam(value = "CLASS", required = false) String CLASS,
			@RequestParam(value = "COURSE_ID", required = false) String COURSE_ID
			) throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"修改Course");
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
	
		pd.put("COURSE_ID",COURSE_ID);	//主键
		pd.put("DEPARTMENT", DEPARTMENT);	//课程表
		pd.put("SUBJECT", SUBJECT);	//课程表
		pd.put("CLASS", CLASS);	//课程表
		if (null == tpz) {
			tpz = "";
		}
		String ffile = DateUtil.getDays(), fileName = "";
		if (null != file && !file.isEmpty()) {
			String filePath = PathUtil.getClasspath() + Const.FILEPATHIMG
					+ ffile; // 文件上传路径
			fileName = FileUpload.fileUp(file, filePath, this.get32UUID()); // 执行上传
			pd.put("COURSEURL", ffile + "/" + fileName); // 路径
		//	 pd.put("C_FILENAME", fileName);
		} else {
			pd.put("COURSEURL", tpz);
		}
		
		courseService.edit(pd);
		mv.addObject("msg","success");
		mv.setViewName("save_result");
		return mv;
	}
	
	/**列表
	 * @param page
	 * @throws Exception
	 */
	@RequestMapping(value="/list")
	public ModelAndView list(Page page) throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"列表Course");
		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		String keywords = pd.getString("keywords");				//关键词检索条件
		if(null != keywords && !"".equals(keywords)){
			pd.put("keywords", keywords.trim());
		}
		page.setPd(pd);
		List<PageData>	varList = courseService.list(page);	//列出Course列表
		mv.setViewName("newreport/course/course_list");
		mv.addObject("varList", varList);
		mv.addObject("pd", pd);
		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
		return mv;
	}
	
	/**去新增页面
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/goAdd")
	public ModelAndView goAdd()throws Exception{
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		mv.setViewName("newreport/course/course_edit");
		mv.addObject("msg", "save");
		mv.addObject("pd", pd);
		return mv;
	}	
	
	 /**去修改页面
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/goEdit")
	public ModelAndView goEdit()throws Exception{
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		pd = courseService.findById(pd);	//根据ID读取
		mv.setViewName("newreport/course/course_edit");
		mv.addObject("msg", "edit");
		mv.addObject("pd", pd);
		return mv;
	}	
	
	 /**批量删除
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/deleteAll")
	@ResponseBody
	public Object deleteAll() throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"批量删除Course");
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限
		PageData pd = new PageData();		
		Map<String,Object> map = new HashMap<String,Object>();
		pd = this.getPageData();
		List<PageData> pdList = new ArrayList<PageData>();
		String DATA_IDS = pd.getString("DATA_IDS");
		if(null != DATA_IDS && !"".equals(DATA_IDS)){
			String ArrayDATA_IDS[] = DATA_IDS.split(",");
			courseService.deleteAll(ArrayDATA_IDS);
			pd.put("msg", "ok");
		}else{
			pd.put("msg", "no");
		}
		pdList.add(pd);
		map.put("list", pdList);
		return AppUtil.returnObject(pd, map);
	}
	
	 /**导出到excel
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/excel")
	public ModelAndView exportExcel() throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"导出Course到excel");
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;}
		ModelAndView mv = new ModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		Map<String,Object> dataMap = new HashMap<String,Object>();
		List<String> titles = new ArrayList<String>();
		titles.add("院系");	//1
		titles.add("专业");	//2
		titles.add("班级");	//3
		titles.add("课程表");	//4
		dataMap.put("titles", titles);
		List<PageData> varOList = courseService.listAll(pd);
		List<PageData> varList = new ArrayList<PageData>();
		for(int i=0;i<varOList.size();i++){
			PageData vpd = new PageData();
			vpd.put("var1", varOList.get(i).getString("DEPARTMENT"));	    //1
			vpd.put("var2", varOList.get(i).getString("SUBJECT"));	    //2
			vpd.put("var3", varOList.get(i).getString("CLASS"));	    //3
			vpd.put("var4", varOList.get(i).getString("COURSEURL"));	    //4
			varList.add(vpd);
		}
		dataMap.put("varList", varList);
		ObjectExcelView erv = new ObjectExcelView();
		mv = new ModelAndView(erv,dataMap);
		return mv;
	}
	@RequestMapping(value = "/deltp")
	public void deltp(PrintWriter out) throws Exception {
		PageData pd = new PageData();
		pd = this.getPageData();
		String COURSEURL = pd.getString("COURSEURL");
		if (Tools.notEmpty(pd.getString("COURSEURL").trim())) {// 图片路径
			DelAllFile.delFolder(PathUtil.getClasspath() + Const.FILEPATHIMG
					+ pd.getString("COURSEURL")); // 删除图片
			
		}
		
		courseService.delTp(pd); // 删除数据库中图片数据
		
		out.write("success");
		out.close();
	}
	@InitBinder
	public void initBinder(WebDataBinder binder){
		DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
	}
}
@Controller
@RequestMapping(value="/mobileintef")
public class MobileIntefController extends BaseController {
	

	@Resource(name="studentmService")
	private StudentMManager studentmService;
	
	@Resource(name="costService")
	private CostManager costService;
	
	@Resource(name="courseService")
	private CourseManager courseService;
	@Resource(name="studentinfoService")
	private StudentInfoManager studentinfoService;
	
	
	@Resource(name="sysmsgService")
	private SysMsgManager sysmsgService;
	
	/**
	 * 登录
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value = "/dologin", produces = "application/json;charset=UTF-8")
	@ResponseBody
	public String dologin() throws Exception {
		PageData pd = new PageData();
		pd = this.getPageData();
		String STUDYNUMB = pd.getString("STUDYNUMB");
		String PASSWORD = pd.getString("PASSWORD");
	
		PageData loginpd = studentmService.dologin(pd);	//根据用户名和密码去读取用户信息
		JSONObject result = new JSONObject();
		Map<String, String> map = new HashMap<String, String>();
		if (loginpd != null) {
			pd.put("ROW_ID", this.get32UUID());
			result.put("code", "ok");
			JSONObject userinfo = AppUtil.pdToJSON(loginpd);
			result.put("data", userinfo);
			result.put("msg", "请求成功");
		} else {
			result.put("code", "error");
			result.put("msg", "用户名或密码错误");
		}
		System.out.println("result = "+result.toString());
		return result.toString();
	}
	
	@RequestMapping(value = "/changePsd", produces = "application/json;charset=UTF-8")
	@ResponseBody
	public String changePsd() throws Exception {
		PageData pd = new PageData();
		pd = this.getPageData();
		
			PageData userpd = studentmService.dologin(pd);
			JSONObject result = new JSONObject();
			if (userpd == null) {
				result.put("code", "error");
				result.put("msg", "原密码错误,请重新输入!");
			} else {
				
				studentmService.editPSD(pd);
				result.put("code", "ok");
				result.put("msg", "密码修改成功!");
			}
			return result.toString();
	}
	
	@RequestMapping(value = "/getSysMsgList", produces = "application/json;charset=UTF-8")
	@ResponseBody
	public String getSysMsgList() throws Exception {

		PageData pd = new PageData();
		pd = this.getPageData();
			 List<PageData> info = sysmsgService.listAll(pd);
			JSONObject result = new JSONObject();
			/* Map<String,String> map = new HashMap<String,String>(); */
			if (info != null) {
				result.put("code", "ok");
				JSONArray verifylist = AppUtil.pdToJSONArray(info);
				result.put("data", verifylist);
				result.put("msg", "请求成功!");
			} else {
				result.put("code", "error");
				result.put("msg", "无数据");
			}
			return result.toString();
	}
	@RequestMapping(value = "/getCostList", produces = "application/json;charset=UTF-8")
	@ResponseBody
	public String getCostList() throws Exception {

		PageData pd = new PageData();
		pd = this.getPageData();
			 List<PageData> info = costService.listAll(pd);
			JSONObject result = new JSONObject();
			/* Map<String,String> map = new HashMap<String,String>(); */
			if (info != null) {
				result.put("code", "ok");
				JSONArray verifylist = AppUtil.pdToJSONArray(info);
				result.put("data", verifylist);
				result.put("msg", "请求成功!");
			} else {
				result.put("code", "error");
				result.put("msg", "无数据");
			}
			return result.toString();
	}
	
	
	@RequestMapping(value = "/getCouseList", produces = "application/json;charset=UTF-8")
	@ResponseBody
	public String getCouseList() throws Exception {

		PageData pd = new PageData();
		pd = this.getPageData();
			PageData info = courseService.getCouseList(pd);
			JSONObject result = new JSONObject();
			/* Map<String,String> map = new HashMap<String,String>(); */
			if (info != null) {
				result.put("code", "ok");
				JSONObject verifylist = AppUtil.pdToJSON(info);
				result.put("data", verifylist);
				result.put("msg", "请求成功!");
			} else {
				result.put("code", "error");
				result.put("msg", "无数据");
			}
			return result.toString();
	}
	

	@RequestMapping(value = "/getInfo", produces = "application/json;charset=UTF-8")
	@ResponseBody
	public String getInfo() throws Exception {

		PageData pd = new PageData();
		pd = this.getPageData();
			PageData info = studentinfoService.findById(pd);
			JSONObject result = new JSONObject();
			/* Map<String,String> map = new HashMap<String,String>(); */
			if (info != null) {
				result.put("code", "ok");
				JSONObject verifylist = AppUtil.pdToJSON(info);
				result.put("data", verifylist);
				result.put("msg", "请求成功!");
			} else {
				result.put("code", "error");
				result.put("msg", "无数据");
			}
			return result.toString();
	}
	
	@RequestMapping(value = "/saveInfo", produces = "application/json;charset=UTF-8")
	@ResponseBody
	public String saveInfo() throws Exception {

		PageData pd = new PageData();
		pd = this.getPageData();
		if(pd.containsKey("STUDENTINFO_ID")) {
			studentinfoService.edit(pd);
		}else {
		pd.put("STUDENTINFO_ID", this.get32UUID());
			studentinfoService.save(pd);
		}
			JSONObject result = new JSONObject();
			/* Map<String,String> map = new HashMap<String,String>(); */
		
				result.put("code", "ok");
				result.put("msg", "请求成功!");
			
			return result.toString();
	}
	
	@InitBinder
	public void initBinder(WebDataBinder binder){
		DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
	}
}
@Controller
@RequestMapping(value="/studentinfo")
public class StudentInfoController extends BaseController {
	
	String menuUrl = "studentinfo/list.do"; //菜单地址(权限用)
	@Resource(name="studentinfoService")
	private StudentInfoManager studentinfoService;
	
	/**保存
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/save")
	public ModelAndView save() throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"新增StudentInfo");
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		pd.put("STUDENTINFO_ID", this.get32UUID());	//主键
		studentinfoService.save(pd);
		mv.addObject("msg","success");
		mv.setViewName("save_result");
		return mv;
	}
	
	/**删除
	 * @param out
	 * @throws Exception
	 */
	@RequestMapping(value="/delete")
	public void delete(PrintWriter out) throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"删除StudentInfo");
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限
		PageData pd = new PageData();
		pd = this.getPageData();
		studentinfoService.delete(pd);
		out.write("success");
		out.close();
	}
	
	/**修改
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/edit")
	public ModelAndView edit() throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"修改StudentInfo");
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		studentinfoService.edit(pd);
		mv.addObject("msg","success");
		mv.setViewName("save_result");
		return mv;
	}
	
	/**列表
	 * @param page
	 * @throws Exception
	 */
	@RequestMapping(value="/list")
	public ModelAndView list(Page page) throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"列表StudentInfo");
		//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		String keywords = pd.getString("keywords");				//关键词检索条件
		if(null != keywords && !"".equals(keywords)){
			pd.put("keywords", keywords.trim());
		}
		page.setPd(pd);
		List<PageData>	varList = studentinfoService.list(page);	//列出StudentInfo列表
		mv.setViewName("newreport/studentinfo/studentinfo_list");
		mv.addObject("varList", varList);
		mv.addObject("pd", pd);
		mv.addObject("QX",Jurisdiction.getHC());	//按钮权限
		return mv;
	}
	
	/**去新增页面
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/goAdd")
	public ModelAndView goAdd()throws Exception{
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		mv.setViewName("newreport/studentinfo/studentinfo_edit");
		mv.addObject("msg", "save");
		mv.addObject("pd", pd);
		return mv;
	}	
	
	 /**去修改页面
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/goEdit")
	public ModelAndView goEdit()throws Exception{
		ModelAndView mv = this.getModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		pd = studentinfoService.findById(pd);	//根据ID读取
		mv.setViewName("newreport/studentinfo/studentinfo_edit");
		mv.addObject("msg", "edit");
		mv.addObject("pd", pd);
		return mv;
	}	
	
	 /**批量删除
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/deleteAll")
	@ResponseBody
	public Object deleteAll() throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"批量删除StudentInfo");
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限
		PageData pd = new PageData();		
		Map<String,Object> map = new HashMap<String,Object>();
		pd = this.getPageData();
		List<PageData> pdList = new ArrayList<PageData>();
		String DATA_IDS = pd.getString("DATA_IDS");
		if(null != DATA_IDS && !"".equals(DATA_IDS)){
			String ArrayDATA_IDS[] = DATA_IDS.split(",");
			studentinfoService.deleteAll(ArrayDATA_IDS);
			pd.put("msg", "ok");
		}else{
			pd.put("msg", "no");
		}
		pdList.add(pd);
		map.put("list", pdList);
		return AppUtil.returnObject(pd, map);
	}
	
	 /**导出到excel
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/excel")
	public ModelAndView exportExcel() throws Exception{
		logBefore(logger, Jurisdiction.getUsername()+"导出StudentInfo到excel");
		if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;}
		ModelAndView mv = new ModelAndView();
		PageData pd = new PageData();
		pd = this.getPageData();
		Map<String,Object> dataMap = new HashMap<String,Object>();
		List<String> titles = new ArrayList<String>();
		titles.add("性别");	//1
		titles.add("电话");	//2
		titles.add("身份证号");	//3
		titles.add("家庭住址");	//4
		titles.add("毕业院校");	//5
		dataMap.put("titles", titles);
		List<PageData> varOList = studentinfoService.listAll(pd);
		List<PageData> varList = new ArrayList<PageData>();
		for(int i=0;i<varOList.size();i++){
			PageData vpd = new PageData();
			vpd.put("var1", varOList.get(i).getString("GENDER"));	    //1
			vpd.put("var2", varOList.get(i).getString("PHONE"));	    //2
			vpd.put("var3", varOList.get(i).getString("IDCARD"));	    //3
			vpd.put("var4", varOList.get(i).getString("ADDRESS"));	    //4
			vpd.put("var5", varOList.get(i).getString("GRADUATE"));	    //5
			varList.add(vpd);
		}
		dataMap.put("varList", varList);
		ObjectExcelView erv = new ObjectExcelView();
		mv = new ModelAndView(erv,dataMap);
		return mv;
	}
	
	@InitBinder
	public void initBinder(WebDataBinder binder){
		DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
	}
}

6. Reference Papers

Table of contents

1 Introduction

1.1 Research background of the subject

1.1.1 Sources of subject research

1.1.2 Purpose of the subject research

1.2 Research status at home and abroad

1.2.1 Overview of the development of student registration management system at home and abroad

1.3 The overall process and framework of the paper

2. Proposal demonstration

2.1 Development environment and design technology

2.1.1 Development environment

2.1.2 Design Technology

2.2 Demand Analysis and Feasibility Analysis

2.2.1 Demand Analysis

2.2.2 Feasibility analysis

2.3 System design

2.3.1 Principles of system design

2.3.2 Function module design of check-in system

2.3.3 System management function module design

2.3.4 ER Diagram of Database Conceptual Design

2.3.5 Detailed introduction of each data table

3. System implementation and operation

3.1 Background management function operation

3.1.1 Administrator account login

3.1.2 Add administrator account

3.1.3 Freshman information management

3.2 Newborn APP function operation

3.2.1 New student account login

3.2.2 Other functions of APP

4. System testing and result analysis

4.1 Test Introduction

4.2 Backend testing

4.2.1 Background login module test

4.2.2 Student Management Module Test

4.2.2 Notification release module test

4.3 Front-end testing

4.3.1 Front-end login module test

4.3.1 Student Information Module Test

4.4 Result analysis

5. Summary and Outlook

5.1 Existing problems in the system

5.2 Prospects for system development

6. References

7. Summary

First of all, after the test, the system can be used normally, but the system itself has not achieved some of its imagined functions, such as using the system for course selection. Because it involves connecting the system to the network of the school's Academic Affairs Office, there are certain security risks. So adding this function still needs to be considered in detail.

Secondly, due to the defects of the design program and the characteristics of the software, this system can only use the front-end APP and the back-end under the same network location for the time being, and the function is not perfect enough.

At present, mobile applications are developing rapidly, and Android applications are of great significance to improving work efficiency. Therefore, it is particularly important to build a stable, fully functional, and easy-to-operate Android reporting system.

Before the start of the project, by consulting relevant books, papers and journals, we fundamentally understood the pattern characteristics of the relevant systems, and carefully studied the advantages and disadvantages of the relevant systems. After understanding, we analyzed the design and development of the system. The main purpose of the system is to announce the enrollment information of new students to the new students, and to provide services for the new students. At the same time, the school announcement information and students display the new school related information becomes possible. It's a relatively successful system.

After the black box test and compatibility test, the various functions of the system run successfully on the basis of the new generation of Android, basically reaching the expected goal. However, there are still some deficiencies, and we hope to continue to work hard to optimize the new freshman forecasting system, and finally provide a convenient project software for our freshman work.

Likes, likes, collections, and attention to private letters Author communication

Guess you like

Origin blog.csdn.net/lf21qp/article/details/131487308