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.参考论文
目 录
7.总结
首先在经过测试后,系统已经可以正常使用,但是系统本身还没有做到自己的一些设想的功能,如利用本系统做选课功能。因为涉及到系统连接学校的教务处网络,有一定的安全性风险。所以加此功能仍然需要详细考虑。
其次因为设计程序的缺陷,和软件特点,本系统暂时只能把前台APP和后端用与同一网络地点下,功能还不够完善。
目前,移动应用发展迅速,安卓应用对提高工作效率具有非常重要的意义,因此构建一个稳定、功能齐全、易于操作的安卓报表系统尤为重要。
在项目开始前,通过查阅相关书籍、论文和期刊,我们从根本上了解了相关系统的模式特征,并认真研究了相关系统的优缺点。了解后,我们分析了该系统的设计与开发,该系统的主要目的是学校相关人员向在校新生公布新生入学信息,为新生提供服务的平台,同时使学校公告信息和学生显示新的学校相关信息成为可能。这是一个相对成功的系统。
经过黑匣子测试和兼容性测试,系统的各项功能在安卓新一代的基础上成功运行,基本达到了预期目标。然而,也存在一些不足,我们希望继续努力,优化新的新生预报到系统,最终为我们的新生工作提供一个方便的项目软件。
喜欢的点赞收藏加关注私信作者沟通交流