




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实训报告实训报告 实训名称 实训名称 学生成绩管理系统学生成绩管理系统 系系 部 部 专业班级专业班级 学生姓名学生姓名 学学 号号 指导教师指导教师 完成日期完成日期 南京铁道职业技术学院南京铁道职业技术学院 课程实训报告书 3 目目 录录 目 录 3 1 实训概述 3 2 Java 访问并处理数据库的课题描述 3 2 1 课题简介 3 2 2 模块简介 3 2 3 数据库结构设计 4 2 4 系统功能层次图 6 3 系统模块的详细设计 6 3 1 登录模块设计 6 3 2 管理员模块设计 6 3 3 学生模块设计 8 4 程序运行与测试 9 5 实训总结 30 装 订 线 课程实训报告书 1 JavaJava 访问并处理数据库的设计与实现访问并处理数据库的设计与实现 1 1 实训概述实训概述 南京铁道职业技术学院浦口校区 2013 级网络 L1301 班于大二上学期组织了 为期一周的 Java 实训 本次实训的课题是 学生成绩管理系统 通过综合实 训 掌握运用 Java 语言基本知识和技能 JAVA 的基本语法与 JDBC 数据库技 术的应用 进一步熟悉 Oracle 数据库的数据库管理 数据库的创建 应用 表的创建 修改 删除 约束及关系等 数据的查询处理 insert update delete select 语句等技术 2 2 JavaJava 访问并处理数据库的课题描述访问并处理数据库的课题描述 2 12 1 课题简介课题简介 经过分析 我们使用 Java 开发工具 利用其提供的各种面向对象的开发工具 Java 技术具有卓越的通用性 高效性 平台移植性和安全性 广泛应用于个人 PC 数据中心 游戏控制台 科学超级计算机 移动电话和互联网 同时拥有 全球最大的开发者专业社群 使用的数据库是 Oracle Oracle 数据库功能强大 学习起来也不难 然后 对初始原型系统进行需求迭代 不断修正和改进 直到形 成用户满意的可行系统 通过实训 我们掌握运用 Java 语言知识和技能 运用 JAVA 的基本语法与 JDBC 数据库技术的应用 完成对甲骨文数据库的数据库管理 例如表的设计 表的创建 修改 删除 字段的默认值 约束及关系等 数据的查询处理 insert update delete select 语句的应用 等技术 并能结合数据库应用技 术和 jdbc 进行小型数据库管理系统的开发 2 22 2 模块简介模块简介 管理员模块功能需求管理员模块功能需求 管理员身份登陆系统后 可以对学生信息进行添加 修改和查询等操作 对 学生进行添加 修改和查询功能操作 还可以修改管理员的登录密码 学生模块功能需求学生模块功能需求 学生信息管理系统中需要在学生登录或验证身份后 可以自行完成学生个 人信息的查询 也可以进行修改和删除个人信息 修改学生密码等操作 2 32 3 数据库结构设计数据库结构设计 数据表设计数据表设计 定义每个表的数据类型以及字段限制 使数据库达到一定的完整性 每个表的 物理设计如下 1 表 admin 保存用户的个人信息 用户信息表主要是用来保存管理员用户的基本信息 包括管理员的 ID 和管 理员的登录密码 只有符合这两个字段的格式要求 才能登录成功 结构表如下 表表 4 2 管理员信息表管理员信息表 字段名 类型空值约束条件 管理员 ID number 10 not null主键 登录密码varchar2 10 not null 2 表 student 保存学生基本信息 结构表如下 表表 4 5 学生信息表学生信息表 字段名 类型空值约束条件 学号number 10 not null主键 姓名varchar2 20 not null 性别varchar2 3 年龄number 2 登录密码varchar2 10 not null 逻辑结构是独立于任何一种数据模型的信息结构 逻辑结构的任务是把概 念结构设计阶段设计好的基本 E R 图转化为宜选用的 DBMS 所支持的数据模型 相符合的逻辑结构 并对其进行优化 流程图层次设计流程图层次设计 图的格式如下所示 进入登录页面 选择权限 例如管理员 添加按钮 查找按钮 删除按钮 返回 添加一个学生信息 包括 ID 姓名 年龄 性别 查找数据库中一个学生信息 包括 ID 姓名 年龄 性别 删除一个学生信息 包括他的 ID 姓名 年龄 性别 结束 图 1 管理员对学生信息管理系统局部 E R 图 数据流图是结构化系统分析的主要工具 它表示了系统内部信息的流向 并 表现系统的逻辑处理功能 开始 选择要实现的按钮 1 添加 2 查询 3 删除 2 42 4 系统功能层次图系统功能层次图 学生信息管理系统是一个典型的数据库开发应用程序 系统是和数据库相 结合 进入系统 有两个用户 分别是普通学生 和管理员 学生信息管理系统 登陆管理 学 生 登 录 管 理 员 登 录 查 询 信 息 增 加 学 生 修 改 密 码 查 找 学 生 删 除 学 生 修 改 学 生 图 2 学生信息管理系统功能层次图 3 系统模块的详细设计 本学生信息管理系统主要模块 即用户登录模块 用户操作模块 用户操作 模块又分为学生操作模块 管理员操作模块 下面将显示系统的主要功能模块 3 1 登录模块设计登录模块设计 学生信息管理系统前台登陆模块可以勾选管理员身份信息 代表以管理员 身份进入 不勾选即为普通学生身份登录 3 2 管理员模块设计管理员模块设计 学生信息管理系统前台登陆模块只有一个登陆窗口分为学生 管理员两个 级别登陆 系统在后台程序有自动限制设置 可以自动识别登陆者的限制 其系统 登陆模块算法如下 1 判断是否勾选管理员身份 2 输入用户名和密码 3 判断用户名和密码是否匹配 1 若提示输入信息错误 则重新输入 2 否则以管理员身份进入系统 添加学生信息功能添加学生信息功能 学生信息管理系统对学生信息的管理非常重要 其中对信息的录入是系统最 为关键的地方 以往我们管理学生信息的时候都是手工操作 而随社会不断发展的 今天计算机的应用已全部取带了手工操作的方法 利用计算机可以方便的录入各 类信息 进行高效的管理 学生信息的录入就是利用计算机通过程序读入数据库 录入学生信息模块算法描述如下 1 管理员登陆后 录入学生信息管理界面 2 单击增加学生按钮 键入学生 ID 3 当录入学号已经存在 提示该学生信息已存在 请重新输入 4 否则学生信息添加成功 查找学生信息功能查找学生信息功能 学生信息管理系统对查询学生信息管理也很重要 方法和增添学生信息类似 也同样是利用计算机通过程序读入数据库 查询学生信息模块算法描述如下 1 管理员登陆后 点击查询学生 2 当录入学生信息不存在时 提示没有该学生信息 重新输入 3 当录入学生 ID 已经存在 提示该学生信息存在 显示学生信息 删除学生信息功能删除学生信息功能 学生选课模块主要是给删除学生信息的功能 本功能主要由管理员进入数据 库 然后学生管理系统 其删除学生信息模块算法描述如下 1 管理员成功登陆 2 点击删除学生 3 输入学生相关信息 如学生 ID 4 如该学生不存在 则提示信息不存在 否则删除该学生 修改学生信息功能修改学生信息功能 此信息修改模块主要是给学生和管理员建立信息库 方便管理员查询操作 信 息修改模块算法描述如下 1 管理员成功登陆 2 点击修改学生信息 3 输入学生的编号 4 编号为空 重新输入 5 输入不为数字 重新输入 6 输入正确 进入修改页面进行相关修改 3 3 学生模块设计学生模块设计 查看学生个人信息功能查看学生个人信息功能 学生信息管理系统方便了学生查看自己的学籍信息 如果学校由于疏忽输入 了错误信息 自己可以查看并且及时通知学校管理员 及时修改 减少不必要的麻 烦 此信息查询模块主要是方便学生查询操作 信息查询模块算法描述如下 1 学生成功登陆 2 点击查询学生信息 3 输入学生的编号 4 编号为空 重新输入 5 输入不为数字 重新输入 6 输入正确 进入信息查询页面进行相关修改 修改学生登录密码功能修改学生登录密码功能 学生可以进入学生管理系统进行登录密码的修改 1 学生成功登陆 2 单击修改密码 3 输入旧密码 新密码确认后 若旧密码正确则修改成功 则提示重新输 入旧密码 4 提交修改完成修改 课程实训报告书 1 4 程序运行与测试 package com briup view import java awt import java awt event MouseAdapter import java awt event MouseEvent import javax swing import com briup bean Admin import com briup bean Student import com briup dao AdminDao 登录窗口 import com briup dao StudentDao public class LoginFrame extends JFrame private JCheckBox c private JButton loginBtn resetBtn private JTextField nameInput private JPasswordField pwdInput private AdminDao adminDao new AdminDao private StudentDao studentDao new StudentDao public LoginFrame 初始化窗口本身 Dimension d Toolkit getDefaultToolkit getScreenSize int width d width int height d height 设置坐标为 400 400 宽为 300 高为 200 setBounds width 2 200 height 2 100 400 200 setTitle 登录界面 设置窗口为不可缩放 setResizable false setDefaultCloseOperation JFrame EXIT ON CLOSE init event private void event 为按钮添加事件处理 resetBtn addMouseListener new MouseAdapter 监听鼠标单击事件 Override public void mouseClicked MouseEvent e System exit 0 loginBtn addMouseListener new MouseAdapter Override public void mouseClicked MouseEvent e 获取用户输入的值 String username nameInput getText trim String password pwdInput getText trim 判断是否勾选了管理员多选框 if c isSelected 从管理员表中检测数据 Admin a adminDao findAdminByName username 如果 a 不为 null 说明用户输入的管理员是存在的 if a null 说明此管理员不存在 JOptionPane showMessageDialog null 用户名或密码不 正确 提示信息 JOptionPane WARNING MESSAGE else 管理员存在 密码正确 密码不正确 if a getPassword equals password 后台保存的密码和用户从客户端输入的密码是一 样的JOptionPane showMessageDialog null 登录成功 提示信息 JOptionPane WARNING MESSAGE 关闭当前的登录窗口 LoginFrame this dispose 开启管理员界面 new AdminFrame a getUsername go else JOptionPane showMessageDialog null 用户名或密 码不正确 提示信息 JOptionPane WARNING MESSAGE else 从普通用户表中检测数据 Student s studentDao findStudentByStudentId username if s null JOptionPane showMessageDialog null 用户名或密码不 正确 提示信息 JOptionPane WARNING MESSAGE else if s getPassword equals password JOptionPane showMessageDialog null 登录成功 提示信息 JOptionPane WARNING MESSAGE LoginFrame this dispose new StudentFrame s null go else JOptionPane showMessageDialog null 用户名或密 码不正确 提示信息 JOptionPane WARNING MESSAGE public void init 初始化窗口内部的组件 Container container getContentPane 组件放到哪个位置由用户自己来制定 container setLayout null JLabel title new JLabel 用 户 登 录 title setFont new Font 楷体 0 32 title setBounds 110 5 200 33 container add title JLabel nameLabel new JLabel 用户名 nameLabel setBounds 70 55 60 30 container add nameLabel nameInput new JTextField nameInput setBounds 130 60 150 20 设置提示内容 nameInput setToolTipText 此处写登录用户名 container add nameInput JLabel pwdLabel new JLabel 密 码 pwdLabel setBounds 70 80 60 30 container add pwdLabel pwdInput new JPasswordField pwdInput setBounds 130 85 150 20 pwdInput setToolTipText 此处写密码 container add pwdInput c new JCheckBox 管理员 c setBounds 68 115 70 30 container add c loginBtn new JButton 登录 loginBtn setBounds 140 115 60 30 container add loginBtn resetBtn new JButton 取消 resetBtn setBounds 215 115 60 30 container add resetBtn public void go setVisible true public static void main String args new LoginFrame go package com briup dao import java sql Connection import java sql PreparedStatement import java sql ResultSet import com briup bean Admin import com briup util ConnectionFactory 和管理员相关的数据库操作 public class AdminDao 根据用户名查找指定管理员 public Admin findAdminByName String username Admin admin null Connection conn null PreparedStatement pstat null ResultSet rs null try conn ConnectionFactory getConnection String sql select username password from admin where username pstat conn prepareStatement sql pstat setString 1 username rs pstat executeQuery 如果查不到任何数据 下方 while 内部的代码不会执行 while rs next 如果能执行到这个地方 说明指定管理员是存在的 admin new Admin admin setUsername username admin setPassword rs getString password catch Exception e TODO handle exception e printStackTrace finally ConnectionFactory close rs pstat conn return admin public static void main String args AdminDao findAdminByName admi getPassword package com briup view import java awt Container import java awt GridLayout import java awt event MouseAdapter import java awt event MouseEvent import java awt event WindowAdapter import java awt event WindowEvent import javax swing JButton import javax swing JFrame import javax swing JLabel import javax swing JOptionPane import javax swing JPanel import javax swing JTextField import com briup bean Student import com briup dao StudentDao 添加学生 public class AddStudentFrame extends JFrame private AdminFrame admin private JPanel p1 p2 p3 p4 p5 private JLabel idLbl nameLbl ageLbl genderLbl private JTextField idInput nameInput ageInput genderInput private JButton submitBtn cancelBtn private StudentDao studentDao new StudentDao public AddStudentFrame AdminFrame admin this admin admin setTitle 添加学生 setResizable false setBounds 400 100 300 400 init event private void init Container container getContentPane container setLayout new GridLayout 5 1 p1 new JPanel p1 setLayout null idLbl new JLabel 学籍号 idLbl setBounds 50 30 50 20 idInput new JTextField idInput setBounds 100 30 120 20 p1 add idLbl p1 add idInput container add p1 p2 new JPanel p2 setLayout null nameLbl new JLabel 姓名 nameLbl setBounds 50 10 50 20 nameInput new JTextField nameInput setBounds 100 10 120 20 p2 add nameLbl p2 add nameInput container add p2 p3 new JPanel p3 setLayout null ageLbl new JLabel 年龄 ageLbl setBounds 50 10 50 20 ageInput new JTextField ageInput setBounds 100 10 120 20 p3 add ageLbl p3 add ageInput container add p3 p4 new JPanel p4 setLayout null genderLbl new JLabel 性别 genderLbl setBounds 50 10 50 20 genderInput new JTextField genderInput setBounds 100 10 120 20 p4 add genderLbl p4 add genderInput container add p4 p5 new JPanel p5 setLayout null submitBtn new JButton 确定 submitBtn setBounds 130 10 60 20 cancelBtn new JButton 取消 cancelBtn setBounds 195 10 60 20 p5 add submitBtn p5 add cancelBtn container add p5 private void event 设置当前窗口的关闭操作 此处可自定义窗口关闭时所作操作 this addWindowListener new WindowAdapter public void windowClosing WindowEvent e 将之前传递过来的那个管理窗口设置为可用 if admin null admin setEnabled true 释放当前窗口 AddStudentFrame this dispose 取消按钮的操作 cancelBtn addMouseListener new MouseAdapter Override public void mouseClicked MouseEvent e if admin null admin setEnabled true AddStudentFrame this dispose 确定按钮的操作 submitBtn addMouseListener new MouseAdapter public void mouseClicked MouseEvent e 接受用户在客户端输入的值 正则表达式 String studentId idInput getText trim String studentName nameInput getText trim String age ageInput getText trim String gender genderInput getText trim Student s new Student 注意别输入了已存在的学籍号 s setStudentid Long parseLong studentId s setStudentName studentName s setPassword studentId s setAge Integer parseInt age s setGender gender 将获得值封装成 Student 对象调用指定方法存储到数据库 boolean result studentDao addStudent s if result JOptionPane showMessageDialog null 添加成功 if admin null admin setEnabled true AddStudentFrame this dispose else JOptionPane showMessageDialog null 添加失败 请检查学籍 号是否已存在 public void go setVisible true public static void main String args new AddStudentFrame null go package com briup view import java awt Container import java awt GridLayout import java awt event MouseAdapter import java awt event MouseEvent import java awt event WindowAdapter import java awt event WindowEvent import java util List import javax swing JButton import javax swing JFrame import javax swing JLabel import javax swing JPanel import javax swing JTextField import com briup bean Student import com briup dao StudentDao public class FindStudentFrame extends JFrame private StudentDao studentDao new StudentDao private JLabel idLbl nameLbl private JTextField idInput nameInput private JButton findBtn cancelBtn public FindStudentFrame setTitle 查找学生 setBounds 405 100 200 390 setResizable false init event private void init Container container getContentPane container setLayout new GridLayout 3 1 JPanel p1 new JPanel p1 setLayout null idLbl new JLabel 学籍号 idLbl setBounds 20 55 50 20 idInput new JTextField idInput setBounds 73 55 100 20 p1 add idLbl p1 add idInput container add p1 JPanel p2 new JPanel p2 setLayout null nameLbl new JLabel 姓名 nameLbl setBounds 20 55 50 20 nameInput new JTextField nameInput setBounds 73 55 100 20 p2 add nameLbl p2 add nameInput container add p2 JPanel p3 new JPanel p3 setLayout null findBtn new JButton 搜索 findBtn setBounds 60 30 60 20 cancelBtn new JButton 取消 cancelBtn setBounds 123 30 60 20 p3 add findBtn p3 add cancelBtn container add p3 private void event this addWindowListener new WindowAdapter public void windowClosing WindowEvent e FindStudentFrame this dispose findBtn addMouseListener new MouseAdapter public void mouseClicked MouseEvent e String idStr idInput getText trim String nameStr nameInput getText trim Long studentId null String studentName null if idStr length 0 如果 id 有值 studentId Long parseLong idStr if nameStr length 0 studentName nameStr List students studentDao findStudentByConditions studentId studentName 将查询的结果传递给显示界面 new ShowResultFrame students go public void go setVisible true public static void main String args new FindStudentFrame go System out println trim length 正则表达式 s System out println System out println 1 2 replaceAll s length package com briup view import java awt Color import java awt Container import java awt GridLayout import java awt event MouseAdapter import java awt event MouseEvent import java awt event WindowAdapter import java awt event WindowEvent import java util List import javax swing BorderFactory import javax swing JButton import javax swing JFrame import javax swing JLabel import javax swing JOptionPane import com briup bean Student import com briup dao StudentDao public class ShowResultFrame extends JFrame private List students private StudentDao studentDao new StudentDao public ShowResultFrame List students setTitle 查询结果 if students size 0 setBounds 100 100 300 60 students size else setBounds 100 100 300 150 this students students init private void init Container container getContentPane container setLayout new GridLayout students size 2 遍历集合 将集合中的每一条数据显示到当前容器里面 if students size 0 container add new JLabel 暂无记录 else for Student stu students JLabel l new JLabel stu getStudentName final Student s stu l addMouseListener new MouseAdapter public void mouseClicked MouseEvent e if e getClickCount 2 new StudentFrame s null go l setBorder BorderFactory createLineBorder new Color 253 253 187 JButton b new JButton 删除 final Long studentId stu getStudentid b addMouseListener new MouseAdapter public void mouseClicked MouseEvent e int choose JOptionPane showConfirmDialog null 确定删除 判断用户点击的是否是确定按钮 if choose JOptionPane OK OPTION ShowResultFrame this dispose students remove s new ShowResultFrame students go studentDao deleteStudentById studentId container add l container add b private void event this addWindowListener new WindowAdapter public void windowClosing WindowEvent e ShowResultFrame this dispose public void go setVisible true public static void main String args package com briup view import java awt Color import java awt Container import java awt GridLayout import java awt event MouseAdapter import java awt event MouseEvent import javax swing JButton import javax swing JFrame import javax swing JLabel import javax swing JOptionPane import javax swing JPanel import javax swing JPasswordField import javax swing JTextField import com briup bean Student import com briup dao StudentDao public class StudentFrame extends JFrame private JPanel p1 p2 p3 p4 p5 p6 private JLabel idLbl pwdLbl nameLbl ageLbl genderLbl private JTextField idInput nameInput ageInput genderInput private JPasswordField pwdInput private Student student private JButton modifyPwdBtn submitBtn exitBtn private String nPassword private StudentDao dao new StudentDao student 记录当前登录的用户 nPassword 记录修改以后的密码 public StudentFrame Student s String nPassword this student s this nPassword nPassword 初始化的时候获取当前用户的密码 setTitle 学生信息 setResizable false setBounds 400 100 300 400 默认关闭行为 setDefaultCloseOperation JFrame EXIT ON CLOSE init event public void go setVisible true private void init Container container getContentPane container setLayout new GridLayout 6 1 p1 new JPanel p1 setLayout null idLbl new JLabel 学籍号 idLbl setBounds 50 30 50 20 idInput new JTextField 需要将数字类型转换为字符串类型 字符串类型 数字类型 parseInt parseLong idInput setText student getStudentid 设置学籍号不可修改 idInput setEnabled false idInput setEditable false idInput setDisabledTextColor new Color 255 255 255 idInput setDisabledTextColor Color black idInput setBounds 100 30 120 20 p1 add idLbl p1 add idInput container add p1 p2 new JPanel p2 setLayout null pwdLbl new JLabel 密 码 pwdLbl setBounds 50 30 50 20 pwdInput new JPasswordField if nPassword null 代表从登录界面过来的 pwdInput setText student getPassword else 如果有新密码 说明是从修改密码那个窗口跳回来的 pwdInput setText nPassword pwdInput setEditable false pwdInput setDisabledTextColor Color black pwdInput setBounds 100 30 120 20 modifyPwdBtn new JButton 修改 modifyPwdBtn setBounds 225 30 60 20 p2 add pwdLbl p2 add pwdInput p2 add modifyPwdBtn container add p2 p3 new JPanel p3 setLayout null nameLbl new JLabel 姓 名 nameLbl setBounds 50 30 50 20 nameInput new JTextField nameInput setText student getStudentName nameInput setBounds 100 30 120 20 p3 add nameLbl p3 add nameInput container add p3 p4 new JPanel p4 setLayout null ageLbl new JLabel 年 龄 ageLbl setBounds 50 30 50 20 ageInput new JTextField ageInput setText student getAge ageInput setBounds 100 30 120 20 p4 add ageLbl p4 add ageInput container add p4 p5 new JPanel p5 setLayout null
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社交计算中的伦理与道德问题研究-洞察及研究
- 化肥厂员工辞退办法
- 河南省驻马店市第二初级中学2024-2025学年九年级上学期1月期末历史试题(含答案)
- 社交电商与传统电商的深度融合研究-洞察及研究
- 2024-2025学年新疆喀什地区人教版四年级上册期中阶段测试数学试卷(含答案)
- 线缆厂请假审批记录细则
- 手势舞课件高难度动作
- 自动化方案规划工程师3篇
- 注册安全工程师考试真题及答案
- 中国银行网申试题及答案
- 2024-2025学年七年级语文上册第一单元测试卷(统编版2024新教材)
- 5《大学之道》《人皆有不忍人之心》理解性默写(含答案) 统编版高中语文选择性必修上册
- 先进制造技术 课件 第一章 先进制造技术概论
- GB/T 1503-2024铸钢轧辊
- FZ∕T 71006-2021 山羊绒针织绒线
- 幼儿园社会教育专题-考核测试题四(第七、八章)-国开(ZJ)-参考资料
- 明确目标方向自律成就梦想
- 《有毒动植物中毒》课件
- 《智能建造导论》 课件 刘占省 第6-12章 智能规划与数字设计-中国智能建造之路
- 《PS基础教程》课件
- 大学生励志演讲稿大全14篇
评论
0/150
提交评论