学历学籍管理系统-MVC和工厂模式实现学籍查询与录入
目录
一、观察者模式
1、开发环境
2、Model模型
3、View视图
4、Controller控制
5、过程演示
二、简单工厂模式
1、开发环境
2、产品类
3、工厂类
4、模式结构
5、用户操作界面与运行结果
一、观察者模式
1、开发环境
总体使用的是SSM(Spring+SpringMVC+MyBatis)框架结构,MVC模式体现在SpringMVC 使用了适配器模式,前端控制器使用 HandlerAdapter 来调用不同的 Controller,然后才是 Controller 调用 Model 产生数据模型; 产生的数据模型将会再次返回到前端控制器,并由前端控制器决定使用不同的模板引擎将页面进行渲染。
2、Model模型
在这个实验中,我们需要完成学籍的查询与录入,model自然是学籍类(StudentDocument.class),该类的属性如下:
该类的方法包括各个属性的get和set方法,来实现对属性的获取和修改。
根据model来建立数据库的student_document表,具体内容如下:
3、View视图
这里的用户操作界面(index.jsp)提供查询所有学籍的超链接和一个录入学籍的表单,供用户进行查询和录入的功能,其界面如下:
<%--Created by IntelliJ IDEA.User: xiachengyueDate: 2021/10/23Time: 8:36 下午To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<h3>保存某一学生的学籍,点击保存返回所有学生学籍</h3>
<form action="studentDocument/save" method="post">姓名:<input type="text" name="name"><br>身份证号:<input type="text" name="idNum"><br>性别:<input type="text" name="gender"><br>学号:<input type="text" name="studentNum"><br>学历层次:<input type="text" name="education"><br>学院:<input type="text" name="college"><br>专业:<input type="text" name="major"><br>班级:<input type="text" name="studentClass"><br>入学时间:<input type="text" name="addmission"><br>政治面貌:<input type="text" name="politicalStatus"><br>民族:<input type="text" name="folk"><br>籍贯:<input type="text" name="address"><br>学制:<input type="text" name="schoolSystem"><br><input type="submit" value="保存"/></form>
<a href="studentDocument/findAll">查询所有学籍信息</a>
</body>
</html>
在用户点击查询所有学籍的超链接或在录入后点击保存后,会返回一个list.jsp界面,其包含数据库中所有的学籍信息,其界面如下:
<%--Created by IntelliJ IDEA.User: xiachengyueDate: 2021/10/23Time: 8:39 下午To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>Title</title>
</head>
<body>
<h3>查询所有</h3>
<c:forEach items="${list}" var="document">姓名:${document.name}<br>身份证号:${document.idNum}<br>性别:${document.gender}<br>学号:${document.studentNum}<br>学历层次:${document.education}<br>学院:${document.college}<br>专业:${document.major}<br>班级:${document.studentClass}<br>入学时间:${document.addmission}<br>政治面貌:${document.politicalStatus}<br>民族:${document.folk}<br>籍贯:${document.address}<br>学制:${document.schoolSystem}<br><br>
</c:forEach>
</body>
</html>
4、Controller控制
这里的控制层包括一个StudentDocumentController类,实现查询并返回所有学籍信息、录入学籍信息并返回所有信息的功能。
这里的查询功能通过Spring MVC整合Spring后,调用了studentDoucmentService接口,然后再通过Spring整合Mybatis,调用StudentDocumentDao接口,实现数据库查询,具体实现如下:
SpringMVC:StudentDocumentController中查询所有内容
@Controller
@RequestMapping("/studentDocument")
public class StudentDocumentController {@Autowiredprivate StudentDocumentService studentDocumentService;/*** 查询所有学籍信息* @param model* @return*/@RequestMapping("/findAll")public String findAll(Model model){System.out.println("表现层:查询所有。。");List<StudentDocument> list = studentDocumentService.findAll();model.addAttribute("list",list);return "list";}
Spring:StudentDocumentServiceImpl调用dao层查询所有内容
@Service("studentDocumentService")
public class StudentDocumentServiceImpl implements StudentDocumentService {@Autowiredprivate StudentDocumentDao documentDao;@Overridepublic List<StudentDocument> findAll() {System.out.println("业务层:查询所有。。");return documentDao.findAll();}
Mybatis:StudentDocumentDao实现数据库查询
@Repository
public interface StudentDocumentDao {//查询所有学籍信息@Select("select * from student_document")public List<StudentDocument> findAll();
在录入学籍信息时,首先通过 StudentDocumentController获取表单中输入的数据,整合成一个StudentDocument类,最后返回list.jsp页面。在调用关系中,通过Spring MVC整合Spring后,调用了studentDoucmentService接口,然后再通过Spring整合Mybatis,调用StudentDocumentDao接口,实现插入数据库。
SpringMVC:StudentDocumentController中保存录入信息并返回list.jsp界面
/*** 保存* @param* @return*/@RequestMapping("/save")public void save(StudentDocument document, HttpServletRequest request,HttpServletResponse response) throws IOException {studentDocumentService.saveDocument(document);response.sendRedirect(request.getContextPath()+"/studentDocument/findAll");return ;}
Spring:StudentDocumentServiceImpl调用dao层实现插入录入信息
@Overridepublic void saveDocument(StudentDocument document) {System.out.println("业务层:保存。。");documentDao.saveDocument(document);}
Mybatis:StudentDocumentDao实现数据库的插入
//保存学籍信息@Insert("insert into student_document (name,idNum,gender,studentNum,education,college,major,studentClass,addmission,politicalStatus,folk,address,schoolSystem) values (#{name},#{idNum},#{gender},#{studentNum},#{education},#{college},#{major},#{studentClass},#{addmission},#{politicalStatus},#{folk},#{address},#{schoolSystem})")public void saveDocument(StudentDocument document);
5、过程演示
测试录入功能:
启动服务器,进入http://localhost:8080/certificate_war_exploded/index.jsp ,在表单中输入张三同学的学籍信息
点击保存后,系统会返回所有的学籍信息。
查看数据库,确实存在张三同学的信息。
测试查询功能:
先在数据库中插入多条学籍信息,内容如下:
点击index.jsp中查询所有学籍信息的超链接,在list.jsp中确实返回了所有的信息。
二、简单工厂模式
1、开发环境
IDE使用Visual Studio 2019,使用C++编程实现。
2、产品类
在本实验中,需实现学籍的查询与录入,定义抽象产品类StudentDocument,其中声明产品类公共事务方法,方法均为虚方法,在具体产品类中实现。定义具体产品类undergraduate(本科生类),继承自StudentDocument类,实现父类声明的虚方法。定义具体产品类postgraduate(研究生类),继承自StudentDocument类,实现父类声明的虚方法。 其中,在StudentDocument类声明以下方法和属性,其中属性为各种学籍信息,方法包括设置学籍信息的方法及对学籍信息实现增删改查的方法。
#pragma once
using namespace std;
#include<string>
class StudentDocument
{public://方法virtual void setname(string name1) = 0;virtual void setstudentNum(string studentNum1) = 0; virtual void setgender(string a) = 0;virtual void seteducation(string a) = 0;virtual void setcollege(string a) = 0;virtual void setmajor(string a) = 0;virtual void setclass1(string a) = 0;virtual void setaddmissionYear(string a) = 0;virtual void setpoliticalStatus(string a) = 0;virtual void setfolk(string a) = 0;virtual void setaddress(string a) = 0;virtual void setschoolSystem(string a) = 0;virtual void setidNum(string a) = 0;virtual string getDocument() = 0;virtual void postDocument() = 0;virtual void modifyDocument() = 0;virtual void deleteDocument() = 0;//属性string name;string studentNum;string gender;string education;string college;string major;string class1;string addmissionYear;string politicalStatus;string folk;string address;string schoolSystem;string idNum;
};
3、工厂类
定义DocumentFactory类,封装getStudentDocument方法,根据传入的参数不同创建、返回不同的具体产品类的对象,当参数为1,创建并返回undergraduate类对象,当参数为2,创建并返回postgraduate类对象。工厂类定义代码如下:
#include "DocumentFactory.h"
StudentDocument* DocumentFactory::getStudentDocument(int type) {StudentDocument* s1 = NULL;switch (type){case 1: s1 = new undergraduate(); return s1; break;case 2:s1 = new postgraduate(); return s1; break;default:break;}
}
4、模式结构
5、用户操作界面与运行结果
main.cpp代码如下,其中根据用户输入的数字创建具体产品类的对象,然后调用产品类的方法对学籍信息进行设置。
#include "StudentDocument.h"
using namespace std;
#include<string>
#include "undergraduate.h"
#include"DocumentFactory.h"
#include <iostream>
int main()
{StudentDocument* pstudentdocument = NULL;int type;cout << "请输入要创建的学籍信息,1代表本科生学籍信息,2代表研究生学籍信息\n";cin >> type;pstudentdocument = DocumentFactory::getStudentDocument(type);string ans;if (type == 1) {ans = "本科生";}if (type == 2) {ans = "研究生";}cout << "已创建"+ans+"的学籍,请按以下要求上传学籍信息\n";cout << "请输入姓名:";string name;cin >> name;string studentNum1;cout << "请输入学号:";cin >> studentNum1;string gender;cout << "请输入性别:";cin >> gender;string education;cout << "请输入年级:";cin >> education;string college;string major;if (type == 1) {cout << "请输入学院:";cin >> college;cout << "专业:";cin >> major;pstudentdocument->setcollege(college);pstudentdocument->setmajor(major);}if (type == 2) {cout << "请输入方向:";cin >> college;cout << "导师:";cin >> major;pstudentdocument->setcollege(college);pstudentdocument->setmajor(major);}pstudentdocument->setname(name);pstudentdocument->setstudentNum(studentNum1);pstudentdocument->setgender(gender);pstudentdocument->seteducation(education);cout << ans<<"学籍信息创建完毕:\n" << pstudentdocument->getDocument();
}
学历学籍管理系统-MVC和工厂模式实现学籍查询与录入相关推荐
- 基于php的工厂管理系统,PHP设计模式——工厂模式
工厂模式,工厂方法或者类生成对象,而不是在代码中直接new. 使用工厂模式,可以避免当改变某个类的名字或者方法之后,在调用这个类的所有的代码中都修改它的名字或者参数. 示例: Test1.php cl ...
- 学生学籍管理系统python_使用Python实现 学生学籍管理系统
大家好,今天跟大家分享一个用Python实现的学生学籍管理系统: 该代码主体由五个函数组成: 1.add_stu() 添加 2.del_stu() 删除 3.print_stu()打印 4.exit_ ...
- 学籍管理系统c语言程序设计,c语言学籍信息管理系统设计
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 使用下面的数据设计一个简单的学籍管理系统. 学生基本信息文件(A.TXT)极其内容: 学号 姓名 性别 宿舍号码 电话号码 01 张成成 男 501 87 ...
- 用python写学籍管理系统_使用Python实现 学生学籍管理系统
大家好,今天跟大家分享一个用Python实现的学生学籍管理系统: 该代码主体由五个函数组成: 1.add_stu() 添加 2.del_stu() 删除 3.print_stu()打印 4.exit_ ...
- 简单的学籍管理系统c语言,c语言学生学籍管理系统—精简版.pdf
include stdio h include stdlib h include string h int shoudsave 0 struct student char num 10 学号 char ...
- c语言综合设计作业学籍管理系统,C语言课程设计----学生学籍管理系统
匿名用户 1级 2014-11-13 回答 #include #include #include structstud { longnum; charname[20]; doublescore; }; ...
- [内附完整源码和文档] 基于Java的学生学籍管理系统
摘 要 学生学籍管理系统是一个教育单位不可缺少的重要部分之一,学生学籍内容对学校的管理者和决策者来说都是至关重要的,而传统的学籍管理方式十分的复杂繁琐.低效率,在计算机普及的现代,开发一个高效简便学生 ...
- 学生学籍管理系统_管理员登陆对学生的信息进行操作
MInterface.java package studentManage;import java.awt.*; import java.awt.event.*; import javax.swing ...
- 基于vue2+element+springboot+mybatis+jpa+mysql的学籍管理系统
目录 整套系统源码下载 一.开发背景 二.用到的技术 三.开发使用的IDE 四.搭建开发环境 五.启动项目 六.学籍管理系统使用说明 七.结语 八.源码下载 基于vue2+element+spring ...
- 【软件设计模式】工厂模式(简单工厂模式、一般工厂模式、抽象工厂模式)
概述: 工厂模式把对象的创建交由某个特定的类来实现,该类为工厂类,该类的方法称为工厂方法,仅仅负责创建对象,从而将客户端复杂的对象创建语句实现解耦.责任分离,方便扩展和维护. 分类: 工厂模式分为简单 ...
最新文章
- JavaSE学习笔记(三)——运算符与控制语句
- realme怎么互传_realme真我X7 Pro首发体验:非常轻快,颜值不赖
- 一张图帮你记忆,Spring Boot 应用在启动阶段执行代码的几种方式
- OVS对VXLAN报文解封包
- 实现键盘录入的第二种方式。。。。。
- SQLyog连接虚拟机中docker中的mysql过程详解,并解决2003错误
- 网络虚拟化技术(一): linux网络虚拟化,网络虚拟化技术(一): Linux网络虚拟化...
- linux mate eth0已下线,Linux Mint 18 Cinnamon 版和 MATE 版已经可以下载了
- jsp mysql 音乐网站_Maven+JSP+Servlet+C3P0+Mysql实现的音乐库管理系统
- JS难点之hoist
- java船_Java-货船
- 【最新砍价小程序源码】
- 计算机仿真技术物流,基于计算机仿真技术的物流实验室建设
- win10 ie浏览器安装Flash Player Debugger解决方案
- Thymeleaf指定背景图片以及图片如何调整大小
- 赶集网–免费发布信息
- Python学习笔记(7)——Matplotlib中的Axes.plot(绘制点、线和标记)的用法
- 不符合正态分布的配对数据也有自己的统计方法。
- java常用监控命令
- QQ快捷登录需要在 AndroidManifest.xml 注册添加如下信息,sdk中提供开始配置少了回调的配置,报错