精华内容
下载资源
问答
  • 学生成绩管理系统 绝对好用 有流程图 能成功运行 有完整课设报告
  • JavaEE课程设计报告 题 目 学生信息管理系统 系 别 计算机科学与工程学院 专 业 计算机科学与技术 班 级 5555 姓 名 #3 学 号 # 指导老师 罗翌陈 实际任务与技术要求 1实际任务 学生信息管理系统主要用来给学生提供...
  • word word专业资料 C++程序设计 课程设计报告 设计题目学生成绩管理系统 目录 TOC \o "1-5" \h \z \o "Current Document" 一设计任务与要求 3 设计容 3 \o "Current Document" 课程设计的要求 3 系统分析需求分析 \o...
  • 数据库系统课程设计任务书院(系):理学院专业:信息与计算科学姓名:学号:10课程设计题目:学生成绩管理系统成绩:问题阐述与分析:(主要阐述设计题目背景、设计实现意义及所要解决的主要问题,要明确给出所要用的...

    数据库系统课程设计任务书

    (

    )

    理学院

    业:

    信息与计算科学

    名:

    号:

    10

    课程设计题目:

    学生成绩管理系统

    绩:

    问题阐述与分析:

    (主要阐述设计题目背景、

    设计实现意义及所要解决的主要问题,

    要明

    确给出所要用的数据库知识点)

    一.

    设计背景

    学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策

    者和管理者来说都至关重要

    ,

    所以学生成绩管理系统应该能够为用户提供充足的信息

    和快捷的查询手段,对学生来说可以轻松的查阅自己在校的成绩以及信息等。

    作为计算机应用的一部分

    ,

    使用计算机对学生成绩信息进行管理

    ,

    有着手工管理

    所无法比拟的优点

    .

    例如

    :

    检索迅速、查找方便、可靠性高、存储量大、保密性好、寿

    命长、成本低等。

    学生成绩管理系统提供了强大的学生成绩管理管理功能,方便系统管理员对学生

    成绩等信息的添加、修改、删除、查询、留言等操作,同时一样的方便学生对自己各

    科成绩查询,学习和交流。

    二.

    设计实现意义

    设计一个适用于普通高等院校的学生成绩管理系统,用于对学生各学科成绩信息

    以及其他与成绩相关信息进行综合管理。该系统是面向教务管理部门而设计的,通过

    该系统可以很方便的对存储在后台数据库的数据进行各种管理工作。

    .

    所需解决主要问题

    (

    1

    )

    目标分析

    教师需求

    1.

    教师

    (

    管理员

    )

    够实现对整个学生信息的添加、修改、删除、查询等操作,对

    教师

    (

    管理员

    )

    用户的添加、删除、修改等操作。

    2.

    教师

    (

    管理员

    )

    可以将学生成绩的数据库发布到网上,学生的信息发布到网上,

    方便学生教师进行查询,达到资源共享的目的。

    展开全文
  • C++程序设计 课程设计报告 设计题目学生成绩管理系统 word 专业资料 . 目录 一 任 与要 求? ? ? ? ?3 1. 容? 3 2. 程 的要求? 3 二系 分析需求分析? 3 需求分析? 3 系 性能要求? 3 系 的功能分析? 3 系 功能模 ? 3 ...
  • C++实习报告一、课程设计目的1.C++课程设计,使我们能够将学到的面向对象的设计思想运用在具体的工作和学习中,加深对类和对象的理解,2.要求学生对生活中许多具体的事物抽象出类,并掌握继承和派生类、基类、虚函数...

    C++

    实习报告

    一、课程设计目的

    1.

    C++

    课程设计,使我们能够将学到的面向对象的设计思想运用在具体的工作和学习

    中,加深对类和对象的理解,

    2.

    要求学生对生活中许多具体的事物抽象出类,并掌握继承和派

    生类、基类、虚函

    数和多态的概念。

    3.

    通过课程设计掌握《

    C++

    语言程序设计》的编程思想,为后续课程打下基础。

    4.

    培养我实际操作能力和实践能力,为以后的工作打下坚实的基础。

    二、课程设计的内容

    1

    、课程设计的题目及简介

    文本界面为

    管理员

    1.

    输入信息

    2.

    保存信息

    3.

    查询信息

    4.

    修改并保存

    5.

    显示全部

    6.

    删除信息

    7.

    退出系统

    学生

    1

    信息查询

    (

    1

    )输入姓名

    (

    2

    )输入学号

    2

    退出系统

    2

    、设计说明

    总体结构我们采取模块化方式进行程序设计,

    要求程序的功能设计、

    数据结构设计及整体

    结构设计合理。也可根据自己对题目的理解增加新的功能模块。

    系统以菜单界面方式

    (至少采用文本菜单界面,如能采用图形菜单界面更好)工作,运行

    界面友好,演示程序以用户和计算机的对话方式进行

    (

    1

    )首先,看题目要求,每一条记录包括一个学生的姓名、性别、专业、出生

    日期、家庭住址、英语成绩。同时

    ,应具备以下功能:

    1

    、输入功能:一次可以完成自定义学生人数的学生成绩记录的输入。

    2

    .保存功能:对指定学生的成绩进行保存

    3.

    查询功能:选择某种方式并输入该成绩查询符合条件的学生成绩

    4

    、修改并保存功能:对指定学生的成绩进行修改保存。

    5

    .显示功能:将以上功能操作后的学生成绩显示出来。

    展开全文
  • 实现学生成绩的录入、统计、查询、修改、删除、输出。0)定义类类型 1)主函数main():定义学生结构体数组,调用录入、统计等函数对成绩表进行处理; 2)录入函数Input():输入班级到政治课成绩; 3)统计函数...
  • 计算机高级语言课程设计报告 学生成绩管理系统MFC 班级201131 学号20131000349 姓名马瑞琪 日期2013年1月17号 一 课程设计题目与要求 1增加记录要求可以连续增加多条记录 2删除一个学生的记录要求可以先查找再删除...
  • 目录 前言-----------------------------------------------------------2 概要设计-------------------------------------------------------3 详细设计-------------------------------------------------------4 ...
  • 写在前面这个项目是Java课程的课设,一共花了5天的时间去完成它,在这期间感谢一些博主的帮助,让我了解到了一些新的技术知识,所以打算写这一系列博客来介绍一整个课设项目,也为了帮助之后的人,如有错误,请联系...

    写在前面

    这个项目是Java课程的课设,一共花了5天的时间去完成它,在这期间感谢一些博主的帮助,让我了解到了一些新的技术知识,所以打算写这一系列博客来介绍一整个课设项目,也为了帮助之后的人,如有错误,请联系我。

    为了更好的让读者了解到整个项目的设计流程,我将项目拆分成几个部分来就行解说,这一小节是一个总述,主要介绍课设的整个框架和最终效果,代码我会放到后面的github链接上,欢迎大家star。如果有一些参考没有加上联系,希望大家可以联系我,因为写的时候查的比较快,没有记录到博主的链接,敬请谅解!!!

    一、用到的技术栈

    Java基础

    JavaFX项目技术

    Java文件的读写

    JSON格式

    一些简单的设计思想(个人拙见)

    二、具体博客的拆分讲解

    总体介绍,项目成果展示

    项目所需要的环境安装教程(JavaFX 一些需要的jar包)

    实体类、异常的设计

    课设功能的工具设计

    主界面登陆的设计

    学生界面和功能设计

    管理员的界面和功能设计

    教师界面和功能设计

    整个项目遇到的问题和总结

    三、项目的结构

    整体结构

    5aa4b117b217445ac215a5e2de2070c4.png

    在controller里面是放界面的控制器的,主要就是写每个见面对应的功能。每一个fx文件里面都会对应一个controller,类似于mybatis里面的mapper和xml相互对应。里面分为了4个部分登陆、管理员、学生、教师。

    d7f588200168156f85084714bf940a65.png

    db里面是模拟数据库的,因为课设要求使用Java读写文件,所以这里我没使用数据库mysql等技术。如果使用数据库会更加的简单一些,因为他返回的数据很容易转化为对象,不需要考虑太多,对于数据的操作就是使用sql语句完成,目前技术封装的挺好!文件操作就得自己写工具去操作读写文件。

    d57e30fa619128ca63faf8e52db4ee16.png

    dto中是存放返回到界面上的数据对象,因为每一个对象并不是每一个成员属性都需要返回到前端,所以使用这些对象去转化会更加的方便理解。

    7d0a8ca6ae0c1c948f43ee06d33272e2.png

    images里面存放的是课设所需要的一些小图标(很多命名不规范,因为找到图直接放入文件夹中)

    2fc7811927015b9759e85ccfba74c9a4.png

    myException是自己的自定义异常处理类,其实不用异常处理也可以(最好使用,但是在可视化中没有具体用到,可以防止程序异常结束),但是为了了解课程就写了一下。

    3ab57ccbd548bfe3b1da4c933f37d9f4.png

    pojo中存放的是实体类,对应数据库中的每一个表(模拟的)相当于一个对象里面有很多个属性。

    51207d582ee73f5dd6ade31e0e6bf33c.png

    utils里面是写的一些工具类,是主要的功能开发的地方,基本上所有的功能都在这些工具里面实现的,使用的时候直接调用工具就可以了(还是挺方便的)

    7b92f4f8ea4387b7c111fb8d10c3f17b.png

    view里面是存放的是使用JavaFX编写的fxml文件显示出来的页面,也是分为登陆、管理员、学生、教师模块

    e505e82860df77009a51487efe97b9f6.png

    Main是主程序入口,Test是写工具时候的测试类,然后就是题目啦

    91ad8a00eeca78bbc42b4658bbae8c1e.png

    最后是使用的外部jar包,一个是JavaFX必须的开发sdk里面的lib文件夹作为jar引入项目中,另一个是fastjson方便将对象转为json格式

    ee22b136ae9f3e905514d896c5cd66e9.png

    四、项目展示

    登陆界面

    a386e15550a5a84ad4558bb2d76183b3.png

    管理员界面

    6b6ad0af7b0007ec44c9fbb80da6fd71.png

    81f4e100f53a7e40aee26323dc60193e.png

    05c7c7d254ce89d87e0d9dbc5b7359bc.png

    a0b337fed418a0459ee11d1220061c07.png

    教师界面

    e4fce333586797dba41f2d147f8e1949.png

    37b9900d3127db13725e1a1836963bb8.png

    052db568a522cf1b343a3798e6dcb6d2.png

    5481a2a6937d89a203ff6bf2b54897c4.png

    学生界面

    9fd50b20abb756e7864ac19db16fc99d.png

    五、小总结

    第一篇已经完成,就简单的介绍一下课设的结构和项目成果的展示,为了方便大家选择是否需要这个技术。后面我会把完整的代码放到GitHub上,欢迎大家star!!!

    关于本篇的其他的章节

    展开全文
  • 非常全面的学生信息管理系统的软件建模分析报告,包含系统概述、业务建模、数据建模、应用程序建模等章节。大三在校时的最终结课课设报告
  • 输入一个班级的学生基本信息(包括学号,姓名,性别,5门课程成 绩)。 2、按姓名或学号查找、修改、删除和保存各个学生的信息...6、设置系统登录密码,只有正确输入密码方可进入管理系统。可更改和 保存登录密码。
  • UML 课设报告 学生成绩管理系统 经过答辩 完善
  • 程序设计工程训练 报告 学生宿舍管理系统 课程名称 程序设计工程训练 姓 名 院系 信息科学与技术学院 专业班级 学 号 指导教师 教务处制 . . 目 录 1 需求分析 1 2 系统总框图和功能模块说明 2 2.1 系统总框图 2 ...
  • 曲 為 viZk# 第一章需求分析 课程设计性质和目的? 输入输出的形式 程序的... 第一章需求分析 1课程设计性质和目的 该课程设计的主要任务是运用在面向对象程序设计课程中学到的理论知识来指导实践使 学生了解面向对象与
  • PAGE . . . 课程设计(论文)说明书 题 目 学生成绩管理系统 学 院 计算机科学与工程学院 专 业 姓 名 学 号 指导教师 2012年 月 日 摘 要 随着科学的发展和社会的进步许多...本报告简单叙述了学生管理系统的现状重点介
  • 河南工程学院高级程序设计语言课程设计 成果报告 学生成绩管理系统设计与实现 学生学号 学生姓名 学 院 计算机学院 专业班级 软件工程1342 专业课程 高级程序设计语言 指导教师 2014 年 6 月 27 日 题 目 学生成绩...
  • 导入Eclipse(最好能带可视化插件的,比较容易看懂),入口函数在类src--Login--Login.java,运行这个类即可测试,要想运行起来,环境要自己配一下,JDBC包,皮肤包,要导入工程。数据库用的是SQL server 2000
  • 学生公寓管理系统 摘要: 随着社会的发展以及教育水平的提高,当今在校生数量越来越多。与此同时,目前还有一些学校还在使用手工的方式对学生的住宿信息进行管理,手工记录对于规模小的学校来说还可以勉强接受,但...

    学生公寓管理系统

    摘要: 随着社会的发展以及教育水平的提高,当今在校生数量越来越多。与此同时,目前还有一些学校还在使用手工的方式对学生的住宿信息进行管理,手工记录对于规模小的学校来说还可以勉强接受,但对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的,不但浪费了许多时间,而且效率也低。针对这个情况,设计了一套学生公寓管理系统。学生公寓管理系统采用的是计算机化管理,通过强大的计算机技术给公寓管理人员和学生带来便利,通过网络可以在系统上查询学生公寓状况,同时管理人员还可以对学生的信息进行增删改查,最大程度了解所有学生的住宿信息。

    关键词:公寓管理系统,数据库系统,课程设计

    1.设计任务

    1.1设计目的

    不但能够实现少量的管理人员完成大量的人员安排公寓管理服务,使公寓管理更加规范化、科学化,人性化。而且同时还要实时动态的掌握每个公寓管理的基本信息,以及统计相关数据更新。

    1.2设计内容

    (1)基本要求

    学校有若干公寓,每栋七层,每层16个房间,每个房间4个床位,需要一个公寓管理系统实现管理。

    (2)基本功能

    ①寝室分配:根据系别、年级、班级分配寝。查询寝室状态和入住信息。

    ②学生管理:实现入住学生信息的维护和查询功能。

    ③信息查询:按公寓楼号、学生姓名等查询住宿信息。

    ④财产管理:实现对公寓财产的管理功能。

    ⑤出入登记:实现对学生搬出公寓的贷物进行登记和对外来人员进行登记等功能。

    ⑥系统管理:参数设置(包括公寓楼号、寝室房号、系别、年级、班级的设置)、权限管理和系统维护( 数据备份、数据恢复)

    2.需求分析

    2.1 需求分析任务

    需求分析的任务是通过详细调查现实世界要处理的对象,充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。调查的重点是“数据”和“处理”,通过调查,收集与分析,获得用户对数据库的信息要求处理要求,安全性与完整性要求。

    为了完成需求分析的任务,首先要调查清楚用户的实际要求,与用户达成共识,然后分析与表达这些需求。

    随着信息技术的发达和科技的发展,学生数量逐渐增多,对于管理学生住宿信息的需求也逐渐变大,基于这种需求,学生公寓管理系统不但使学校能享受更好的管理效率,还能满足对学生和宿管的信息管理需求。

    2.2 需求分析过程

    2.2.1用户需求分析

    随着社会的发展以及教育水平的提高,当今在校生数量越来越多。与此同时,目前还有一些学校还在使用手工的方式对学生的住宿信息进行管理,手工记录对于规模小的学校来说还可以勉强接受,但对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的,不但浪费了许多时间,而且效率也低。针对如此,设计了一套学生宿舍管理系统。

    2.2.2处理对象分析

    系统要处理的对象包括学生基本信息、宿管基本信息、楼宇基本信息、宿管基本信息、住宿基本信息、超级管理员基本信息等六个方面,各个对象包括信息如下所示:

    (1) 学生基本信息(Student):包括学生学号、学生姓名、学生性别、学生密码等方面的信息,可以方便学生信息的查询和更新;

    (2) 宿管基本信息(Dormitory Manager):包括宿管编号、宿管姓名、宿管性别、宿管密码等,以方便管理人员对宿舍管理人员的任用、信息查询及更改;

    (3) 楼宇基本信息(Building):包括楼宇名称、所属宿管、所属位置等方面,这样可以方便管理者对楼宇的管理,提高查询效率;

    (4) 宿舍基本信息(Dormitory):包括宿舍编号、所属楼宇、所属楼层、最多可住人数、已住人数;

    (5)住宿基本信息(Live):包括学生姓名,宿舍编号,入住日期等,可以方便管理人员对学生进行信息查询及更改;

    (6) 系统管理(Admin):超级管理员编号,超级管理员名字,超级管理员密码等;

    2.2.3功能需求分析

    1.登陆功能

    已存在数据库中的用户输入自己的信息后可以进行登录,用户可以根据提示输入用ID、密码,并选择权限,点击登陆即可进入相应的管理界面。

    2.学生功能

    学生登录系统后权限是最小的,学生只能查看自己的姓名,性别,学号,ID,密码,缴费信息等信息,或者对自己的信息作出修改。

    3.宿管功能

    同样,也只有存在数据库中的宿管才能登录该系统。宿管登录系统后,权限比学生登录多很多。

    (1)学生管理
    宿管可以查看其所管理宿舍的学生信息,并可以为学生分配宿舍,甚至可以修改学生的住宿信息;

    (2)宿管管理
    宿管可登陆系统对自己的姓名,密码,ID等信息进行增、删、改,查;

    (3)楼宇管理
    宿管可以登录系统查看其所管理的楼宇信息,比如楼宇的位置,名称,ID等信息。同时也可以对自己所管辖的楼宇进行检索。此功能是为了方便当一个宿管管辖的楼宇过多时,查看某座楼宇的信息。

    (4)宿舍管理
    宿管可以登录系统查看其所管理的宿舍信息,比如宿舍的所属楼宇,宿舍号, ID,所属楼层,最大入住人数,已住人数等信息。同时也可以对自己所管辖的宿舍进行添加或者删除。也可以按要求对自己管辖的宿舍进行检索。此功能是为了方便当一个宿管管辖的宿舍过多时,查看某宿舍的信息。

    (5)住宿管理
    宿管可以登录系统查看其所管理的学生宿舍信息,并能对宿舍信息进行增、删、改、查。比如添加住宿学生,调整住宿学生的宿舍信息,为学生退宿等。同时宿管还可以按照学生姓名查看学生的宿舍信息,或者按照宿舍信息查看宿舍中的学生入住信息。

    4.管理员功能

    管理员的权限是最大的,管理员登录系统后的功能最为全面,用到了前面所涉及的所有数据库的信息。这里在进行系统设计是将管理员数量预设为一名,预设其姓名为admin,密码也是admin。

    (1)学生管理
    管理员不仅可以查看其所管理宿舍的学生信息,并可以为学生分配宿舍,甚至可以修改学生的住宿信息,他拥有最高的权限,可以向数据库添加一个新的学生信息,或者删除一个学生信息。

    (2)宿管管理
    同样,管理员不仅可以对一个宿管的姓名,密码,ID等信息进行增、删、改,查。也可以向数据库中添加一个宿管的信息,或者在数据库中删除一个宿管的信息。

    (3)楼宇管理
    管理员登录系统查看所有楼宇信息,包括楼宇的位置,名称,ID等信息。同时也可以按楼宇的ID或者位置对楼宇进行检索。同时可以对楼宇信息进行增、删、改、查。

    (4)宿舍管理
    管理员可以登录系统查看所有楼宇的所有宿舍信息,包括宿舍的所属楼宇,宿舍号, ID,所属楼层,最大入住人数,已住人数等信息。当然可以所有宿舍进行添加或者删除。也可以按要求对宿舍进行检索。或者从数据库中添加或者删除一个宿舍的信息。

    (5)住宿管理
    管理员登录系统可以查看所有学生的宿舍信息,并能对宿舍信息进行增、删、改、查。比如添加住宿学生信息,调整住宿学生的宿舍信息,为学生退宿等。同时管理员还可以按照学生姓名查看学生的宿舍信息,或者按照宿舍信息查看宿舍中的学生入住信息。不过管理员主要对住宿信息进行宏观调控,查看等操作。

    (6)系统管理
    与学生和宿管登录该系统一样,管理员也能对自己的信息进行查看和修改,此外管理员还能查看当前管理员的数量,以及各个管理员的当前状态(是否可用)。

    2.2.4安全性与完整性分析

    安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过用户授权机制,欲用户登陆来识别用户级别,根据这个级别来分配用户权限,达到数据更高层次的安全保密功能。

    完整性要求用于描述学生基本信息、宿管基本信息、楼宇基本信息、宿管基本信息、住宿基本信息、超级管理员基本信息。

    3.概念结构设计

    3.1 概念结构设计任务

    概念结构设计的任务是将需求分析得到的用户需求抽象为信息结构。

    3.2 概念结构设计方法

    设计概念结构通常有四类方法:自顶向下,自底向上,逐渐扩张以及混合策略。本次学生公寓管理系统采用的是自底向上的方法,首先定义全局的概念结构的框架,然后逐步细化。根据自顶向上地进行需求分析然后再自底上地进行概念设计。

    3.2.1概念结构设计步骤

    概念结构的设计可分为两步:

    (1)抽象数据并设计局部视图。

    根据需求分析,总结出该宿舍管理系统中的实体包括:学生,宿管,楼宇,宿舍 ,住宿,管理员等六部分。

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    (2)集成局部视图,得到全局的概念结构。

    在这里插入图片描述

    4.逻辑结构设计

    4.1 逻辑结构设计任务

    逻辑结构设计的任务是把概念结构设计好的基本E-R图转换为与选用数据库管理系统产品所支持的数据模型相符合的逻辑结构。

    4.2 E-R图向关系模型的转化

    (1)学生表(Student):学生学号sn、学生姓名name、学生性别sex、学生密码password

    (2)宿管表(Dormitory Manager):宿管编号sn、宿管姓名name、宿管性别sex、宿管密码password

    (3)楼宇表(Building):楼宇名称name、所属宿管dormitoryManagerId、所属位置location

    (4)宿舍表(Dormitory):宿舍编号sn、所属楼宇buildingId、所属楼层floor、最多可住人数maxNumber、已住人数liveNumber;

    (5)住宿表(Live):学生姓名name,宿舍编号dormitoryId,入住日期liveDate;

    (6)系统表(Admin):超级管理员编号id,超级管理员名字name,超级管理员密码password;

    (7)包含:宿舍编号sn,楼宇id

    (8)管理:宿管编号sn,楼宇id

    (9)入住:学生学号sn,住宿id

    (10)包含:楼宇id,宿舍编号sn

    在这里插入图片描述

    5.物理结构设计

    根据逻辑设计出的逻辑模式,DBMS及计算机系统所提供的手段和施加的限制,设计数据库的内模式,即文件结构,各种路径,控件分配,记录的存取方式等,为逻辑数据结构选取一个最合适的应用环境的物理结构。

    图 9学生基本信息表
    图 10宿管基本信息表
    图 11楼宇基本信息表图 12宿舍基本信息表

    图 13住宿基本信息表
    图 14超级管理员基本信息表

    6.数据库的实施

    6.1 系统的设计思想

    首先考虑系统安全性,本系统默认管理员已经将学生信息录入数据库中,管理员以及宿管都可以增加或者删除数据库中学生表的学生信息,但是学生不能自行添加注册信息,只能登陆管理自己的信息。通过B/S模式实现人员登陆管理,只有存在于数据库学生表中的学生,以及存在的宿管和管理员才可以登录本系统,有效避免了非法人员登陆系统。此外本系统还对用户的权限进行了分级设置,用户在输入自己的姓名,密码以及验证码后,需要选择合适的身份才能登陆系统,用户级别分为学生、宿管和管理员,不同级别的用户有不同的操作权限。用户登录系统后才可以进行相应权限下的增、删、改、查操作。

    其次,是对数据库的操作。在用户成功登录系统后所做的每一次的增、删、改、查都动态的对后台数据库中相应表中的信息作出了修改,该部分主要应用JSP技术实现对数据库信息的动态操作。数据库采用MySQL,能够清晰的展现大量的数据,能存放和读取大量的数据。通过JSP技术实现对数据库信息的动态管理并应用navicat数据库可视化工具随时检验自己在开发过程中的操作是否有误。

    6.2 主要技术

    6.2.1前端
    html5 ,css3, jsp,java servlet,EasyUI框架

    6.2.2后端
    Java基础,Tomcat简单使用,MySQL数据库

    6.3 管理页面

    6.3.1 登陆界面–以超级管理员身份登陆

    在这里插入图片描述
    (1)学生管理--学生列表宿管管理--宿管列表
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    6.3.2 登陆界面–以学生身份登陆

    在这里插入图片描述在这里插入图片描述

    在这里插入图片描述
    6.3.3 登陆界面–以宿管身份登陆

    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    6.4 系统调试与测试

    6.4.1添加页面
    在这里插入图片描述
    在这里插入图片描述
    6.4.2修改页面

    在这里插入图片描述
    在这里插入图片描述

    6.4.3删除页面

    在这里插入图片描述
    在这里插入图片描述
    6.4.3查询页面

    在这里插入图片描述在这里插入图片描述

    6.5 各功能代码设计

    学生宿舍管理系统总体上来讲是实现了不同状态(权限)下,对数据库中不同信息的增、删、改、查以及相应的前端页面设计。下面分别展示不同阶段重点部分的代码:

    6.5.1登陆页面

    <title>登录|学生公寓管理系统</title>
    <meta name="keywords" content="学生公寓管理系统">
    </head>
    <body>
    <div class="header" style="padding: 0;">
    	<h2 style="color: white; width: 400px; height: 60px; line-height: 60px; margin: 0 0 0 30px; padding: 0;">学生公寓管理系统</h2>
    </div>
    <div class="loginWraper">
      <div id="loginform" class="loginBox">
        <form id="form" class="form form-horizontal" method="post">
          <div class="row cl">
            <label class="form-label col-3"><i class="Hui-iconfont">&#xe60d;</i></label>
            <div class="formControls col-8">
              <input id="login-name" name="name" type="text" placeholder="账号" class="input-text size-L">
            </div>
          </div>
          <div class="row cl">
            <label class="form-label col-3"><i class="Hui-iconfont">&#xe60e;</i></label>
            <div class="formControls col-8">
              <input id="login-password" name="password" type="password" placeholder="密码" class="input-text size-L">
            </div>
          </div>
          <div class="row cl">
            <div class="formControls col-8 col-offset-3">
              <input id="login-vcode" class="input-text size-L" name="vcode" type="text" placeholder="请输入验证码" style="width: 200px;">
              <img title="点击图片切换验证码" id="vcodeImg" src="CpachaServlet?method=loginCpacha&vl=4&fs=28"></div>
          </div>
          
          <div class="mt-20 skin-minimal" style="text-align: center; color:white">
    		<div class="radio-box">
    			<input type="radio" id="radio-2" name="type" checked value="2" />
    			<label for="radio-1">学生</label>
    		</div>
    		<div class="radio-box">
    			<input type="radio" id="radio-3" name="type" value="3" />
    			<label for="radio-2">宿管</label>
    		</div>
    		<div class="radio-box">
    			<input type="radio" id="radio-1" name="type" value="1" />
    			<label for="radio-3">管理员</label>
    		</div>
    	</div>
          
          <div class="row">
            <div class="formControls col-8 col-offset-3">
              <input id="submitBtn" type="button" class="btn btn-success radius size-L" value="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;">
            </div>
          </div>
        </form>
      </div>
    </div>
    <div class="footer">Copyright &nbsp; artisan @ 【江雪雨】</div>
    </body>
    </html>
    
    

    6.5.2数据库操作基础类

    数据库操作基础类, 利用泛型和反射机制来抽象数据库基本的增删该查操作。
    所有新增插入操作抽象封装代码如下:

     public boolean add(T t) {
        	 if(t == null)
        		 return false;
        	String buildSql = buildSql(CURD_ADD);
        	System.out.println(buildSql);
        	//sql语句已生成 接下来的sql语句
            try {
            	PreparedStatement prepareStatement = con.prepareStatement(buildSql);
            	Field[] fields = t.getClass().getDeclaredFields();
            	for(int i=1;i<fields.length;++i) {
            		fields[i].setAccessible(true);//调用setAccessible()方法,我们可以实现对student私有属性字段的操作
            	 	prepareStatement.setObject(i,fields[i].get(t));
            	}
            	return prepareStatement.executeUpdate()>0;
            }
            catch(Exception e) {
            	e.printStackTrace();
            }
        	
        	 return false;//默认返回flase
         }
    
    

    所有修改操作抽象封装代码如下:

     public boolean update(T t) {
        	 String sql = buildSql(CURD_UPDATE);
        	 try {
    			PreparedStatement prepareStatement = con.prepareStatement(sql);
    		    Field[] declaredFields = this.t.getDeclaredFields();
    		    for( int i=1;i<declaredFields.length;i++) {
    		    	declaredFields[i].setAccessible(true);
    		    	prepareStatement.setObject(i,declaredFields[i].get(t));//获取字段值
    		    }
    		    declaredFields[0].setAccessible(true);//设置可获取权限
    		    prepareStatement.setObject(declaredFields.length,declaredFields[0].get(t));
        	    return prepareStatement.executeUpdate()>0;
        	 } catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
        	 return false;
         }
    

    所有删除操作抽象封装代码如下:

     public boolean delete (String[] ids) {
        	 String sql = buildSql(CURD_DELETE) + StringUtils.join(ids,",")+")";
             try {
    			PreparedStatement prepareStatement = con.prepareStatement(sql);
    		     return prepareStatement.executeUpdate()>0;
             } catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
        	 return false;
         }
    

    抽象封装所有的分页查询列表操作代码如下:

     public Page<T> findList(Page<T> page) {
        	 
        	//获取查询语句
        	 String sql = buildSql(CURD_SELECT);
        	 sql += buildSearchSql(page);
        	 sql += " limit " + page.getOffset() + "," + page.getPageSize();
        	 //处理sql语句
        	try {
        		 PreparedStatement prepareStatement = con.prepareStatement(sql);
            	 prepareStatement = setParams(page,prepareStatement);
            	 ResultSet executeQuery = prepareStatement.executeQuery();
            	 List<T> conten = page.getConten();
            	 while(executeQuery.next()) {
            		 T entity = t.newInstance();//newInstance() 是java反射框架中类对象(Class)创建新对象的方法
            	     Field[] declaredFields = t.getDeclaredFields();
            	     for(Field field:declaredFields) {
            	    	  field.setAccessible(true);
            	    	  field.set(entity, executeQuery.getObject(StringUtli.convertToUnderLine(field.getName())));//给实体字段设置值(从数据库出来的)
            	      
            	      }
            	      conten.add(entity);
            	 }
            	 page.setConten(conten);
        	}
        	catch(Exception e) {
        		e.printStackTrace();
        	}
        	
        	 page.setTotal(getTotal(page));
        	 return page;
         }
    

    获取符合条件的所有记录数代码如下:

     public int getTotal(Page<T> page)  {
        	 String sql = buildSql(CURD_COUNT);
        	 sql += buildSearchSql(page);
        	
        	 try {
        		PreparedStatement prepareStatement = con.prepareStatement(sql);
    			prepareStatement = setParams(page,prepareStatement);
    			ResultSet executeQuery = prepareStatement.executeQuery();
    			if(executeQuery.next()) {
    				return executeQuery.getInt("total");
    			}
    			
        	 } catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
        	 return 0;
         }
    

    构造查询sql语句代码如下:

     private String buildSearchSql(Page<T> page) {
        	 
        	 String sql = "";
        	//判断有没有条件查询 进行遍历
        	 List<SearchProperty> searchProperties = page.getSearchProperties();
        	 for(SearchProperty searchProperty:searchProperties ) {
        		 
        		 switch(searchProperty.getOperator()) {
        		 case GT:{
        			 sql += " and "+ StringUtli.convertToUnderLine(searchProperty.getKey()) +" > ?";// 记得加上占位符
        			 break;
        		 }
        		 case GTE:{
        			 sql += " and "+ StringUtli.convertToUnderLine(searchProperty.getKey()) +" >= ?";
        			 break;
        		 }
        		 case EQ:{
        			 sql += " and "+ StringUtli.convertToUnderLine(searchProperty.getKey()) +" = ?";
        			 break;
        		 }
        		 case LT:{
        			 sql += " and "+ StringUtli.convertToUnderLine(searchProperty.getKey()) +" < ?";
        			 break;
        		 }
        		 case LTE:{
        			 sql += " and "+ StringUtli.convertToUnderLine(searchProperty.getKey()) +" <= ?";
        			 break;
        		 }
        		 case LIKE:{
        			 sql += " and "+ StringUtli.convertToUnderLine(searchProperty.getKey()) +" like ?";
        			 break;
        		 }
        		 case NEQ:{
        			 sql += " and "+ StringUtli.convertToUnderLine(searchProperty.getKey()) +" <> ?";
        			 break;
        		 }
        		 case in:{
        			 sql += " and "+ StringUtli.convertToUnderLine(searchProperty.getKey()) +" in  ("+searchProperty.getValue()+")";
        			 break;
        		 }
        	}
        } 
        	 sql = sql.replaceFirst("and", "where");
        	 System.out.println(sql);
        	 return sql;
         }
    

    构造一般查询语句代码如下:

    private String buildSql(int type) {
    		// TODO Auto-generated method stub
    		String sql = "";
    	    switch(type) {
    	    case  CURD_ADD:{
    	    	String sql1 = "insert into " + StringUtli.convertToUnderLine(t.getSimpleName())+"(";//表名:类名
    	    	Field[] declaredFields = t.getDeclaredFields();//getDeclaredFields()返回Class中所有的字段,包括私有字段
    	    	
    	    	//循环输出[反射:Field类--获取类中public类型的属性]
    	    	for(Field fields:declaredFields) {
    	    		sql1 +=StringUtli.convertToUnderLine(fields.getName())+",";
    	    	}
    	    	sql1 = sql1.substring(0, sql1.length()-1) + ")";//截掉一个逗号;
    	    	String sql2 = "values (null,";
    	    	String[] params = new String[declaredFields.length-1];
    	    	Arrays.fill(params, "?");
    	    	sql2 += StringUtils.join(params,",")+")";
    	    	sql = sql1 + sql2;
    	    	
    	    	break;
    	    }
    	    
    	    case  CURD_SELECT:{
    	    	sql = "select * from " + StringUtli.convertToUnderLine(t.getSimpleName());//获取数据表的名称
    	    	break;
    	    }
    	    
    	    case  CURD_COUNT:{
    	    	sql = "select count(*) as total from " + StringUtli.convertToUnderLine(t.getSimpleName());
    	    	break;
    	    }
    	    
    	    case  CURD_UPDATE:{
    	    	sql = "update " + StringUtli.convertToUnderLine(t.getSimpleName()) + " set ";
    	    	Field[] declaredFields = t.getDeclaredFields();
    	    	for (Field field:declaredFields) {
    	    		if(!"id".equals(field.getName())) {
    	    			sql += StringUtli.convertToUnderLine(field.getName()) + "=?,";
    	    		}
    	    	}
    	    	sql = sql.substring(0,sql.length()-1) + "    where id = ? ";
    	    	break;
    	    }
    	    
    	    case  CURD_DELETE:{
    	    	sql = "delete from " + StringUtli.convertToUnderLine(t.getSimpleName()) + " where id in (";
    	    	break;
    	    }
    	    
    	    
    	    default:
    	    	break;
    	    }
    	    System.out.println(sql);
       	    return sql;
    	}
    

    7.总结

    在课程设计期间,我遇到了许许多多的问题,一一去请教同学,也不断查资料去汲取更多的新知识,如防止sql注入,数据库底层封装,数据库的连接失败,session的使用,登陆页面的重定位等等,发现问题并解决问题的过程,使得我探索并解决问题的能力有了一个提高。这整个课程设计过程中,使我对程序编写的整个过程有了一个统筹全局的思想,因为课设的需求分析、程序编写、程序调试、撰写报告这些过程是环环相扣的,下面是一些部分收获:

    1.底层数据库的操作是放在BaseDao中,里面都是对应的增删改查操作,每个实体都有一个对应的Dao,各实体的Dao继承BaseDao,在servlet中负责获取参数,判断数据的合理性和进行跳转,当条件符合的时候则调用对应实体的Dao操作进行增删改查,然接着把结果集传回页面,之后便是在页面进行循环把数据展示出来。但是由于模块信息的问题,需要用到另外一张表的信息的时候,再把对应实体的Dao进行初始化,再调用它的数据库操作来获取数据。

    2.数据库连接,获得Connection是放在构造函数里的,创建一个对象就获取一个Connection,一开始没留意到这个问题,多运行几次,创建的Dao多了,产生很多没有关闭的Connection,没有注意到关闭数据库。

    3.解决了java程序和数据库的中文乱码以及程序中文件读写、网络传输中中文乱码的问题。在基于java的编程中,经常会碰到汉字的处里及显示的问题,比如一大堆乱码或问号。这是因为java中默认的编码方式是UNICODE,而我们通常使用的文件和DB都是基于GB2312或者BIG5等编码,所以会出现这样的问题。通过设置resp.setCharacterEncoDing(“utf-8”)便可以解决解决问题了。

    4.在使用Dbutils 之前,我们Dao层使用的技术是JDBC,JDBC的弊端:
    (1)数据库链接对象、sql语句操作对象,封装结果集对象,这三大对象会重复定义
    (2)封装数据的代码重复,而且操作复杂,代码量大
    (3)释放资源的代码重复
    使用使用Dbutils 之后,封装了JDBC的代码,简化开发人员对dao层的操作。
    框架的作用:能够帮助程序员,提高程序的开发效率。

    5.java程序都是通过JDBC(Java Data Base Connectivity)来访问数据库的。JDBC定义了一系列的接口规范,具体的实现是由各数据库厂商去实现,是一种典型的桥接模式。
    JDBC的工作量大:需要先注册驱动和数据库信息、操作Connection、通过statement对象执行SQL,将结果返回给resultSet,然后从resultSet中读取数据并转换为pojo对象,最后需要关闭数据库相关资源。而且还需要自己对JDBC过程的异常进行捕捉和处理。

    6.在开始使用EasyUI之前,要认清楚一个原则,因为EasyUI是封装的CSS及JS库,所以在修改EasyUI组件的样式和功能时,最好是采用EasyUI封装后的CSS样式和JS方法,而不是自己去写CSS和JS,这样不容易引起冲突,样式统一性也得到了保证。

    展开全文
  • 实用文档PAGE文案大全大连理工大学毕 业 论 文题目学生管理系统系别电子信息工程系专业计算机应用技术班级姓名学号071021121指导教师日期实用文档文案大全目录TOC \o "1-3" \h \z \u 第一章 设计理论 41.1 PHP 程序...
  • 2 2 c++学生成绩管理系统 告书带源代码 精品 +课设报 作者 日期 第一章 需求分析 课程设计性质和目的 ? 输入输出的形式 ? 程序的实现功能? 第二章 程序设计 概要设计 ? 详细设计 ? 调试分析? 使用说明? 测试数据? 第...
  • 学生插入记录,查询,删除,修改,排序,完整版

空空如也

空空如也

1 2 3 4 5 6
收藏数 113
精华内容 45
关键字:

学生管理系统课设报告