MySql数据库课程设计(学生管理系统)


    
    XX学
    数库课程设计报告

    系 院 应科学学院
    年 级 2013级
    专 业 信息计算科学
    学 号
    学 生 姓 名 XXXXXX
    指导教师姓名 XXXXXX
    课程设计(文)题目 XX学学生理系统









    目 录
    第章 绪 1
    11 研究背景意义 1
    111 选题背景 1
    112 研究意义 1
    12 系统目标 2
    13 应技术 2
    131 Servlet技术 2
    132 JSP技术 3
    133 JDBC 3
    134 MySQL 3
    135 myEclipse 3
    136 Tomcat 4
    137 JSTL标签 4
    138 XML 4

    第二章 需求分析 5
    21 功需求 5
    211 系统模块分解 5
    212 功需求描述 5
    22 非功需求 8
    221 性需求 8
    222 需求 8
    第三章 总体设计 10
    31 运行环境 10
    32 模块结构 11
    第四章 数库设计 12
    41 概念结构设计 12
    411 设计思路 12
    412 ER图 12
    42 逻辑结构设计 15
    421 设计思路 15
    43 物理结构设计 15
    431 存取方式 15
    432 存储结构 15
    第五章 界面设计 18
    51 界面关系图 18
    52 界面设计成果 19
    521 登录界面 19
    522 功菜单界面 20
    第六章 详细设计 25
    61 登录注册设计 27
    611 算法描述 27
    612 程序流程图 27
    6 13 关键类说明 28
    62 户理设计 28
    621 程序流程图 28
    622 关键类说明 29
    第七章 编码 30
    71 部分核心代码 30
    711 JDBC连接JAVA web数库 30
    712 登录注册页面理 34
    72 代码优化开发需知事项 40
    第七章 总结 41

    参考文献 42


    第章 绪
    11 研究背景意义
    111 选题背景
    着教育事业断发展学校规模断扩学生数量信息量急剧增加关学生种信息处理展开学生理信息系统应运生理学生信息提高系统理工作效率学生信息理系统Visual Basic(前台开发)MYSQL(台理)机结合运流行ADO等相关技术完成学生信息规范理科学统计快速查询减少该理工作量
    数库信息理系统中占非常重位数库结构设计坏直接应系统效率实现效果产生影响合理数库结构设计提高数库存储效率保证数完整性致性时合理数结构利程序利实现
    112 研究意义
    学生学籍理系统学校等机构学生信息理查询更新维护方便易性强图形界面清晰明该软件java语言编写SQLServer2012数库作台数库进行信息存储SQL语句完成添加查询修改删操作JDBC驱动实现前台Java台SQL数库连接Java语言跨台性强Windows等系统方便简单安全性


    12 系统目标
    该系统建立基BS模式实验室信息理系统户理员需载客户端通浏览器访问学生理系统快捷方便网页获取前学生信息时更新信息修改信息保证信息正确性时效性更更快捷更便利理学生信息实现学生信息直观视化时化系统针系统相关两类户实现信息理:
    1实验室理员:登陆理员页面方便进行学籍信息理班级信息理成绩信息理户理系统理
    2教师:教师进行注册成网站户通登录进入普通户界面学籍信息理班级信息理成绩信息理系统理法查修改户信息
    13 应技术
    131 Servlet技术
    Servlet服务器端Java应程序具独立台协议特性生成动态Web页面 担客户请求服务器响应中间层 Servlet位Web 服务器部服务器端Java应程序传统命令行启动Java应程序ServletWeb服务器进行加载该Web服务器必须包含支持ServletJava虚拟机
    早支持Servlet技术JavaSoftJava Web Server基JavaWeb服务器开始支持标准Servlet APIServlet功交互式浏览修改数生成动态Web容执行程:客户端发送请求服务器端服务器请求信息发送ServletServlet生成响应结果传服务器响应容动态生成通常取决客户端请求服务器响应返回客户端Servlet起s通常Java程序差Servlet导入特定属Java Servlet API程序包象字节码动态网络加载说ServletServerAppletClient样Servlet运行Server中需图形户界面角度说Servlet称Faceless ObjectServletJava编程语言中类扩展服务器性服务器驻留着通请求响应编程模型访问应程序Servlet类型请求产生响应通常扩展Web服务器应程序
    132 JSP技术
    Java Server Pages 技术项纯Java台技术产生动态网页容传统网页HTML文件中加入Java程序片段JSP标记构成JSP网页Web服务器接收访问JSP网页请求时首先执行中程序片段然执行结果HTML格式返回客户JSP基Java Servlet整Java体系Web开发技术利技术建立先进安全快速跨台动态网页
    133 JDBC
    JDBC组Java语言编写类接口组成嵌式SQL实现三方面功:建立数库连接执行SQL声明处理SQL执行结果JDBC支持基SQL功方便关系型数库建立连接进行相关操作需DBMS分编写程序
    134 MySQL
    MySQL户线程SQL数库客户机服务器结构应服务器守护程序mysqld客户程序库组成MySQL快速灵活性足满足网站信息理工作 许证灵活目免费修改分发 PostgreSQL私商学术研究命令执行速度快许现快简单效户特权系统
    135 myeclipse
    Eclipse非常优秀集成开发环境旨简化操作系统软件工具开发程理种开发务中包括测试性调整程序调试等集成供应商第三方应程序开发工具通集成量插件 myeclipse功断扩展支持种应
    myeclipse台成熟精心设计扩展体系结构组成结构图示myeclipse开发插件适应台需 具良扩展性灵活性
    myeclipse开放源代码基 Java 扩展开发台身言框架组服务通插件组件构建开发环境幸运myeclipse 附带标准插件集包括 Java 开发工具(Java Development ToolsJDT)
    136 Tomcat
    Tomcat服务器Apache Group Jakarta组开发免费服务器软件适合嵌入Apache中源代码免费获进行扩充Tomcat服务器兼容性WebLogic服务器采Web服务器引擎Jbuilder作标准测试服务器Sun公司作JSP技术应示例服务器Tomcat服务器众软件公司支持服务器性稳定发展前景次开发Tomcat7x
    137 JSTL标签
    JSTLapacheEL表达式扩展(说JSTL赖EL)JSTL标签语言JSTL标签非常方便JSP动作标签样JSP置标签需导包指定标签库已
    果MyEclipse开发JavaWeb项目发布Tomcat时会发现MyEclipse会lib目录存放jstlJar包果没MyEclipse开发需导入JSTLJar包:jstl12jar
    1378 XML
    XML扩展标识语言(eXtensibleMarkupLanguage)先驱SGMLHTMLSGML通标识语言标准(StandardGeneralizedMarkupLanguage)国际定义电子文件结构容描述标准种非常复杂文档结构量高度结构化数防卫区种工业领域便分类索引XML相SGML定义功强然适Web数描述价格非常昂贵



    第二章 需求分析
    21 功需求
    211 系统模块分解
    学生信息理系统总体功模块构成:
    学籍信息理班级信息理成绩信息理户理系统理
    图示:

    图 2 1系统功模块分解图
    212 功需求描述
    1) 学籍信息理模块
    描述:户注册成功合法账号密码登陆理系统页面页面公告栏中理员时发布公告提醒户需注意信息学生信息变动理员需时常改动学生信息通系统实现学生学号姓名性班级出生日期等添加查修改删
    ‚例图:

    图 2 – 2学生理子系统例图

    2) 班级选课信息理模块
    描述:班级信息理包括班号年纪班教室添加查修改删老师调动职期更改等原班级班时发生更改需时修改保证信息准确性户通查信息清楚明指导该学校班级详细准确班级信息
    ‚例图:
    班级信息
    添加班级信息
    删班级信息
    查班级信息
    修改班级信息
    添加班级信息

    删班级信息
    查班级信息

    修改班级信息

    理员
    理员

    图 2 – 3学生理子系统例图


    3) 成绩信息
    描述:包括学生考姓名学号班级课程名称获成绩理员完成学生信息统计成绩登记时信息进行删添加查修改操作确保成绩信息真实性
    ‚例图:
    实验选课信息
    添加学生成绩
    删学生信息
    查成绩信息
    修改学生信息
    添加学生成绩
    删学生信息
    查学生信息
    修改学生信息
    理员
    理员


    图 2 – 3学生理子系统例图

    4) 户理模块
    描述:实际程中户会较长时间没系统忘记信息找理员进行户信息查次通理员直接添加户前台页面操作权限进行信息修改注销
    ‚例图:

    图 2 4 户理子系统例图
    图 2 5 实验室理员理子系统例图
    22 非功需求
    221 性需求
    1) 发户数:15(数库时访问数限制导致)
    2) 时线数100
    3) 访问高峰时期时线数:300
    4) 访问高峰时期时提交事务数:30
    5) 高峰时期系统响应时间:10s
    注:信息开发员估计具体情况具体
    222 需求
    精度
    户名求长度超320字符
    密码长度求320字符
    日期:精确某年某月某日
    软件需求
    1Windows XP操作系统
    2SQL数库
    3MyEclipse90 开发工具
    4Tomcat 7X 服务器
    5SQLyogTunnelphp MySql辅助工具
    硬件需求
    1Web服务器1台
    2数库服务器1台
    3备份服务器1台
    4开发服务器1台
    5硬件防火墙1台
    6软件防火墙服务器1台
    7千兆路器1台
    810M网络宽带1条
    第三章 总体设计
    31 运行环境
    1) 设备
    客户程序硬件求:具Pentium II处理器满足求计算机:低512M存20GB硬盘鼠标键盘
    WEB服务器硬件求:具Pentium IV处理器满足求计算机:低512MB存80GB硬盘鼠标键盘
    2) 支持软件
    客户程序软件:
    Windows982000XP更高版
    IE60 者更高版Firefox等浏览器
    网络支持
    WEB服务器软件:Tomcat 70
    Windows982000XP更高版
    数库服务器软件
    Windows982000XP更高版
    数库:XML










    32 模块结构
    1) 节理员户角度出发列出系统提供功系统功模块表示:
    表 31系统功模块列表
    序号
    功模块名称
    子功模块名称
    备注
    1
    首页



    11 注册



    12 登录


    2
    理员模块



    21 学生学籍信息




    211 添加学籍信息



    212 修改学籍信息



    213 查学籍信息



    214 删学籍信息


    22 班级信息理




    221 添加班级信息



    222 修改班级信息



    223 查班级信息



    224 删班级信息


    23成绩信息理




    231 成绩信息添加



    232 成绩信息修改



    233 成绩信息查



    234 成绩信息删


    24户理




    241 添加户



    242 修改户信息



    243 查户信息



    244 删户信息


    25系统理




    251 修改登陆密码



    252 功开发

    3
    户模块



    35 查信息



    36 修改登陆密码



    第四章 数库设计
    41 概念结构设计
    411 设计思路
    概念模型数库系统核心基础概念设计阶段务目标根需求分析结果找出数实体画出应ER图较复杂系统通常首先根户数权限画出应局部ER图然局部ER综合起形成系统整体ER图针系统说根实际业务首先抽象学生学籍信息班级信息理成绩理户等4实体根业务需求分析出实体拥属性设计出系统概念模型
    412 ER图
    理员
    实验科目
    实验成绩
    实验选课信息实验科目
    理员
    学籍
    成绩
    班级




    图 4 2 1系统页面ER图

    理员
    实验科目
    实验成绩
    实验选课信息实验科目
    学籍信息
    增加学籍信息
    修改学籍信息
    查学籍信息
    删学籍信息


    图 4 2 –2实验科目模块ER图


    理员
    实验科目
    实验成绩
    实验选课信息实验科目
    班级信息信息
    增加班级信息
    修改班级信息
    查班级信息
    删班级信息

    图 4 2 –2选课信息理ER图





    理员
    实验科目
    实验成绩
    实验选课信息实验科目
    户信息
    户账号密码查
    户账号密码增加
    户账号密码修改
    删户信息




    图 4 2 –3户信息理ER图
    户名
    密码
    注册
    登陆
    系统页面
    学籍信息理
    班级信息理
    成绩理
    户理


    图 4 24系统页面理ER图






    42 逻辑结构设计
    421 设计思路
    逻辑设计阶段务目标根概念设计结果设计出数库逻辑结构模式包括全局模式外模式系统说理员系统时必须先成功注册然注册张号密码进行登陆操作进入系统页面系统包括学籍信息理班级信息理成绩信息理户理系统理五模块普通户具户理模块实验室科目模块中包含学号姓名性班级出生日期入学日期六模块班级信息包含班号年纪班姓名教室四模块成绩信息模块包含考班级学生名字学号课程成绩六模块户理包含户名密码性三模块理员通系统模块模块进行增改删查等操作


    43 物理结构设计
    431 存取方式
    数库结构物理设计指定逻辑数模型选取适合应环境物理结构程设计表结构系统数库设计中实体应表实体属性应表列实体间关系成表约束基逻辑设计中实体转换成物理设计中表系统通关系表形式存取数
    432 存储结构




    表 41系统数库组成表
    数库名:userdemo
    序号
    表名
    标签说明
    功说明
    1
    user
    表 普通户
    存储户相关信息
    2
    student
    表 学生学籍信息
    存储学生学籍信息
    3
    Cla
    表 班级信息
    班级信息
    4
    grade
    表 学生成绩信息
    存储学生成绩信息信息



    表 42户信息表
    表名:user
    序号
    列名
    数类型
    长度
    数位
    标识

    允许空
    默认值
    说明
    1
    username
    varchar
    255






    2
    password
    varchar
    255






    3
    sex
    varchar
    255









    表 44学生学籍信息
    表名:student
    序号
    列名
    数类型
    长度
    数位
    标识

    允许空
    默认值
    说明
    1
    Stunum
    varchar
    255






    2
    stuname
    varchar
    255






    3
    stusex
    varchar
    255






    4
    stucla
    varchar
    255






    5
    stubirth
    varchar
    255






    6
    stutosch
    varchar
    255








    表 45b班级信息表
    表名:cla
    序号
    列名
    数类型
    长度
    数位
    标识

    允许空
    默认值
    说明
    1
    clanum
    varchar
    255






    2
    clagra
    varchar
    255






    3
    clatea
    varchar
    255






    4
    claroom
    varchar
    255









    表 46成绩信息表
    表名:grade
    序号
    列名
    数类型
    长度
    数位
    标识

    允许空
    默认值
    说明
    1
    gradnum
    varchar
    255






    2
    gradcla
    varchar
    255






    3
    gradxue
    varchar
    255






    4
    gtadname
    varchar
    255






    5
    gradproj
    varchar
    255






    6
    grade
    varchar
    255






















    第五章 界面设计
    51 界面关系图
    注册页面
    登陆页面
    系统页面
    学生信息理页面
    添加信息页面
    查信息页面

    修改学籍页面


    图 5 1界面关系图

    注:页面班级信息理成绩理户理流程图面类似








    52 界面设计成果
    521 登录界面


    图51登录界面

    图52注册界面


    图53理员登录界面



    图53普通户登录界面

    522 功菜单界面

    图54学生信息理页面

    图55查学籍页面

    图56添加学生学籍信息页面



    图57修改学生学籍户


    图57删户


    图57班级信息


    图58查修改删班级信息


    图59添加班级信息


    图510修改班级信息


    图511学生成绩信息理

    图512查删修改修改成绩信息


    图513户信息理页面(理员权限)

    图514查删页面(理员权限)


    图514添加户信息(理员权限)



    图515修改户信息(理员权限)


    图516工具展示myEclipse

    图517工具展示mySql


    第六章 详细设计
    61 登录注册设计
    611 算法描述
    户输入户名密码选中户种类数提交服务器先检查户类型根户类型读取出户名数库中数进行核查数库中否存该户名果存核输入密码否正确户名密码正确时完成验证跳转成功页面果户名正确必核密码直接提示输入信息误需重新输入户名密码注册时户填写完信息提交服务器服务器先读取户名数库中数进行核果该户名存提示户该户已存
    612 程序流程图

    图 6 1登录注册程序流程图


    6 13 关键类说明
    DB:负责数库连接类包含连接创建数库关闭创建预处理象结果集象
    User:户实体类JavaBean囊括户属性getsetter方法
    UserDAO:DAO层处理数实现接口类定义读者业务操作方法
    UserService:service层户相关业务方法类该类中户登录验证方法public boolean check(String username String password)方法实现户名密码验证通方法public boolean save(String username String password)实现户注册
    Regist:负责注册处理跳转Servlet类该类doGet()方法中调UserService类中save()方法户提交信息提交服务器完成注册根save()返回值跳转相应页面
    Login:负责登录处理跳转Servlet类该类doGet()方法中调UserService类中方法进行户名密码验证根验证结果跳转相应页面
    62 户理设计
    621 程序流程图

    图 6 2户理流程图
    622 关键类说明
    User:教师实体类JavaBean囊括读者属性getsetter方法
    UserDAO:DAO层处理数实现接口类定义读者业务操作方法
    UserService:service层读者相关业务方法类包括public boolean save(String username String password)方法进行注册添加户操作 public boolean delete(int userId)方法完成户删完成户注销 public boolean update(int userId String username String password)方法完成户信息更新通public User findById(int userId)方法根户Id查户信息 通public User findByName(String name)方法根户名进行查询户信息通public ArrayList findAll()取出数库中读者信息
    AddUser:负责户添加跳转Servlet类该类doGet()方法中调UserService类中save()方法户提交数通处理提交数库中完成户添加根save()返回值跳转相应页面
    UpdateUser:负责户信息更新跳转Servlet类该类doGet()方法中调UserService类中update()方法户提交数通处理提交数库中完成户更新根update()返回值跳转相应页面
    DeleteUser:负责户注销跳转Servlet类该类doGet()方法中调UserService类中delete()方法户提交数通处理提交数库中完成读者注销根delete()返回值确定否删成功跳转相应页面
    注:模块设计思路述思路方法相似予说明








    第七章 编码
    71 部分核心代码
    711 JDBC连接JAVA web工程数库
    1) 连接数库
    public static Connection getConnection() throws Exception{
    Properties pronew Properties()
    InputStream inStream UserUtilsclassgetResourceAsStream(jdbcproperties)
    proload(inStream)
    ClassforName(progetProperty(driverClassName))
    Connection con DriverManagergetConnection(progetProperty(url) progetProperty(username) progetProperty(password))
    return con
    }
    2) 连接数库实现数层增删改查

    **增删改查 crud
    * @author Administrator
    * DOM4J 解析 xml
    * ①导包
    * ② jdbc 数程序存入数库 者 数库读取程序
    *
    public class UserDAO {
    public void addUser(User u) throws Exception{
    Connection con UserUtilsgetConnection()
    String sqlinsert into user (usernamepasswordsex)values()
    PreparedStatement p conprepareStatement(sql)
    psetString(1 ugetUsername())
    psetString(2 ugetPassword())
    psetString(3 ugetSex())
    pexecuteUpdate()
    pclose()
    conclose()
    }
    删户
    public void deleteUser(User u) throws Exception{
    Connection con UserUtilsgetConnection()
    String sqldelete from user where username
    PreparedStatement p conprepareStatement(sql)
    psetString(1 ugetUsername())
    pexecuteUpdate()
    pclose()
    conclose()

    }
    修改属性
    public void alterUser(User olduUser newu) throws Exception{
    Connection con UserUtilsgetConnection()
    String sqlupdate user set username password sex where username
    PreparedStatement p conprepareStatement(sql)
    psetString(1 newugetUsername())
    psetString(2 newugetPassword())
    psetString(3 newugetSex())
    psetString(4 oldugetUsername())
    pexecuteUpdate()
    pclose()
    conclose()
    }
    查找 通户名查找
    public User findByUsername(String username) throws Exception{
    Connection con UserUtilsgetConnection()
    String sqlselect * from user where username
    PreparedStatement p conprepareStatement(sql)
    psetString(1username)
    ResultSet rs pexecuteQuery()
    User unull
    if(rsnext()){
    unew User(rsgetString(username) rsgetString(password) rsgetString(sex))
    }
    rsclose()
    pclose()
    conclose()
    return u
    }

    通性查找户
    public List findBySex(String sex) throws Exception{
    Connection con UserUtilsgetConnection()
    String sqlselect * from user where sex
    PreparedStatement p conprepareStatement(sql)
    psetString(1sex)
    ResultSet rs pexecuteQuery()
    List uListnew ArrayList()
    while(rsnext()){
    uListadd(new User(rsgetString(username) rsgetString(password) rsgetString(sex)))
    }
    rsclose()
    pclose()
    conclose()
    return uList
    }
    查找全部户

    public List findALL() throws Exception{
    Connection con UserUtilsgetConnection()
    String sqlselect * from user
    PreparedStatement p conprepareStatement(sql)
    ResultSet rs pexecuteQuery()
    List uListnew ArrayList()
    while(rsnext()){
    uListadd(new User(rsgetString(username) rsgetString(password) rsgetString(sex)))
    }
    rsclose()
    pclose()
    conclose()
    return uList
    }
    }
    712 登陆注册
    1)登陆静态页面实现代码
    <@ page languagejava importjavautil* pageEncodingUTF8>
    <@ taglib prefixc urihttpjavasuncomjspjstlcore >