基于Android新生预报到系统APP的设计与实现

news2024/11/16 19:50:05

1.引言

随着国家的教育方针政策的不断改变,自20世纪初以来,政府开始实施扩招计划,截至2020年我国大学生总规模己经攀升至近5000万,大学教育的普及化正在逐渐实现。随着大学新生数量的不断增多,到了每年的9月份,各大高校都会面临着大学新生报到的一系列问题,而新生报到又是高校管理中重要的一环,关系到后续工作的顺利开展和进行。受到扩招政策的影响,高校每年开学季都会接收比上一年更多的新生,需要完成更多新生的报到手续,因此每次开学的报到流程都会很繁琐。现在很多学校借助APP报到系统来简化流程,提高效率,但是有的学校现有报到系统功能繁杂,学生不能很好的完成报到,且缺乏报到系统统计准确性和一些报到系统应具备的便捷功能。因此设计一个新生预报到系统APP,提高学校新生报到的效率,同时要满足学生的使用基础功能,如查询学校公告,学生课程表查询,学生信息查询。

本APP系统主要分为了两个操作端。

一是后台管理员系统和用户端。当账号操作权限够,即可对学生入学信息以及学生课程表修改和录入,同时可以在系统上发布公告用于学生查看,用以老师和教务处教师使用。

二是新生登录用户端。主要用于新生登记,和查看入学专业,班级,课程表等信息,还可以将本人信息上传至后台,该系统是采用MySQL数据库予以实现,主要为新生和学校学生使用。

该系统达到了系统的设计目标,能够满足学校基本使用要求,降低新生报到工作的人工工作量,及时传回确定就学的学生信息,方便学生进行信息查询,促进新生报到工作管理的规范化需要。

2.开发工具及技术

2.1 HeidiSQL

HeidiSQL是一款免费开源的数据库客户端软件。图形化,数据化界面。通过具体的配置后能够支持浏览数据库,管理表,浏览和便捷记录,管理用户权限等功能。HeidiSQ。是一款用于简单化迷你的服务器和数据库管理的图形化界面,采用Delphi开发,支持MySQL、SQL Server、PostgreSQL服务器。HeidiSQL提供了一个用于在数据库浏览之间切换SQL查询和标签带有语法突出显示的简单易用的界面。可以方便浏览数据库,管理表、视图、存储过程、触发器,浏览和编辑记录,管理用户权限。此外,你可以从文本文件导入数据,运行SQL查询,在两个数据库之间同步表以及导出选择的表到其它数据库或者SQL脚本中。具体HeidiSQL操作图如图2.1所示:

 2.2 SQLyog

SQLyog是一款专业的图形管理软件,SQLyog操作简单,功能强大,能够帮助用户轻松管理自己的MYSQL数据库,SQLyog支持多种数据格式导出,可以快速帮助用户备份和恢复数据,还能够快速地运行SQL脚本文件,为用户的使用提供便捷。由业界著名Webyog公司出品。使用SQLyog可以快速直观地让您从世界的任何角落通过网络来维护远端的MySQL数据库。数据库主要是为了实现保存用户数据的功能,同时要具备连接功能,以用来方便用户在数据库中存取数据,搜寻数据。因此数据库还得有着一定的安全性,独立性,以免数据泄露。具体SQLyog操作图如图2.2所示:

在通过建立一个新账号,采用旧的加密方法,再授权超级管理员,使用此管理员登录也可以使用。具体SQLyog连接图如图2.3所示。

2.3 Android Studio

Android Studio是谷歌的软件开发工具,通过基于Gradle的构建支持,能够通过此平台拖控UI控件进行效果预览。能够使用平台所给与的模板来生成常用的应用设计和组件。具体Android Studio操作图如图2.4所示。

通过本软件能够看到制作的信息管理软件预览图,方便修改学生操作端UI设计,具体修改过程如操作端UI修改图如图2.5所示。

2.4 Eclipse

eclipse是一个超过10年生命力的java编程语言开发集成环境。拥有着智能选取,丰富的导航模式,历史记录功能编码辅助等功能,对我们开发工作者的编写环境十分友好。同时能够使用图形化界面,实现我们看到后台管理系统的编写。虽然现在出现了更多的编码环境,但是兼容性还是eclipse更为友好。具体的eclipse图形化操作端如图2.6所示。

