JAVA數據庫學生成績管理系統實驗報告_第1頁
JAVA數據庫學生成績管理系統實驗報告_第2頁
JAVA數據庫學生成績管理系統實驗報告_第3頁
JAVA數據庫學生成績管理系統實驗報告_第4頁
JAVA數據庫學生成績管理系統實驗報告_第5頁
已閱讀5頁,還剩26頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實訓報告實訓名稱: 學生成績管理系統 系 (部): 專業班級: 學生姓名: 學 號: 指導教師: 完成日期: 南京鐵道職業技術學院裝訂線目 錄目 錄31 實訓概述32 Java訪問并處理數據庫的課題描述32.1 課題簡介32.2 模塊簡介32.3 數據庫結構設計42.4系統功能層次圖63 系統模塊的詳細設計63.1登錄模塊設計63.2管理員模塊設計63.3學生模塊設計84 程序運行與測試95 實訓總結30Java訪問并處理數據庫的設計與實現1 實訓概述南京鐵道職業技術學院浦口校區2013級網絡L1301班于大二上學期組織了為期一周的Java實訓,本次實訓的課題是“學生成績管理系統”。 通過綜合

2、實訓,掌握運用Java語言基本知識和技能、 JAVA的基本語法與JDBC數據庫技術的應用;進一步熟悉Oracle數據庫的數據庫管理(數據庫的創建、應用)。表的創建、修改、刪除,約束及關系等、數據的查詢處理(insert、update、delete、select語句等技術。2 Java訪問并處理數據庫的課題描述2.1 課題簡介經過分析,我們使用Java開發工具,利用其提供的各種面向對象的開發工具,Java 技術具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應用于個人PC、數據中心、游戲控制臺、科學超級計算機、移動電話和互聯網,同時擁有全球最大的開發者專業社群。使用的數據庫是Orac

3、le,Oracle數據庫功能強大,學習起來也不難,然后,對初始原型系統進行需求迭代,不斷修正和改進,直到形成用戶滿意的可行系統。通過實訓,我們掌握運用Java語言知識和技能,運用JAVA的基本語法與JDBC數據庫技術的應用,完成對甲骨文數據庫的數據庫管理、例如表的設計(表的創建、修改、刪除,字段的默認值、約束及關系等)、數據的查詢處理(insert、update、delete、select語句的應用)等技術;并能結合數據庫應用技術和jdbc進行小型數據庫管理系統的開發。2.2 模塊簡介管理員模塊功能需求:管理員身份登陸系統后,可以對學生信息進行添加、修改和查詢等操作,對學生進行添加、修改和查詢

4、功能操作,還可以修改管理員的登錄密碼。學生模塊功能需求:學生信息管理系統中需要在學生登錄或驗證身份后,,可以自行完成學生個人信息的查詢,也可以進行修改和刪除個人信息、修改學生密碼等操作。2.3 數據庫結構設計數據表設計定義每個表的數據類型以及字段限制,使數據庫達到一定的完整性.每個表的物理設計如下:1.表admin保存用戶的個人信息用戶信息表主要是用來保存管理員用戶的基本信息,包括管理員的ID和管理員的登錄密碼,只有符合這兩個字段的格式要求,才能登錄成功,結構表如下:表4-2管理員信息表字段名 類型空值約束條件管理員ID number(10)not null主鍵登錄密碼varchar2(10)

5、not null2.表student保存學生基本信息,結構表如下:表4-5學生信息表字段名 類型空值約束條件學號number(10)not null主鍵姓名varchar2(20)not null性別varchar2 (3)年齡number(2)登錄密碼varchar2(10)not null邏輯結構是獨立于任何一種數據模型的信息結構。邏輯結構的任務是把概念結構設計階段設計好的基本E-R圖轉化為宜選用的DBMS所支持的數據模型相符合的邏輯結構,并對其進行優化。流程圖層次設計圖的格式如下所示:開始選擇要實現的按鈕1.添加2.查詢3.刪除進入登錄頁面選擇權限(例如管理員)添加按鈕查找按鈕刪除按鈕返

6、回添加一個學生信息,包括ID,姓名,年齡,性別查找數據庫中一個學生信息,包括ID,姓名,年齡,性別刪除一個學生信息,包括他的ID,姓名,年齡,性別結束圖1 管理員對學生信息管理系統局部E-R圖數據流圖是結構化系統分析的主要工具,它表示了系統內部信息的流向,并表現系統的邏輯處理功能。2.4系統功能層次圖學生信息管理系統是一個典型的數據庫開發應用程序,系統是和數據庫相結合.,進入系統,有兩個用戶,分別是普通學生、和管理員。學生信息管理系統登陸管理學生登錄管理員登錄查詢信息增加學生修改密碼查找學生刪除學生修改學生圖2 學生信息管理系統功能層次圖3 系統模塊的詳細設計本學生信息管理系統主要模塊,即用戶

7、登錄模塊、用戶操作模塊。用戶操作模塊又分為學生操作模塊、管理員操作模塊。下面將顯示系統的主要功能模塊。3.1登錄模塊設計 學生信息管理系統前臺登陸模塊可以勾選管理員身份信息,代表以管理員身份進入。不勾選即為普通學生身份登錄。3.2管理員模塊設計學生信息管理系統前臺登陸模塊只有一個登陸窗口分為學生、管理員兩個級別登陸,系統在后臺程序有自動限制設置,可以自動識別登陸者的限制。其系統登陸模塊算法如下:1 判斷是否勾選管理員身份;2 輸入用戶名和密碼;3 判斷用戶名和密碼是否匹配;(1)若提示輸入信息錯誤,則重新輸入;(2)否則以管理員身份進入系統。添加學生信息功能學生信息管理系統對學生信息的管理非常

8、重要,其中對信息的錄入是系統最為關鍵的地方,以往我們管理學生信息的時候都是手工操作,而隨社會不斷發展的今天計算機的應用已全部取帶了手工操作的方法,利用計算機可以方便的錄入各類信息,進行高效的管理.學生信息的錄入就是利用計算機通過程序讀入數據庫,錄入學生信息模塊算法描述如下:1.管理員登陸后,錄入學生信息管理界面;2.單擊增加學生按鈕,鍵入學生ID;3.當錄入學號已經存在,提示該學生信息已存在,請重新輸入;4.否則學生信息添加成功。查找學生信息功能學生信息管理系統對查詢學生信息管理也很重要,方法和增添學生信息類似,也同樣是利用計算機通過程序讀入數據庫,查詢學生信息模塊算法描述如下:1.管理員登陸

9、后,點擊查詢學生;2.當錄入學生信息不存在時,提示沒有該學生信息,重新輸入;3.當錄入學生ID已經存在,提示該學生信息存在,顯示學生信息;刪除學生信息功能學生選課模塊主要是給刪除學生信息的功能,本功能主要由管理員進入數據庫,然后學生管理系統,其刪除學生信息模塊算法描述如下:1管理員成功登陸;2點擊刪除學生;3輸入學生相關信息,如學生ID;4. 如該學生不存在,則提示信息不存在,否則刪除該學生。修改學生信息功能此信息修改模塊主要是給學生和管理員建立信息庫,方便管理員查詢操作,信息修改模塊算法描述如下:1管理員成功登陸;2點擊修改學生信息;3輸入學生的編號;4編號為空,重新輸入;5輸入不為數字,重

10、新輸入;6輸入正確,進入修改頁面進行相關修改。3.3學生模塊設計查看學生個人信息功能學生信息管理系統方便了學生查看自己的學籍信息,如果學校由于疏忽輸入了錯誤信息,自己可以查看并且及時通知學校管理員,及時修改,減少不必要的麻煩.此信息查詢模塊主要是方便學生查詢操作,信息查詢模塊算法描述如下:1 學生成功登陸;2點擊查詢學生信息;3輸入學生的編號;4編號為空,重新輸入;5輸入不為數字,重新輸入;6輸入正確,進入信息查詢頁面進行相關修改。修改學生登錄密碼功能學生可以進入學生管理系統進行登錄密碼的修改1. 學生成功登陸;2單擊修改密碼;3輸入舊密碼、新密碼確認后,若舊密碼正確則修改成功,則提示重新輸入

11、舊密碼;4提交修改完成修改。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 LoginFram

12、e extends JFrameprivate 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(

13、);int width=d.width;int height=d.height;/設置坐標為400-400 寬為300 高為200setBounds(width/2-200, height/2-100, 400, 200);setTitle("登錄界面");/設置窗口為不可縮放setResizable(false);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);init();event();private void event() /為按鈕添加事件處理resetBtn.addMouseListener(new MouseAda

14、pter() /監聽鼠標單擊事件 Overridepublic void mouseClicked(MouseEvent e) System.exit(0););loginBtn.addMouseListener(new MouseAdapter() Overridepublic void mouseClicked(MouseEvent e) /獲取用戶輸入的值String username=nameInput.getText().trim();String password=pwdInput.getText().trim();/判斷是否勾選了管理員多選框if(c.isSelected()/從

15、管理員表中檢測數據 Admin a=adminDao.findAdminByName(username);/如果a不為null說明用戶輸入的管理員是存在的 if(a=null)/說明此管理員不存在JOptionPane.showMessageDialog(null, "用戶名或密碼不正確", "提示信息", JOptionPane.WARNING_MESSAGE);else/管理員存在 /密碼正確/密碼不正確if(a.getPassword().equals(password)/后臺保存的密碼和用戶從客戶端輸入的密碼是一樣的JOptionPane.sho

16、wMessageDialog(null, "登錄成功", "提示信息", JOptionPane.WARNING_MESSAGE);/關閉當前的登錄窗口LoginFrame.this.dispose();/開啟管理員界面new AdminFrame(a.getUsername().go();elseJOptionPane.showMessageDialog(null, "用戶名或密碼不正確", "提示信息", JOptionPane.WARNING_MESSAGE);else/從普通用戶表中檢測數據Student

17、s=studentDao.findStudentByStudentId(username);if(s=null)JOptionPane.showMessageDialog(null, "用戶名或密碼不正確", "提示信息", JOptionPane.WARNING_MESSAGE);elseif(s.getPassword().equals(password)JOptionPane.showMessageDialog(null, "登錄成功", "提示信息", JOptionPane.WARNING_MESSAGE

18、);LoginFrame.this.dispose();new StudentFrame(s,null).go();elseJOptionPane.showMessageDialog(null, "用戶名或密碼不正確", "提示信息", JOptionPane.WARNING_MESSAGE););public void init()/初始化窗口內部的組件Container container=getContentPane();/組件放到哪個位置由用戶自己來制定container.setLayout(null);JLabel title=new JLab

19、el("用 戶 登 錄");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);/設置提示內容nameI

20、nput.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

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

22、ble(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

23、 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, userna

24、me);rs=pstat.executeQuery();/如果查不到任何數據 下方while內部的代碼不會執行 while(rs.next()/如果能執行到這個地方 說明指定管理員是存在的admin=new Admin();admin.setUsername(username);admin.setPassword(rs.getString("password"); catch (Exception e) / TODO: handle exceptione.printStackTrace();finallyConnectionFactory.close(rs, pstat,

25、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;impor

26、t 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 J

27、Frameprivate 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=ad

28、min;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);idInp

29、ut=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(nam

30、eInput);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(&q

31、uot;性別:");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

32、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(t

33、rue);/釋放當前窗口AddStudentFrame.this.dispose(););/取消按鈕的操作cancelBtn.addMouseListener(new MouseAdapter() Overridepublic void mouseClicked(MouseEvent e) if(admin!=null)admin.setEnabled(true);AddStudentFrame.this.dispose(););/確定按鈕的操作submitBtn.addMouseListener(new MouseAdapter() public void mouseClicked(Mous

34、eEvent 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(studen

35、tName);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();elseJOptionPan

36、e.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.MouseEv

37、ent;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

38、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, 200, 390);setResizable(false);init();event()

39、;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);con

40、tainer.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 JBu

41、tton("搜索");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.thi

42、s.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

43、()!=0)studentName=nameStr;List<Student> 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(

44、).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.MouseE

45、vent;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.StudentDa

46、o;public class ShowResultFrame extends JFrame private List<Student> students;private StudentDao studentDao=new StudentDao();public ShowResultFrame(List<Student> students) setTitle("查詢結果");if (students.size() > 0) setBounds(100, 100, 300, 60 * students.size(); else setBounds(

47、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) JLab

48、el 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("刪除&qu

49、ot;);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 ShowResul

50、tFrame(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(Strin

51、g 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.swi

52、ng.JPanel;import javax.swing.JPasswordField;import javax.swing.JTextField;import com.briup.bean.Student;import com.briup.dao.StudentDao;public class StudentFrame extends JFrameprivate 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 Stu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論