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