2.5 Android系统架构

Android系统架构为一般的通用操作系统架构。主要体系架构分为了从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。

应用程序:主要是通过客户端操作的程序软件。一般为功能使用层,Android编写语言一般为java语言,因为java的开发效率足够高,同时入手难度低。Android利用java语言编写同时因为java有着良好的跨平台特性,足够支持我们的现有安卓设备众多的使用,维持应用程序稳定性。

应用程序框架:主要是为了开发人员可以访问的API框架。主要包括有,视图(Views),列表(Lists),网格(Grids),文本框(Textboxes),按钮(Buttons),内容提供器(Content Providers),资源管理器(Resource Manager),通知管理器 (Notification Manager),活动管理器( Activity Manager)。

系统运行库:通过利用平台所拥有的库,使系统中组件使用。通过上一层的框架为平台程序开发者提供相关的服务。包括一些核心库。如系统C库,媒体库,Surface Manager,LibWebCore等运行库。

Linux内核:Linux内核充当的是硬件与软件的中间层,作用是吧应用程序的请求传递给硬件层。同时内核也是一个库,为应用程序提供面向系统命令,方便应用程序的系统调用。

Android架构完整流程图如图2.7所示。

2.6 Java

Java的特点:Java由于面向多用户跨平台,有着功能众多,方便上手这两个最基本的特点。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。同时Java在使用中可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等

Java的运行原理:源文件通过编写器编译成字节码文件class,然后在通过JVM中的解释器将字节码文件生成对应的可执行文件。具体的Java运行原理图如图2.8所示。

而Java运行流程是通过Java平台由Java虚拟机和Java应用程序接口搭建,Java语言则是进入这个平台的通道,用Java语言编写并编译的程序可以运行在这个平台上。Java运行流程图如图2.9所示。

2.7 结构化查询语言

SQL是一种特殊目的的编程语言,功能是通过数据库存取数据以及查询、更新和管理关系数据库系统。

主要特点为:功能一体化,统一结构,系统自动完成,语言简洁等特点。

结构化查询语言主要分为了六个部分:1,数据查询语言(DQL: ),2、数据操作语言(DML:),3、事务控制语言(TCL),4、数据控制语言(DCL),5、数据定义语言(DDL),6、指针控制语言(CCL)。

数据查询语言:让数据库执行数据查询语言语句把结果发送至客户端。是获取数据不可避免的重要手段。

数据操作语言:用于数据库操作以及数据运行访问工作编程语句。

事务控制语言:主要用来操作复杂,难处理的数据。

数据控制语言:用来设置以及更改数据库用户和角色权限语句。

数据定义语言:通过定义数据库里面权限数据对数据进行分类。

指针控制语言:规定程序的使用规则,来促使数据库正常使用。

3.功能设计

系统功能模块功能简介:新生报到系统主要分为学生客户端以及老师后台管理系统。

学生客户端涉及到的功能有:登陆账号,查询基础信息,查看系统相关公告,缴纳相关费用以及查询缴费明细,查看班级课程表,上传个人信息,修改账户密码等功能。

老师后台管理系统涉及到的功能有:学生管理模块相关功能,费用管理模块相关功能,课程管理模块相关功能,信息登记模块相关功能,系统公告模块相关功能等功能。

系统管理所需要的功能主要有:学生信息管理功能模块,具体又分为了信息登记模块,费用管理模块,课程管理模块,学生管理模块,系统公告模块等。

信息登记模块结构图如图所示:

 信息登记模块功能简介:信息编辑,编辑学生的性别,姓名,电话号码,身份证号,家庭住址,毕业院校等信息的功能。

费用管理模块结构图如图所示:

 

 费用管理模块功能简介:费用信息添加,费用信息修改,费用信息删除,费用信息查看。具体的费用信息可以改动的有学费,军训费,公寓用品费,杂物费,书费,体检费等信息改动功能。

课程管理模块结构图如图所示:

 

 课程管理模块具体功能简介:课程信息添加,课程信息修改,课程信息删除,课程信息查看。具体的课程信息包括修改院系,专业,班级,课程表等内容修改功能。

