JAVA数据库学生成绩管理系统实验报告_第1页
JAVA数据库学生成绩管理系统实验报告_第2页
JAVA数据库学生成绩管理系统实验报告_第3页
JAVA数据库学生成绩管理系统实验报告_第4页
JAVA数据库学生成绩管理系统实验报告_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.实训报告实训名称:学生成绩管理系统系 (部):专业班级 :学生 :学号:指导教师 :完成日期 :.铁道职业技术学院.目录.31.3.2 Java..2. ...1.5. .39.Java 访问并处理数据库的设计与实现实训概述铁道职业技术学院浦口校区2013 级网络 L1301 班于大二上学期组织了为期一周的 Java 实训,本次实训的课题是“学生成绩管理系统”。 通过综合实训,掌握运用 Java 语言基本知识和技能、JAVA 的基本语法与 JDBC数据库技术的应用;进一步熟悉 Oracle 数据库的数据库管理

2、(数据库的创建、 应用)。表的创建、修改、删除,约束及关系等、 数据的查询处理( insert、update 、delete 、select语句等技术。2 Java访问并处理数据库的课题描述2.1课题简介经过分析 , 我们使用 Java 开发工具,利用其提供的各种面向对象的开发工具, Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人 PC、数据中心、游戏控制台、科学超级计算机、移动和互联网,同时拥有全球最大的开发者专业社群。使用的数据库是Oracle ,Oracle 数据库功能强大 ,学习起来也不难, 然后,对初始原型系统进行需求迭代, 不断修正和改进 , 直到形成用

3、户满意的可行系统。通过实训,我们掌握运用Java 语言知识和技能,运用JAVA的基本语法与JDBC数据库技术的应用, 完成对甲骨文数据库的数据库管理、例如表的设计 (表的创建、修改、删除,字段的默认值、 约束及关系等)、数据的查询处理 (insert、update 、delete 、select语句的应用)等技术;并能结合数据库应用技术和jdbc进行小型数据库管理系统的开发。.2.2模块简介管理员模块功能需求:管理员身份登陆系统后,可以对学生信息进行添加、修改和查询等操作, 对学生进行添加、修改和查询功能操作,还可以修改管理员的登录密码。学生模块功能需求:学生信息管理系统中需要在学生登录或验证

4、身份后, ,可以自行完成学生个人信息的查询,也可以进行修改和删除个人信息、修改学生密码等操作。2.3数据库结构设计数据表设计定义每个表的数据类型以及字段限制, 使数据库达到一定的完整性. 每个表的物理设计如下:表 admin 保存用户的个人信息用户信息表主要是用来保存管理员用户的基本信息, 包括管理员的ID 和管理员的登录密码 , 只有符合这两个字段的格式要求, 才能登录成功 , 结构表如下:表 4-2 管理员信息表字段名类型空值约束条件管理员 IDnumber(10)not null主键登录密码varchar2(10)not null表 student 保存学生基本信息 , 结构表如下:表

5、4-5 学生信息表字段名类型空值约束条件.学号number(10)not null主键varchar2(20)not null性别varchar2 (3)年龄number(2)登录密码varchar2(10)not null逻辑结构是独立于任何一种数据模型的信息结构。逻辑结构的任务是把概念结构设计阶段设计好的基本E-R 图转化为宜选用的DBMS所支持的数据模型相符合的逻辑结构,并对其进行优化。流程图层次设计图的格式如下所示:开始.进入登录页面选择权限(例如管理员)选择要实现的按钮1.添加 2.查询 3.删除添加按钮添加一个学生信息,包括ID ,姓名,年龄,性别查找数据库中一个学生信息,查找按钮

6、包括 ID ,姓名,年龄,性别删除按钮删除一个学生信息,包括他的ID ,姓名,年龄,性别返回结束图 1管理员对学生信息管理系统局部E-R 图数据流图是结构化系统分析的主要工具,它表示了系统部信息的流向, 并表现系统的逻辑处理功能。.2.4 系统功能层次图学生信息管理系统是一个典型的数据库开发应用程序,系统是和数据库相结合 ., 进入系统 , 有两个用户 , 分别是普通学生、和管理员。学生信息管理系统登陆管理学管生理登员录登录修查增查删修改询加找除改密信学学学学码息生生生生图 2学生信息管理系统功能层次图系统模块的详细设计本学生信息管理系统主要模块, 即用户登录模块、用户操作模块。用户操作模块又

7、分为学生操作模块、管理员操作模块。下面将显示系统的主要功能模块。3.1 登录模块设计学生信息管理系统前台登陆模块可以勾选管理员身份信息,代表以管理员身份进入。不勾选即为普通学生身份登录。.3.2 管理员模块设计学生信息管理系统前台登陆模块只有一个登陆窗口分为学生、管理员两个级别登陆 , 系统在后台程序有自动限制设置, 可以自动识别登陆者的限制。 其系统登陆模块算法如下:判断是否勾选管理员身份;输入用户名和密码;判断用户名和密码是否匹配;(1)若提示输入信息错误 , 则重新输入;(2)否则以管理员身份进入系统。添加学生信息功能学生信息管理系统对学生信息的管理非常重要, 其中对信息的录入是系统最为

8、关键的地方 , 以往我们管理学生信息的时候都是手工操作, 而随社会不断发展的今天计算机的应用已全部取带了手工操作的方法, 利用计算机可以方便的录入各类信息 , 进行高效的管理 . 学生信息的录入就是利用计算机通过程序读入数据库 , 录入学生信息模块算法描述如下:管理员登陆后,录入学生信息管理界面;单击增加学生按钮,键入学生 ID;当录入学号已经存在 , 提示该学生信息已存在,请重新输入;否则学生信息添加成功。查找学生信息功能学生信息管理系统对查询学生信息管理也很重要, 方法和增添学生信息类似,也同样是利用计算机通过程序读入数据库, 查询学生信息模块算法描述如下:.管理员登陆后,点击查询学生;当

9、录入学生信息不存在时 , 提示没有该学生信息,重新输入;当录入学生 ID 已经存在 , 提示该学生信息存在,显示学生信息;删除学生信息功能学生选课模块主要是给删除学生信息的功能 , 本功能主要由管理员进入数据库 , 然后学生管理系统 , 其删除学生信息模块算法描述如下:1管理员成功登陆;2点击删除学生;3输入学生相关信息,如学生ID;如该学生不存在,则提示信息不存在,否则删除该学生。修改学生信息功能此信息修改模块主要是给学生和管理员建立信息库, 方便管理员查询操作 ,信息修改模块算法描述如下:1管理员成功登陆;2点击修改学生信息;3输入学生的编号;4编号为空 , 重新输入;5输入不为数字 ,

10、重新输入;6输入正确 , 进入修改页面进行相关修改。.3.3 学生模块设计查看学生个人信息功能学生信息管理系统方便了学生查看自己的学籍信息, 如果学校由于疏忽输入了错误信息 , 自己可以查看并且及时通知学校管理员, 及时修改 , 减少不必要的麻烦 .此信息查询模块主要是方便学生查询操作, 信息查询模块算法描述如下:学生成功登陆;2点击查询学生信息;3输入学生的编号;4编号为空 , 重新输入;5输入不为数字 , 重新输入;6输入正确 , 进入信息查询页面进行相关修改。修改学生登录密码功能学生可以进入学生管理系统进行登录密码的修改学生成功登陆;2单击修改密码;3输入旧密码、新密码确认后,若旧密码正

11、确则修改成功,则提示重新输入旧密码;4提交修改完成修改。.程序运行与测试package .briup.view;登录窗口public class LoginFrame extends JFrameprivate JCheckBox c;private JButton loginBtn,resetBtn;private JTextField nameInput;private JPasswordField pwdInput;private AdminDao adminDao=new AdminDao();private StudentDao studentDao=new StudentDao()

12、;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();ev

13、ent();private void event() 为按钮添加事件处理resetBtn.addMouseListener(new MouseAdapter() 监听鼠标单击事件Overridepublic void mouseClicked(MouseEvent e) System.exit(0););loginBtn.addMouseListener(new MouseAdapter() Overridepublic void mouseClicked(MouseEvent e) 获取用户输入的值String username=nameInput.getText().trim();Stri

14、ng 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().equal

15、s(password)后台保存的密码和用户从客户端输入的密码是一样的 JOptionPane.showMessageDialog(null, 登录成功 , 提示信息 , JOptionPane.WARNING_MESSAGE);关闭当前的登录窗口开启管理员界面new AdminFrame(a.getUsername().go();elseJOptionPane.showMessageDialog(null, 用户名或密码不正确 , 提示信息 , JOptionPane.WARNING_MESSAGE);.else从普通用户表中检测数据Students=studentDao.findStuden

16、tByStudentId(username);if(s=null)JOptionPane.showMessageDialog(null, 用户名或密码不正确 , 提示信息 , JOptionPane.WARNING_MESSAGE);elseif(s.getPassword().equals(password)JOptionPane.showMessageDialog(null, 登录成功, 提示信息 , JOptionPane.WARNING_MESSAGE);new StudentFrame(s,null).go();elseJOptionPane.showMessageDialog(nu

17、ll, 用户名或密码不正确 , 提示信息 , 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 J

18、Label(用户名 :);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);pwdInpu

19、t=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(取消 );rese

20、tBtn.setBounds(215, 115, 60, 30);container.add(resetBtn);public void go()setVisible(true);public static void main(String args) new LoginFrame().go();package .briup.dao;和管理员相关的数据库操作.public class AdminDao 根据用户名查找指定管理员public Admin findAdminByName(String username)Admin admin=null;Connection conn=null;Pr

21、eparedStatement pstat=null;ResultSet rs=null;try conn=ConnectionFactory.getConnection();String sql=select username,password from admin whereusername=?;pstat=conn.prepareStatement(sql);pstat.setString(1, username);rs=pstat.executeQuery();/ 如果查不到任何数据下方 while 部的代码不会执行while(rs.next()/ 如果能执行到这个地方说明指定管理员是

22、存在的admin=new Admin();admin.setUsername(username);admin.setPassword(rs.getString(password); catch (Exception e) TODO: handle exception.e.printStackTrace();finallyConnectionFactory.close(rs, pstat, conn); return admin; public static void main(String args) AdminDao().findAdminByName(admi).getPassword()

23、;package .briup.view;.添加学生public class AddStudentFrame extends JFrameprivate 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 St

24、udentDao();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(学籍

25、号 :);.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, 2

26、0);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);gend

27、erLbl=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 JBu

28、tton(取消 );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);释放当前窗口);取消按

29、钮的操作cancelBtn.addMouseListener(new MouseAdapter() Overridepublic void mouseClicked(MouseEvent e) if(admin!=null)admin.setEnabled(true););确定按钮的操作submitBtn.addMouseListener(new MouseAdapter() public void mouseClicked(MouseEvent e) 接受用户在客户端输入的值正则表达式String studentId=idInput.getText().trim();String stude

30、ntName=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);将

31、获得值封装成 Student 对象调用指定方法存储到数据库boolean result=studentDao.addStudent(s);if(result)JOptionPane.showMessageDialog(null, 添加成功! );if(admin!=null)admin.setEnabled(true);elseJOptionPane.showMessageDialog(null, 添加失败 , 请检查学籍号是否已存在! ););public void go()setVisible(true);.public static void main(String args) new

32、AddStudentFrame(null).go();package .briup.view;.;public class FindStudentFrame extends JFrameprivate StudentDao studentDao=new StudentDao();private JLabel idLbl,nameLbl;private JTextField idInput,nameInput;private JButton findBtn,cancelBtn;public FindStudentFrame()setTitle(查找学生 );setBounds(405, 100,

33、 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

34、);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(

35、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) );findBtn.addMouseLi

