Java課程設計學生信息管理系統】(基于java的學生信息管理系統課程設計)

      網友投稿 1195 2022-05-30

      @TOC

      一、問題描述

      如何實現一個功能簡單的學生信息管理系統,能夠對學生信息(包括照片)進行添加、刪除、修改和查詢等操作。

      二、基本要求

      實現一個功能簡單的學生信息管理系統,該系統具有按照賬戶名密碼登錄功能,登錄后,可以添加,刪除,修改、查詢(顯示學生相片)學生信息,添加學生信息時,要求能添加學生的相片信息(實現相片文件的上傳和下載功能)。

      三、需求分析

      程序設計的任務是實現對學生信息的管理。用戶名和密碼都默認設置為0,用戶名或密碼輸入錯誤會彈出“用戶名或密碼輸入不正確”的對話框。在用戶名和密碼輸入正確后進入學生信息管理系統,然后進行添加、修改、刪除等操作。在添加操作里面可以上傳和下載照片,這是File類型的。輸入的其他學號、姓名、性別、電話、QQ和專業都是String類型,輸出的也是String類型。點擊確認后會彈出“添加成功”。

      四、概要設計

      1、類之間的調用關系

      2、學生信息模塊

      3、系統管理模塊

      4、詳細設計

      ①主程序LoginGUI的代碼

      主要實現了系統的登錄窗口和登錄之后進入的信息管理窗口,還有增刪改查功能。

      package 學生信息管理系統; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Box; import javax.swing.ButtonGroup; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JRadioButton; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; public class LoginGUI{ private JFrame jf; //水平box private Box center=Box.createVerticalBox(); //學號的JPanel private JPanel idPanel=new JPanel(); //密碼的JPanel private JPanel passwordPanel=new JPanel(); private JLabel lUserId=new JLabel("用戶名"); private JTextField tUserId=new JTextField(15); private JLabel lPassword=new JLabel("密 碼"); private JPasswordField tPassword=new JPasswordField(15); //按鈕的JPanel private JPanel buttonPanel=new JPanel(); private JButton bLogin=new JButton("登錄"); private JButton bCancel=new JButton("取消"); //設置運行時窗口的大小 Dimension faceSize=new Dimension(350,150); //獲得屏幕的大小 Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize(); public void init(){ jf=new JFrame("學生信息管理系統"); //設置JFrame的名稱 jf.setTitle("登錄"); //將lUserId,tUserId放在idPanel中,idPanel默認水平放置 idPanel.add(lUserId); idPanel.add(tUserId); passwordPanel.add(lPassword); passwordPanel.add(tPassword); center.add(idPanel); center.add(passwordPanel); buttonPanel.add(bLogin); buttonPanel.add(bCancel); //登錄按鈕的- bLogin.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ String userId=tUserId.getText(); String password=String.valueOf(tPassword.getPassword()); //開啟接受數據的線程 if(userId.trim().equals("")||userId==null||password.trim().equals("")||password==null){ JOptionPane.showMessageDialog(jf,"用戶名或密碼不能為空!","提示",JOptionPane.WARNING_MESSAGE); }else{ if(userId.equals("0")&&password.equals("0")){ new StudentManageView().init(); }else{ loginFailure(); } } } }); //取消按鈕的- bCancel.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ System.exit(0); } }); center.add(buttonPanel); jf.add(center); jf.pack(); //設置JFame運行時的大小 jf.setSize(faceSize); //設置JFame運行時的位置 jf.setLocation((int)(screenSize.width-faceSize.getWidth())/2,(int)(screenSize.height-faceSize.getHeight())/2); //設置JFrame不可最大化 jf.setResizable(false); //設置JFrame單機X時結束程序 jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //設置JFrame可見 jf.setVisible(true); } public void loginFailure(){ JOptionPane.showMessageDialog(jf, "用戶名或密碼輸入不正確!","提示",JOptionPane.WARNING_MESSAGE); } public static void main(String args[])throws Exception{ new LoginGUI().init(); } } class MyJTable extends JTable{ /** * */ private static final long serialVersionUID = -3083638370004874364L; public MyJTable(TableModel dm){ super(dm); } //設置表格不可編輯 public boolean isCellEditable(int rowIndex,int columnIndex){ return false; } } class StudentService{ private Student[] students=new Student[50]; //添加學生信息 public void insert(Student s){ for(int i=0;i=0;i--){ service.delete((String)tableModel.getValueAt(selected[i], 0)); tableModel.removeRow(selected[i]); } } } } }); //修改按鈕的- update.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ int row=table.getSelectedRow(); //如果要進行修改,就將id=要修改的學號 id=String.valueOf(table.getValueAt(row, 0)); //設置tId的內容 tId.setText(id); //設置tId不可修改 tId.setEditable(false); tName.setText(String.valueOf(table.getValueAt(row, 1))); String sex=(String) table.getValueAt(row, 2); //如果性別是"男",則將單選框中的男選中,否則選中女 if(sex.equals("男")){ bSex.setSelected(boy.getModel(),true); }else{ bSex.setSelected(girl.getModel(),true); } tAge.setText(String.valueOf(table.getValueAt(row, 3))); tPhone.setText(String.valueOf(table.getValueAt(row, 4))); tQq.setText(String.valueOf(table.getValueAt(row, 5))); tMajor.setText(String.valueOf(table.getValueAt(row, 6))); //設置dialog可見 dialog.setVisible(true); } }); jf.setLayout(new BorderLayout()); //設置pSelect在jf的北面 jf.add(pSelect,BorderLayout.NORTH); //設置pSelect在jf的中心 jf.add(tableScrollPane,BorderLayout.CENTER ); //設置pSelelct在jf的南面 jf.add(buttonPanel,BorderLayout.SOUTH); jf.pack(); jf.setSize(faceSize); jf.setLocation((int)(screenSize.width-faceSize.getWidth())/2,(int)(screenSize.height-faceSize.getHeight())/2); jf.setResizable(false); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); pPhoto.add(lPhoto); pPhoto.add(tPhoto); pPhoto.add(upload); pId.add(lId); pId.add(tId); pName.add(lName); pName.add(tName); pSex.add(lSex); bSex.add(boy); bSex.add(girl); pSex.add(boy); pSex.add(girl); pAge.add(lAge); pAge.add(tAge); pPhone.add(lPhone); pPhone.add(tPhone); pQq.add(lQq); pQq.add(tQq); pMajor.add(lMajor); pMajor.add(tMajor); pButton.add(confirm); pButton.add(cancel); //確定按鈕的- confirm.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ Student student=new Student(); student.setUserId(tId.getText()); student.setPassword(tId.getText()); student.setId(tId.getText()); student.setName(tName.getText()); String sex=null; if(boy.isSelected()){ sex="男"; } if(girl.isSelected()){ sex="女"; } student.setSex(sex); student.setAge(tAge.getText()); student.setPhone(tPhone.getText()); student.setQq(tQq.getText()); student.setMajor(tMajor.getText()); if(id!=null){ service.update(student); }else{ service.insert(student); } dialog.dispose(); } }); //取消按鈕的- cancel.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ dialog.dispose(); } }); box.add(pPhoto); box.add(pId); box.add(pName); box.add(pPhone); box.add(pSex); box.add(pAge); box.add(pPhone); box.add(pQq); box.add(pMajor); box.add(pButton); box.add(pButton); dialog.add(box); dialog.setBounds((int)(screenSize.width-280)/2,(int)(screenSize.height-300)/2,280,350); } public void insertTable(Student student){ if(student!=null){ String[]newCell=new String[7]; newCell[0]=student.getId(); newCell[1]=student.getName(); newCell[2]=student.getSex(); newCell[3]=student.getAge(); newCell[4]=student.getPhone(); newCell[5]=student.getQq(); newCell[6]=student.getMajor(); tableModel.addRow(newCell); } } public void clearTable(){ int rows=tableModel.getRowCount(); for(int i=rows-1;i>=0;i++){ tableModel.removeRow(i); } } public void selectFailure(){ JOptionPane.showMessageDialog(jf,"不存在該學號的學生!","提示",JOptionPane.WARNING_MESSAGE ); } }

      ②程序View的代碼

      主要實現了上傳下載功能的窗口,修改文件路徑也是在這里修改,一共三處。

      public class View { private JFrame jf=new JFrame(); //頁面的總JPanel private JPanel total=new JPanel(new BorderLayout()); //上傳 private JPanel pUpload=new JPanel(new FlowLayout(FlowLayout.LEFT)); private JLabel lFileName=new JLabel("請選擇上傳的照片"); private JTextField tFileName=new JTextField(15); private JButton bBrowse=new JButton("瀏 覽"); private JFileChooser uploadChooser=new JFileChooser(); private JButton bUpload=new JButton("上 傳"); private JPanel pDownload=new JPanel(new FlowLayout(FlowLayout.LEFT)); private JLabel lDownload=new JLabel("下載下面的圖片:"); private JFileChooser downloadChooser=new JFileChooser(); private JButton bDownload=new JButton("下 載"); private JPanel pIcon=new JPanel(new FlowLayout(FlowLayout.LEFT)); //使用本地圖片文件作為圖標 private ImageIcon icon=new ImageIcon(new ImageIcon("D:/Saved Pictures/009.jpg").getImage().getScaledInstance(400,320,0)); private JLabel lIcon=new JLabel(icon); Dimension faceSize=new Dimension(500,450); //設置運行時窗口的位置 Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize(); public void use(){ pUpload.add(lFileName); pUpload.add(tFileName); pUpload.add(bBrowse); pUpload.add(bUpload); //瀏覽按鈕的- bBrowse.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ downloadChooser.setCurrentDirectory(new File(".")); int result=downloadChooser.showOpenDialog(jf); if(result==JFileChooser.APPROVE_OPTION ){ String path=downloadChooser.getSelectedFile().getPath(); tFileName.setText(path); } } }); //上傳按鈕的- bUpload.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ String fromFileName=tFileName.getText(); String toFileName="D:/Config/"+System.currentTimeMillis()+".jpg"; write(fromFileName,toFileName); JOptionPane.showMessageDialog(jf, "上傳成功!","提示",JOptionPane.WARNING_MESSAGE ); } }); pDownload.add(lDownload); pDownload.add(bDownload); //下載按鈕的- bDownload.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ downloadChooser.setCurrentDirectory(new File(".")); int result=uploadChooser.showOpenDialog(jf); if(result==JFileChooser.APPROVE_OPTION ){ String path=uploadChooser.getSelectedFile().getPath(); String fromFileName="D:/Saved Pictures/009.jpg"; write(fromFileName,path); JOptionPane.showMessageDialog(jf, "下載成功!","提示",JOptionPane.WARNING_MESSAGE ); } } }); //放置按鈕的位置 pIcon.add(lIcon); total.add(pUpload,BorderLayout.NORTH); total.add(pDownload,BorderLayout.CENTER); total.add(pIcon,BorderLayout.SOUTH); jf.add(total); jf.setSize(faceSize); jf.setLocation((int)(screenSize.width-faceSize.getWidth())/2,(int)(screenSize.height-faceSize.getHeight())/2); jf.setResizable(false); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); jf.setVisible(true); } //fromFile是源文件,toFile是目的文件 public void write(String fromFile,String toFile){ FileInputStream fis=null; FileOutputStream fos=null; //用try和catch捕獲異常 try{ fis=new FileInputStream(fromFile); fos=new FileOutputStream(toFile); byte[] buf=new byte[1024]; int hasRead=0; while((hasRead=fis.read(buf))>0){ fos.write(buf,0,hasRead); } }catch(FileNotFoundException e){ e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); }finally{ try{ fis.close(); fos.close(); }catch(IOException e){ e.printStackTrace(); } } } public static void main(String args[]){ //用View的引用調用use方法 new View().use(); } }

      ③程序Student的代碼

      創建User表和Student表,先定義各個變量,然后加上set和get方法。

      package 學生信息管理系統; class User{ private String userId; private String password; public String getUserId(){ return userId; } public void setUserId(String userId){ this.userId=userId; } public String getPassword(){ return password; } public void setPassword(String password){ this.password=password; } } public class Student extends User{ private String id; private String name; private String sex; private String age; private String phone; private String qq; private String major; private Object photo; public Object getPhoto(){ return photo; } public void setPhoto(Object photo){ this.photo=photo; } public String getId(){ return id; } public void setId(String id){ this.id=id; } public String getName(){ return name; } public void setName(String name){ this.name=name; } public String getSex(){ return sex; } public void setSex(String sex){ this.sex=sex; } public String getAge(){ return age; } public void setAge(String age){ this.age=age; } public String getPhone(){ return phone; } public void setPhone(String phone){ this.phone=phone; } public String getQq(){ return qq; } public void setQq(String qq){ this.qq=qq; } public String getMajor(){ return major; } public void setMajor(String major){ this.major=major; } }

      ④程序ConnectSQLServer的代碼

      主要實現數據庫的連接,存儲學生信息。直接聲明數據庫的登錄名和密碼,和連接使用的URL,用try-catch來加載數據庫驅動和給出提示信息。

      package 學生信息管理系統; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import javax.swing.JOptionPane; class DatebaseConnection { //數據庫連接成功 public final String DBDRIVER="net.sourceforge.jtds.jdbc.Driver"; //數據庫連接的URL public final String DBURL="jdbc:jtds:sqlserver://127.0.0.1:1433/Competition"; //數據庫登錄名 public final String DBUSER="sa"; //數據庫登錄密碼 public final String DBPASS="Ambow99999999"; private Connection conn=null; public DatebaseConnection(){ try{ //加載數據庫驅動 Class.forName(DBDRIVER); //獲取數據庫連接 conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS); }catch(SQLException e){ JOptionPane.showMessageDialog(null,"數據庫連接失敗","異常",JOptionPane.ERROR_MESSAGE ); System.exit(0); }catch(ClassNotFoundException e){ JOptionPane.showMessageDialog(null, "驅動加載失敗","異常",JOptionPane.ERROR_MESSAGE ); System.exit(0); } } public Connection getConnection(){ return this.conn; } public void close(){ //關閉數據庫連接 if(this.conn!=null){ try{ this.conn.close(); }catch(SQLException e){} } } } public class ConnectSQLServer{ public static void main(String[] args) { try{ Connection con=new DatebaseConnection().getConnection(); if(con!=null){ JOptionPane.showMessageDialog(null,"數據庫連接成功","祝賀",JOptionPane.INFORMATION_MESSAGE ); System.exit(0); }else{ JOptionPane.showMessageDialog(null, "數據庫連接失敗","錯誤",JOptionPane.ERROR_MESSAGE ); System.exit(0); } con.close(); }catch(SQLException e){ e.printStackTrace(); } } }

      五、調試分析

      在一開始調試的時候,發現雖然沒有錯誤,但無法運行,找了很久發現是自己在main方法里沒有去調用init()方法,然后填上了之后程序可以運行。然后在成功登錄后進入學生信息管理系統界面。在里面沒有上傳照片和下載圖片這一選項。我在View這個程序里面首先添加了本地的圖片作為圖標可供下載,然后選定一個文件夾Config作為上傳的路徑。這樣,我就在LoginGUI類里面的添加按鈕-里面再增加了調用View類的use()方法的-,實現了圖片上傳和下載的功能。總之,從一開始參考書上例題打出來的程序作為基石,在上面進行雕刻。從設計轉化為實現,打基礎這一步很困難,因為要花很長時間查資料、看書和看代碼來理解程序,然后才能自己靈活進行優化。同學之間也相互討論幫助,都能給出自己的想法,然后交流之后會得出更好的創意,從第一個星期開始,我已經規劃好要怎樣做,許多同學也參考了我的規劃。我一直按照計劃實施并且很順利地完成了程序設計。

      六、用戶使用說明

      1、登錄

      (1)程序設計的任務是先設計出一個登錄窗口,輸入用戶名和密碼。

      如果輸入錯誤,會像如圖所示輸出“用戶名或密碼輸入不正確”的對話框:

      ==我給出的代碼為了方便調試,用戶名和密碼全是0,記住運行的是LoginGUI這個類==

      (2)如果正確,則成功登錄,進入學生信息管理界面,如圖所示:

      2、添加

      (1)點擊“添加”按鈕,進入學生信息添加界面:

      (2)在以上界面輸入要添加的學生信息,首先點擊“上傳照片”按鈕,然后彈出如下窗口:

      (3)點擊瀏覽選項,選擇本地文件里需要上傳的圖片,這里我們選擇Taylor Swift的圖片,然后點擊上傳,會顯示“上傳成功”的對話框。

      (4)可以看到這張圖片上傳到了本地D:/Config,實現了圖片的上傳功能。

      (5)也可以點擊“下載”這個按鈕,會提示下載成功的對話框,如圖所示:

      (6)它會將你的頭像下載到你指定的文件夾中,實現了文件的下載功能,如下圖所示是將頭像下載到E:/QQ瀏覽器文件這個文件夾里。

      (7)然后添加其他的學生信息,如圖所示:

      (8)點擊“確認”按鈕,即可保存學生信息。我們再添加一個女學生的信息,如下圖所示:

      (9)然后單擊“確定”按鈕,此時學生信息添加成功。

      3、查詢

      (1)在學生管理界面的學生信息列表中點擊“查詢”按鈕,即可顯示已經添加的學生信息記錄,如圖所示:

      (2)也可以在“查詢”的文本框內輸入學號,然后點擊“查詢”按鈕,會跳出所對應的學生記錄,如圖所示:

      4、修改

      (1)點擊所選的武則天學生記錄,再點擊“修改”按鈕,彈出信息框,修改姓名為“花木蘭”,修改手機號為“18816218888”,如圖所示:

      (2)點擊確認按鈕,再點擊“查詢”按鈕進行刷新,顯示出修改后的信息,如下圖所示:

      5、刪除

      (1)在學生信息管理系統界面選中某一學生記錄,單擊“刪除”按鈕,彈出刪除確認界面。如果確認刪除,單擊“確定”按鈕,否則單擊“取消”按鈕。

      Java課程設計【學生信息管理系統】(基于java的學生信息管理系統課程設計)

      (2)我們選擇學生凱的記錄,并點擊“刪除”按鈕,再確定刪除,會看到這條記錄被刪除,僅剩學生花木蘭的記錄,如圖:

      6、退出

      點擊右上角的X,將關閉所有程序窗口。

      七、測試結果

      測試數據和測試結果在用戶使用說明選項中已經詳細介紹過,這里不再重復介紹。

      八、課程設計總結

      這次課程設計總體來說是一次非常有意義的任務,因為在這次課程設計中我學會了很多GUI編程和流類的知識,提高了編程的能力,也增加了對編程的興趣。雖然這是一個小項目,但是能把它做好也是有很大的滿足感。雖然一開始遇到很多問題,但自己都咬牙克服、迎難而上,每天都在鉆研程序,然后將自己的思想與同學們交流。可以說,沒有付出就沒有回報,只要你肯付出,就會有收獲。一件事,你只要用心去做了,將它做好,無論結果如何,你都不會留有遺憾的。課程設計讓我對所學知識有了更深刻的理解,也讓我明白如今對程序員的要求是多么嚴格,需要掌握各種編程知識,才能夠在職場上游刃有余。

      九、參考文獻

      《JAVA核心技術》 馬志強 張然 李雷孝著

      《JAVA API文檔》 Oracle官網文件

      《JAVA編程思想》 【美】Bruce Eckel著

      《JAVA數據庫技術詳解》 李剛 著

      十、源碼下載

      學生信息管理系統的整體代碼界面展示如下:

      1、Main.java類

      2、View.java類

      3、Student.java類

      4、ConnectSQLServer類

      5、LoginGUI類

      這個系統也是當時為數不多的優秀課程設計,需要源碼的同學可以關注博主的微信公眾號,回復:==學生信息管理系統==,可以獲得源碼學習。

      等你有了新的圈子,別忘了誰陪你走過了人煙稀少的時候;等你過得好時,別忘了誰陪你度過了最艱難的時刻。路上人山人海,不一定都對你好,但肯定會有一個愿意等。朋友不要多,但要最真。你可以不好,但不能背叛;可以不是土豪,但會懂得分享。可以沒有勢力,但知道護友。最后我們都散了,記得常聯系。

      Java

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel表格分類排序的教程詳解(excel表格如何分類排序)
      下一篇:欺騙的藝術——社會工程學(社會工程學也是一種欺騙的手段)
      相關文章
      亚洲国产女人aaa毛片在线| 亚洲国产小视频精品久久久三级 | 亚洲另类视频在线观看| 亚洲xxxx18| 亚洲最大AV网站在线观看| 亚洲男人的天堂一区二区| 亚洲高清免费视频| 亚洲国产高清在线一区二区三区| 日批日出水久久亚洲精品tv| 亚洲国产精品成人综合色在线婷婷 | 国产成人精品日本亚洲11| 亚洲另类自拍丝袜第1页| 亚洲另类小说图片| 亚洲AV无码国产精品色| 亚洲电影一区二区| 亚洲人成网站在线播放影院在线| 久久精品国产亚洲AV麻豆网站| 日韩亚洲Av人人夜夜澡人人爽| 久久精品九九亚洲精品| 亚洲精品免费在线视频| 亚洲国产日韩在线| 国产成人精品亚洲2020| 亚洲欧美第一成人网站7777| 久久亚洲精品无码gv| 亚洲AV日韩精品一区二区三区| 亚洲伊人久久成综合人影院| 亚洲精品乱码久久久久久自慰| 亚洲中文字幕伊人久久无码| 国产亚洲精久久久久久无码AV| 亚洲女同成av人片在线观看| 亚洲va在线va天堂va四虎| 亚洲视频在线观看网址| 亚洲一区二区三区免费观看| 亚洲熟女www一区二区三区| 亚洲欧美日韩中文无线码| 亚洲福利在线播放| 亚洲男人的天堂www| 亚洲一区二区在线免费观看| 亚洲国产成人久久99精品| 亚洲欧美乱色情图片| 亚洲国产精品无码久久九九 |