学生管理模块结构图如图所示:

 

学生管理模块功能简介:包括学生信息添加,学生信息修改,学生信息删除,学生信息查看。其中具体的学生信息改动为院系,姓名,专业,学号,班级,宿舍楼号,宿舍号。其中的学生学号为学生端初始账号密码。

系统公告模块结构图如图所示:

 

系统公告模块功能简介:添加,修改,删除,查看公告,以及标注标题,内容,发布日期等功能。 

4.功能效果图

4.1 后台管理功能操作

首先应该通过建立管理员账号才能够记录新生信息。登录初始管理员账户后添加新的管理员,初始管理员账号为admin,密码为2014122。登录后可在后台学生管理系统中添加管理员账户。

(1)管理员账号登录

 初始管理员账号为最高权限,不可增删。在登录后台后应转用自己的管理员账号继续登录。在输入正确的管理员账号密码后就能进入学生管理系统。后台登录界面如图所示:

(2)添加管理员账号

通过初始管理员账号来添加新的管理员账号,具体添加管理员账号界面图如图所示:

 (3)添加管理员账号

  在登录管理员账号后即可对新生的信息进行添加,然后新生的信息即可保留在后台学生管理系统中,新生就能通过APP登录。

其中在添加学生信息时,可以将学生的学号,班级,专业,宿舍楼号,宿舍号进行选择,方便同学在前端APP上面查阅自己信息。同时支持修改操作,具体添加新生信息图如图所示:

在完成新生信息登录,即可根据学生信息来添加学生学费,班级课程表,发布系统公告,以供学生完成后续缴费和方便学生了解信息。

添加学生学费图如图所示:

 添加班级课表如图所示:

发布系统公告如图所示: 

4.2 新生APP功能操作

  当管理员账号在后台学生管理系统中添加新生信息后,预报到新生即可通过在线上方式获取APP后,通过自己的学号,初始密码为学号登录APP完成一系列的操作。

(1)新生账号登录

新生在通过账号登录后,即可以对自己的信息添加,和修改账户密码。

新生账号登录图如图所示:

信息添加图如图所示:

​​ ​

修改账户密码图如图所示: 

(2)APP其他功能

新生登录APP后应该完成自己的基础信息查阅,缴费,查阅课程表,查阅系统公告等功能。

基础信息查阅如图所示:

新生缴费如图所示: 

查阅课程表如图所示: 

 查阅系统公告如图所示:

5.核心代码

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.参考论文

目  录

1. 绪论

1.1 课题研究背景

1.1.1课题研究来源

1.1.2课题研究目的

1.2 国内外研究现状

1.2.1国内外学生报到管理系统发展概况

1.3 论文整体流程以及框架

2.方案论证

2.1 开发环境与设计技术

2.1.1开发环境

2.1.2设计技术

2.2 需求分析与可行性分析

2.2.1需求分析

2.2.2可行性分析

2.3系统设计

2.3.1系统设计原理

2.3.2 报到系统功能模块设计

2.3.3 系统管理功能模块设计

2.3.4 数据库概念设计ER图

2.3.5 各数据表详细情况介绍

3.系统实现与操作

3.1 后台管理功能操作

3.1.1 管理员账号登录

3.1.2 添加管理员账号

3.1.3 新生信息管理

3.2 新生APP功能操作

3.2.1 新生账号登录

3.2.2 APP其他功能

4.系统测试与结果分析

4.1 测试介绍

4.2 后端测试

4.2.1 后台登录模块测试

4.2.2 学生管理模块测试

4.2.2 通知发布模块测试

4.3 前端测试

4.3.1 前端登录模块测试

4.3.1 学生信息模块测试

4.4 结果分析

5.总结与展望

5.1 系统尚存问题

5.2 系统发展展望

6.参考文献

7.总结

首先在经过测试后,系统已经可以正常使用,但是系统本身还没有做到自己的一些设想的功能,如利用本系统做选课功能。因为涉及到系统连接学校的教务处网络,有一定的安全性风险。所以加此功能仍然需要详细考虑。

其次因为设计程序的缺陷,和软件特点,本系统暂时只能把前台APP和后端用与同一网络地点下,功能还不够完善。

