热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于SSM框架的学生信息管理系统(中)

基于SSM框架的学生信息管理系统(中)项目开发步骤数据库设计数据表关系图系统总体ER图管理员实体学生实体班级实体学院实体数据库逻辑结构设计表名3.1管理员信息表序号列名数据类型长度
基于SSM框架的学生信息管理系统(中)

项目开发步骤

数据库设计

数据表关系图
《基于SSM框架的学生信息管理系统(中)》

系统总体ER图

《基于SSM框架的学生信息管理系统(中)》

管理员实体

《基于SSM框架的学生信息管理系统(中)》

学生实体

《基于SSM框架的学生信息管理系统(中)》

班级实体

《基于SSM框架的学生信息管理系统(中)》

学院实体

《基于SSM框架的学生信息管理系统(中)》

数据库逻辑结构设计

表名3.1 管理员信息表

序号列名数据类型长度标识主键允许空说明
1idint(11)11NYN编号
2namevarchar(25)75NNN姓名
3genderchar(1)3NNN性别
4passwordvarchar(30)90NNN密码
5emailvarchar(50)150NNN邮箱
6addressvarchar(100)300NNN地址

表名3.2 班级信息表

序号列名数据类型长度标识主键允许空说明
1cnamevarchar(50)150NYN班级名称
2majorvarchar(50)150NNN专业
3counsellorvarchar(50)150NNN辅导员
4dept_idint(11)11NNN学院编号

表名3.3 学院信息表

序号列名数据类型长度标识主键允许空说明
1didint(11)11NYN学院编号
2dept_namevarchar(50)150YNN学院名称

表名3.4学生信息表

序号列名数据类型长度标识主键允许空说明
1idint(11)11NYN学生编号
2snovarchar(20)60YNN学号
3namevarchar(25)75NNN学生姓名
4genderchar(1)3NNN性别
5emailvarchar(50)150NNN邮箱
6addressvarchar(100)300NNN地址
7introductionvarchar(200)600NNN简介
9class_namevarchar(50)150NNN班级名称

创建实体类

  1. 用于处理登录表单提交的数据:LoginForm

    成员变量:

    private String username;
    private String password;
    private String verifyCode;

  2. 管理员实体类:Admin

    成员变量:

    private Integer id;
    private String name;
    private char gender;
    private String password;
    private String email;
    private String address;

  3. 学生类:

    1. 用于添加学生和更新学生的类:Student

      成员变量:

      private Integer id;
      private String sno;
      private String name;
      private char gender = '男'; //default
      private String email;
      private String address;
      private String introduction;
      private String cname; //班级名

    2. 用于多表查询的类:StudentBean,在Student类的基础上,新增一个成员变量:private ClassHelp classHelp;,用于定义一个学生与班级之间一对一的关系。

  4. 班级类:

    1. 用于添加和更新班级的类:ClassHelp

      private String cname;
      private String major;
      private String counsellor; //辅导员
      private Integer dept_id; //外键

    2. 用于多表查询的类:ClassBean,在ClassHelp类的基础上,新增一个成员变量:private DeptBean deptBean;,用于定义一个班级与学院之间一对一的关系

  5. 学院类:DeptBean

    private Integer did;
    private String dept_name;

创建DAO层相关类和对应的mapper映射文件

AdminMapper

  1. AdminMapper.java

    //验证登录信息是否正确
    Admin login(LoginForm loginForm);
    //通过姓名查询指定管理员信息
    Admin findByName(String name);
    //添加管理员信息
    int insert(Admin admin);
    //根据姓名查询指定/所有管理员列表
    List<Admin> selectList(Admin admin);
    //根据id更新指定管理员信息
    int update(Admin admin);
    //根据id修改指定用户密码
    int updatePassword(Admin admin);
    //根据id删除指定管理员信息
    int deleteById(Integer[] ids);

  2. AdminMapper.xml

StudentMapper

  1. StudentMapper.java

    //获取班级人数
    List<HashMap<String, Object>> getStudentNumber();
    //根据学号查询指定学生信息
    Student findBySno(Student student);
    //添加学生信息
    int insert(Student student);
    //根据id修改指定学生信息
    int update(Student student);
    //根据id删除指定学生信息
    int deleteById(Integer[] ids);

  2. StudentMapper.xml

StudentBeanMapper

  1. StudentBeanMapper.java

    //根据班级名(全名称)或学生名(模糊)查询所有的学生信息/全部学生信息列表
    List<StudentBean> selectList(StudentBean studentBean);

  2. StudentBeanMapper.xml

ClassHelpMapper

  1. ClassHelper.java

    //查找所有的班级
    List<ClassHelp> findAll();
    //通过名字查询
    ClassHelp findByName(String cname);
    //插入班级
    int insert(ClassHelp classHelp);
    //根据班级名更新班级信息
    int update(ClassHelp classHelp);
    //通过班级名删除班级
    int deleteByClassName(String[] cnames);

  2. ClassHelper.xml

ClassBeanMapper

  1. ClassHelpMapper.java

    ///根据学院名(全名称)或班级名(模糊)查询所有的学生信息/全部学生信息列表
    List<ClassBean> selectList(ClassBean classBean);

  2. ClassBeanMapper.xml

DeptBeanMapper

  1. DeptBeanMapper.java

    List<DeptBean> findAll();

  2. DeptBeanMapper.xml

用spring-test测试DAO层所有的方法

特别提醒 一定要做测试,别等到浏览器报400或500的时候再调bug,会比较麻烦。

  1. 创建测试类:MapperTest.java

    public class MapperTest {

    }

  2. 添加spring-test注解

    //使用spring-test进行测试
    @RunWith(SpringJUnit4ClassRunner.class)
    //加载spring配置文件
    @ContextConfiguration(locations = "classpath:spring-conf/applicationContext.xml")
    public class MapperTest {

    }

  3. 测试方法

    以测试AdminMapper中的insert(Admin admin)方法为例

    @RunWith(SpringJUnit4ClassRunner.class)
    //加载spring配置文件
    @ContextConfiguration(locations = "classpath:spring-conf/applicationContext.xml")
    public class MapperTest {
    //1. 注入AdminMapper
    @Autowired
    AdminMapper adminMapper;

    @Test
    public void test1() {
    Admin admin = new Admin();
    admin.setId(1);
    admin.setName("赵匡胤");
    admin.setGender('男');
    admin.setPassword("123coca");
    admin.setEmail("12345asd@gg.com");
    admin.setAddress("云南省昆明市");

    adminMapper.insert(admin);
    }
    }

    基于SSM框架的学生信息管理系统(下)

    需要源码和设计说明书(课程设计报告),请留下自己的邮箱或发送邮件至mark_walen@qq.com。


推荐阅读
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 树莓派Linux基础(一):查看文件系统的命令行操作
    本文介绍了在树莓派上通过SSH服务使用命令行查看文件系统的操作,包括cd命令用于变更目录、pwd命令用于显示当前目录位置、ls命令用于显示文件和目录列表。详细讲解了这些命令的使用方法和注意事项。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
author-avatar
鱼氵摆摆和叮叮猫琅_246
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有