36、stener(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

37、students=studentDao.findStudentByConditions(studentId, studentName);将查询的结果传递给显示界面new ShowResultFrame(students).go();.public void go()setVisible(true);public static void main(String args) new FindStudentFrame().go();/正则表达式s/package .briup.view;.public class ShowResultFrame extends JFrame private List

38、 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 = getContent

39、Pane();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 mouse

40、Clicked(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) intchoos

41、e=JOptionPane.showConfirmDialog(null, 确定删除 ?);判断用户点击的是否是确定按钮if(choose=JOptionPane.OK_OPTION)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 w

42、indowClosing(WindowEvent e) );public void go() setVisible(true);public static void main(String args) package .briup.view;.public class StudentFrame extends JFrameprivate JPanel p1,p2,p3,p4,p5,p6;private JLabel idLbl,pwdLbl,nameLbl,ageLbl,genderLbl;private JTextField idInput,nameInput,ageInput,gender

43、Input;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;初始

44、化的时候获取当前用户的密码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.setL

45、ayout(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

46、); 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

47、(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(mod

48、ifyPwdBtn);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();p

49、4.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);genderLbl=new JLabel(性别:);genderLbl.setBounds(50, 30, 50, 20);genderInput=new JTextField();genderInput.setText(student.getGender();genderInput.setBounds(100, 30, 120, 20);p5.add(genderLbl);p5.add(genderInput);container.add(p5);p6=new JPanel();p6.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论