目前,移动应用发展迅速,安卓应用对提高工作效率具有非常重要的意义,因此构建一个稳定、功能齐全、易于操作的安卓报表系统尤为重要。

在项目开始前,通过查阅相关书籍、论文和期刊,我们从根本上了解了相关系统的模式特征,并认真研究了相关系统的优缺点。了解后,我们分析了该系统的设计与开发,该系统的主要目的是学校相关人员向在校新生公布新生入学信息,为新生提供服务的平台,同时使学校公告信息和学生显示新的学校相关信息成为可能。这是一个相对成功的系统。

经过黑匣子测试和兼容性测试,系统的各项功能在安卓新一代的基础上成功运行,基本达到了预期目标。然而,也存在一些不足,我们希望继续努力,优化新的新生预报到系统,最终为我们的新生工作提供一个方便的项目软件。

喜欢的点赞收藏加关注私信作者沟通交流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/707625.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实现Linux(Ubuntu22.04)与Windows文件互通共享(双方永久往来~)

Samba服务器了解&#xff08;防守&#xff09; Samba是一个开源软件套件&#xff0c;它允许在不同操作系统之间共享文件、打印机和其他资源。它是基于SMB/CIFS协议&#xff0c;这是一种用于在Windows系统中共享文件和打印机的网络协议。Samba服务器可以在Linux、Unix、macOS和…

玩转C++调试之Python的GDB库增强

玩转C调试之Python的GDB库增强 0.导语 调试是软件开发过程中不可或缺的一环&#xff0c;而GDB&#xff08;GNU调试器&#xff09;作为一款功能强大的调试工具&#xff0c;在开发者中得到广泛应用。除了传统的命令行调试功能外&#xff0c;GDB还提供了Python的GDB库&#xff0c;…

2024考研408-计算机组成原理第五章-中央处理器学习笔记

文章目录 前言一、CPU的功能与基本结构1.1、CPU的功能1.2、运算器与控制器需要实现功能1.3、运算器的基本结构1.3.1、基本结构构成&#xff08;七个部分&#xff09;1.3.2、各个部件详细介绍①算数逻辑运算单元②通用寄存器组&#xff08;介绍数据通路的基本结构2个&#xff09…

C语言进阶---字符串+内存函数

本章重点 重点介绍处理字符和字符串的库函数的使用和注意事项。 求字符串长度 strlen() 长度不受限制的的字符串函数 strcpy()strcat()strcmp() 长度受限制的的字符串函数 strncpy()strncat()strncmp() 字符串查找 strstr()strtok() 错误信息报告 strerror() 字符操作内存操作函…

《企业性能测试:体系构建、落地指导与案例解读》——小解送书第四期

目录 介绍 抽奖 介绍 软件系统性能的重要性无须多言&#xff0c;没有哪个用户可以忍受一个响应缓慢的网站或者反应迟钝的软件。软件性能是用户体验的核心。大部分用户可能对软件性能并不了解&#xff0c;但他们永远想使用响应更迅速的软件。所以&#xff0c;性能是评估一个软…

小程序data-*的误区

场景&#xff1a;点击按钮获取data-*的值跳转页面&#xff0c;跳转页获取传过来的参数 binnie: 华哥&#xff0c;为什么有的部分参数传不过去然后显示undefined&#xff1f; 华哥&#xff1a; binnie, 我看了一下你的代码&#xff0c;你错在属性名有大写字母了。我给你写了个…

postman自动生成接口文档

点击&#xff1a; 会自动生成一个文件夹 点击图表&#xff0c;修改名字 新建一个请求&#xff0c;到时候会自动保存到文件夹里面&#xff0c;但是保存前看清楚保存的名字 点击三个点-》点击export即可

Python提取斗鱼美女图片--selenium requests两种方式

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 使用selenium,requests提取斗鱼美女数据 数据来源 斗鱼美女链接 一、selenium是干嘛…

Leetcode-每日一题【206.反转链表】

题目 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5]输出&#xff1a;[5,4,3,2,1] 示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1] 示例 3&#xff1a; 输…

ChatGPT助力校招----面试问题分享(七)

1 ChatGPT每日一题&#xff1a;SPI通信协议的四种工作模式 问题&#xff1a;SPI通信协议的四种工作模式 ChatGPT&#xff1a;SPI&#xff08;Serial Peripheral Interface&#xff09;总线是一种同步串行通信协议&#xff0c;它在多种数字系统中得到了广泛应用。SPI总线有四种…

nodejs全局模块安装与cnpm

一、通过nodejs官网安装 通过nodejs官网下载后安装 二、验证安装 1、在键盘按下【winR】键&#xff0c;输入cmd&#xff0c;然后回车&#xff0c;打开命令行界面 2、进入命令提示符窗口&#xff0c;分别输入以下命令&#xff0c;显示版本号&#xff0c;则安装成功&#xff0…

【AcWing算法基础课】第二章 数据结构(部分待更)

文章目录 前言课前温习一、单链表核心模板1.1题目描述1.2思路分析1.3代码实现 二、双链表核心模板2.1题目描述2.2思路分析2.3代码实现 三、栈核心模板3.1题目描述3.2思路分析3.3代码实现 四、队列核心模板4.1题目描述4.2思路分析4.3代码实现 五、单调栈核心模板5.1题目描述5.2思…

医疗科技革新:探索互联网医院线上就诊模式

随着互联网的迅猛发展&#xff0c;医疗行业也在逐渐融合科技创新&#xff0c;为患者提供更加便捷、高效的医疗服务。互联网医院作为一种新型医疗模式&#xff0c;通过在线平台实现医生与患者的远程沟通和线上诊疗&#xff0c;成为了医疗科技领域的热门话题。 在本文中&#x…

Django框架-6

向服务器传参 通过url - path传参 path(articles/<int:year>/<int:month>/<slug:slug>/, views.article_detail),查询字符串方式传参 http://localhost:8000?key1value1&key2value2 ;&#xff08;body&#xff09;请求体的方式传参&#xff0c;比如文…

Windos新机配置Java开发环境

一. 安装JDK8 解压&#xff0c;然后配置环境变量即可 配置JAVA_HOME path里添加&#xff1a; 二. MySql数据库安装与配置 参考&#xff1a; https://blog.csdn.net/annita2019/article/details/117467992 1.解压&#xff0c; Path中添加环境变量 D:\CodeSupport\Java_se…

华为OD机试真题 JavaScript 实现【求最大连续bit数】【牛客练习题】

一、题目描述 求一个int类型数字对应的二进制数字中1的最大连续数&#xff0c;例如3的二进制为00000011&#xff0c;最大连续2个1。 二、输入描述 输入一个int类型数字。 三、输出描述 输出转成二进制之后连续1的个数。 四、解题思路 使用位运算来实现。 具体思路如下&…

投票链接步骤公众号投票链接制作制作投票网页链接

大家在选择投票小程序之前&#xff0c;可以先梳理一下自己的投票评选活动是哪种类型&#xff0c;目前有匿名投票、图文投票、视频投票、赛事征集投票等。 我们现在要以“笛乐悠扬”为主题进行一次投票活动&#xff0c;我们可以在在微信小程序搜索&#xff0c;“活动星”投票小程…

高手必备:JVM调优的常用命令和参数一网打尽!

大家好&#xff0c;我是小米&#xff01;在今天的技术分享中&#xff0c;我将和大家一起探讨JVM调优中的常用命令和参数。作为一名热爱技术的小伙伴&#xff0c;希望通过本篇文章的分享&#xff0c;能够帮助大家更好地理解和掌握JVM调优的方法和技巧。 JVM的结构 首先&#x…

C++ 预处理器

预处理器是一些指令&#xff0c;指示编译器在实际编译之前所需完成的预处理。 所有的预处理器指令都是以井号&#xff08;#&#xff09;开头&#xff0c;只有空格字符可以出现在预处理指令之前。预处理指令不是 C 语句&#xff0c;所以它们不会以分号&#xff08;;&#xff09…

操作系统5——输入输出系统

本系列博客重点在深圳大学操作系统课程的核心内容梳理&#xff0c;参考书目《计算机操作系统》&#xff08;有问题欢迎在评论区讨论指出&#xff0c;或直接私信联系我&#xff09;。 梗概 本篇博客主要介绍操作系统第六章输入输出系统的相关知识。 目录 一、I/O&#xff08;…