第一篇:大學JAVA課程設計——學生信息管理系統(tǒng)
沈陽理工大學課程設計
沈陽理工大學課程設計
摘要
Java語言是當前最為流行的程序設計語言之一,諸多優(yōu)秀的的特性使其成為被業(yè)界廣泛認可和采用的工具。本設計可以幫助同學掌握和應運所學的面向對象程序設計學生學籍信息管理系統(tǒng)的編程內容,培養(yǎng)同學們建立對象模型,處理對象和對象集關系和對圖形用回界面設計編程以及文件和流的編程問題的能力,訓練同學為解決實際問題而創(chuàng)建較完整的簡單面向對象和管理系統(tǒng)編程應運程序的獨立編程能力.本設計是一個常見的學生學籍管理系統(tǒng)應運程序.系統(tǒng)實現(xiàn)的功能: 界面操作實現(xiàn)學生學籍信息的添加、刪除、查詢、修改功能,在文本文件中的的信息的動態(tài)處理。
關鍵詞:
學生學籍管理系統(tǒng);圖形用戶界面設計;文件和流;java
I
沈陽理工大學課程設計
目 錄
一、課程設計的目的與意義..........................................................................................1
1.目的..........................................................1 2.意義..........................................................1
二、需求分析..........................................................................................................................1
1.學生學籍管理系統(tǒng)主界面模塊................................1 2.錄入學生基本信息模塊......................................1 3.修改學生基本信息模板......................................1 3.查詢學生基本信息模板......................................1 4.刪除學生基本信息模板......................................1
三、分案設計..........................................................................................................................3
1.定義四個Panel面板......................................3
四、方案的實施......................................................................................................3
五、心得體會.........................................................................................................15
六、參考文獻.........................................................................................................16
II
沈陽理工大學課程設計
一、課程設計的目的與意義
目的:深入理解java語言的語法規(guī)則及其優(yōu)勢,掌握類與方法的構造方法,掌 握基于java的各種操作的實現(xiàn)方法,訓練對基礎知識和基本方法的綜合運用能力,增強對算法的理解能力,提高軟件設計能力。在實踐中培養(yǎng)獨立分析問題和解決問題的作風和能力。
意義:熟練運用java語言、基本構造方法和算法的基礎知識,獨立編制一個具有中等難度的、解決實際應用問題的應用程序。通過題意分析、選擇類結構、算法設計、編制程序、調試程序、軟件測試、結果分析、撰寫課程設計報告等環(huán)節(jié)完成軟件設計的全過程,不斷地完善程序以提高程序的性能。
二、需求分析
該學生學籍管理系統(tǒng)的所有功能均在一個Frame窗體中實現(xiàn)。1.學生學籍管理系統(tǒng)主界面模塊:
采用Frame窗體來設置歡迎界面包括背景圖片及字幕(可以設計成滾動字幕效果),左上方的菜單條設計成下拉式。包括“錄入學生基本信息”、“修改學生基本信息”、“刪除學生基本信息”、“查詢學生基本信息”和“退出系統(tǒng)”五項菜單項。2.錄入學生基本信息模塊:
采用Panel面板來設置該部分內容信息并采用方位布局(邊緣布局)和Box輕量級組件來設置“學號”、“姓名”、“性別”、“專業(yè)”、“年級”、“出生”,并在該面板中添加了“錄入”和“重置”兩個按鈕進行監(jiān)聽,最后將該面板加入到Frame窗體中去。3.修改學生基本信息模板:
采用Panel面板來設置該部分內容信息,同樣是采用方位布局及Box組件來設置相關信息,并在學號旁設置了“開始修改”按鈕。在面板南部方位添加了“確定修改”和“重置”兩按鈕進行監(jiān)聽。4.查詢學生基本信息模板:
采用Panel面板來設置該部分內容信息,并將該面板加入到主窗體中去,采用邊緣布局進行方位設置,在上方加入“查詢”按鈕進行監(jiān)聽。
5.刪除學生基本信息模板:
也是采用Panel面板進行設置相關內容,并用邊緣布局進行布局,并在上方添加“確定”按鈕,在下方添加“確定刪除”按鈕實現(xiàn)監(jiān)聽。
三、模塊設計
定義四個Panel面板
1.定義Reg(錄入學生基本信息)面板
采用BorderLayout(構造一個組件之間沒有間距的新邊界布)和Box輕量級組件進行布局,在面板的Nother方位添加一個“錄入學生基本信息”的標簽,并更改字體,顏色等。接著用JTextField輕量級組件來設置單行文本編輯,并將其加入到用
沈陽理工大學課程設計
createHorizontalBox()方法創(chuàng)建具有一個從左到右顯示其組件的Box和用createHorizontalStrut()創(chuàng)建一個不可見的、固定寬度的組件,使其在一個橫向 box 中,通常使用此方法強行使兩個組件之間具有某一空間量。然后Box與Box之間用createVerticalBox()創(chuàng)建一個從上到下顯示其組件的 Box,并用createVerticalStrut()方法創(chuàng)建一個不可見的、固定高度的組件,使其在一個縱向 box 中,通常使用此方法強行使兩個組件之間具有某一空間量。然后在面板的South方位設置“錄入”與“重置”兩按鈕。最后實現(xiàn)與數(shù)據(jù)庫的橋接,能夠將從文本框獲得的信息存儲到數(shù)據(jù)庫中去。
2.定義Search(查詢學生基本信息)面板
該部分同樣采用BorderLayout(構造一個組件之間沒有間距的新邊界布)和Box輕量級組件進行布局,在面板的Nother方位添加一個“查詢學生基本信息”的標簽,并更改字體,顏色等。接著用JTextField輕量級組件來設置單行文本編輯,在學號這一文本框后再添加一個“查詢”按鈕。并將其加入到用createHorizontalBox()方法創(chuàng)建具有一個從左到右顯示其組件的Box和用createHorizontalStrut()創(chuàng)建一個不可見的、固定寬度的組件,使其在一個橫向 box 中,通常使用此方法強行使兩個組件之間具有某一空間量。然后Box與Box之間用createVerticalBox()創(chuàng)建一個從上到下顯示其組件的 Box,并用createVerticalStrut()方法創(chuàng)建一個不可見的、固定高度的組件,使其在一個縱向 box 中,通常使用此方法強行使兩個組件之間具有某一空間量。最后實現(xiàn)與數(shù)據(jù)庫的橋接,能夠將從數(shù)據(jù)庫中獲取信息并顯示到文本框中去。
3.定義Modify(修改學生基本信息)面板
該部分同樣也是采用BorderLayout(構造一個組件之間沒有間距的新邊界布)和Box輕量級組件進行布局,在面板的Nother方位添加一個“修改學生基本信息”的標簽,并更改字體,顏色等。接著用JTextField輕量級組件來設置單行文本編輯,并將其加入到用createHorizontalBox()方法創(chuàng)建具有一個從左到右顯示其組件的Box和用createHorizontalStrut()創(chuàng)建一個不可見的、固定寬度的組件,使其在一個橫向 box 中,通常使用此方法強行使兩個組件之間具有某一空間量。并在 “學號”該文本框后添加一個“開始修改”按鈕用來監(jiān)聽。然后Box與Box之間用createVerticalBox()創(chuàng)建一個從上到下顯示其組件的 Box,并用createVerticalStrut()方法創(chuàng)建一個不可見的、固定高度的組件,使其在一個縱向 box 中,通常使用此方法強行使兩個組件之間具有某一空間量。最后實現(xiàn)與數(shù)據(jù)庫的橋接,能夠將從數(shù)據(jù)庫中獲取信息并顯示到文本框中去,并將修改后的信息存儲到數(shù)據(jù)庫中去。
4.定義Delete(刪除學生基本信息)面板
該部分還是采用BorderLayout(構造一個組件之間沒有間距的新邊界布)和Box輕量級組件進行布局,在面板的Nother方位添加一個“修改學生基本信息”的標簽,并更改字體,顏色等。接著用JTextField輕量級組件來設置單行文本編輯,在學號這一文本框后再添加一“確定”按鈕實現(xiàn)監(jiān)聽。并將其所有文本框和標簽加入到用createHorizontalBox()方法創(chuàng)建具有一個從左到右顯示其組件的Box和用createHorizontalStrut()創(chuàng)建一個不可見的、固定寬度的組件,使其在一個橫向 box 中,通常使用此方法強行使兩個組件之間
沈陽理工大學課程設計
具有某一空間量。并在 “學號”該文本框后添加一個“開始修改”按鈕用來監(jiān)聽。然后Box與Box之間用createVerticalBox()創(chuàng)建一個從上到下顯示其組件的 Box,并用createVerticalStrut()方法創(chuàng)建一個不可見的、固定高度的組件,使其在一個縱向 box 中,通常使用此方法強行使兩個組件之間具有某一空間量,還在本面板的South方位添加“確定刪除”按鈕。最后實現(xiàn)與數(shù)據(jù)庫的橋接,能夠將從數(shù)據(jù)庫中獲取信息并顯示到文本框中去,刪除后同時在數(shù)據(jù)庫中也刪除該信息并保存該操作。
四、方案的實施
1、學生信息管理系統(tǒng)的登錄
學生信息管理系統(tǒng)可由管理員和學生兩種身份的人使用。管理員和學生身份登錄所能操作的功能有很大的區(qū)別。系統(tǒng)初始化一個系統(tǒng)管理員,登錄名:admin 密碼:admin 學生登錄系統(tǒng)的登錄名為學號,密碼也為學號(如:10001),登錄后可以修改密碼。
登錄界面
登錄系統(tǒng)后的界面
沈陽理工大學課程設計
注冊學生信息界面
沈陽理工大學課程設計
修改學生信息界面
查詢學生信息界面
沈陽理工大學課程設計
刪除學生信息界面
沈陽理工大學課程設計 程序類的設計
DeleteListener.java:刪除監(jiān)聽 JTMouseListener.java:樹狀視圖 LoginListener.java:登陸監(jiān)聽 ResetListener.java:重置監(jiān)聽 SaveListener.java:保存監(jiān)聽
SearchAllListener.java:搜索所有學生信息 SearchDListener.java:搜索一個學生信息 SearchListener.java:搜索一個學生信息 SearchRListener.java:搜索一個學生信息 SubmitListener.java:提交信息監(jiān)聽 系統(tǒng)的使用說明及環(huán)境配置
學生信息管理系統(tǒng)提供了管理員和學生這兩個角色登錄系統(tǒng),管理員通過用戶名:admin 密碼:admin 登錄系統(tǒng)后可以進行相應的操作。學生通過以自己的學號(如10001)作為用戶名和密碼登錄系統(tǒng)后進行相應的學生權限范圍內的操作。數(shù)據(jù)庫:Mysql 連接數(shù)據(jù)庫的登錄名:root 密碼:zfz 代碼:
DeleteListener.java:刪除監(jiān)聽 package manager.ui.listener;
import java.awt.event.ActionEvent;import java.awt.event.ActionListener;
import javax.swing.JButton;import javax.swing.JOptionPane;
import manager.dao.JdbcIcpCURD;import manager.ui.conponent.DeletePanel;
public class DeleteListener implements ActionListener {
public void actionPerformed(ActionEvent e){
JButton jb=(JButton)e.getSource();
DeletePanel dp=(DeletePanel)jb.getParent();
String xuehao=dp.xuehaoFd.getText();
String msg= “你確定要刪除學號為”+xuehao+“的學生信息么?”;
int i=JOptionPane.showConfirmDialog(dp,msg,“提”,JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE);
if(i==0){
JdbcIcpCURD curd=new JdbcIcpCURD();
boolean b=curd.deleteByXuehao(Integer.parseInt(xuehao));
if(b){
dp.errorLb.setText(“刪除成功”);
}
else{
dp.errorLb.setText(“刪除失敗”);
}
}
return;}
示信息
沈陽理工大學課程設計
} JTMouseListener.java:樹狀視圖 package manager.ui.listener;
import java.awt.CardLayout;import java.awt.Component;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;
import javax.swing.JTree;import javax.swing.tree.DefaultMutableTreeNode;import javax.swing.tree.TreeNode;import javax.swing.tree.TreePath;
import manager.ui.conponent.MainFrame;import manager.ui.conponent.PLeft;
public class JTMouseListener implements MouseListener {
@Override public void mouseClicked(MouseEvent e){
// TODO Auto-generated method stub JTree jt=(JTree)e.getSource();PLeft p=(PLeft)jt.getParent();MainFrame f=(MainFrame)p.getParent().getParent().getParent().getParent();TreePath path = jt.getPathForLocation(e.getX(), e.getY());if(path==null){ return;} DefaultMutableTreeNode node =(DefaultMutableTreeNode)path.getLastPathComponent();String s=node.toString();CardLayout cl=f.getPright().getLayout();if(s.equals(“注冊學生”)){ cl.show(f.getPright(), “register”);} if(s.equals(“修改學生信息”)){ cl.show(f.getPright(), “modify”);} if(s.equals(“查詢學生信息”)){ cl.show(f.getPright(), “search”);} if(s.equals(“刪除學生信息”)){ cl.show(f.getPright(), “delete”);} if(s.equals(“學生信息管理”)){ cl.show(f.getPright(), “welcom”);} }
@Override public void mouseEntered(MouseEvent e){
沈陽理工大學課程設計
} } @Override public void mouseExited(MouseEvent e){ // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent e){ // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent e){ // TODO Auto-generated method stub } // TODO Auto-generated method stub LoginListener.java:登陸監(jiān)聽
package manager.ui.listener;
import java.awt.event.ActionEvent;import java.awt.event.ActionListener;
import javax.swing.JButton;import javax.swing.JOptionPane;
import manager.ui.conponent.Login;import manager.ui.conponent.MainFrame;
public class LoginListener implements ActionListener {
@Override public void actionPerformed(ActionEvent e){
JButton bt=(JButton)e.getSource();
Login frame=(Login)bt.getParent().getParent().getParent().getParent();
String username=frame.usernameTa.getText().trim();
String password=frame.passwordTa.getText().trim();
if(username!=null||password!=null){
if(“admin”.equals(username)&&“123”.equals(password)){
new MainFrame().setVisible(true);
frame.dispose();
}
else{
frame.messageLb.setText(“用戶名或密碼錯誤”);
}
}
沈陽理工大學課程設計
else{
frame.messageLb.setText(“用戶名或密碼錯誤”);
} } } ResetListener.java:重置監(jiān)聽 package manager.ui.listener;
import java.awt.event.ActionEvent;import java.awt.event.ActionListener;
import javax.swing.JButton;
import manager.ui.conponent.RegPanel;
public class ResetListener implements ActionListener {
@Override public void actionPerformed(ActionEvent e){ JButton jb=(JButton)e.getSource();RegPanel jp=(RegPanel)jb.getParent();jp.xuehaoFd.setText(“");jp.nameFd.setText(”“);jp.addressFd.setText(”“);} } SaveListener.java:保存監(jiān)聽 package manager.ui.listener;
import java.awt.event.ActionEvent;import java.awt.event.ActionListener;
import javax.swing.JButton;
import manager.dao.JdbcIcpCURD;import manager.domain.Student;import manager.ui.conponent.ModifyPanel;
public class SaveListener implements ActionListener {
@Override public void actionPerformed(ActionEvent e){
JButton jb=(JButton)e.getSource();
ModifyPanel mp=(ModifyPanel)jb.getParent();
String xuehao=mp.xuehaoTf.getText().trim();
String name=mp.nameTf.getText().trim();
String gender=mp.genderTf.getText().trim();
String address=mp.addressTf.getText().trim();
String oldXuehao=mp.xuehaoFd.getText().trim();
if(oldXuehao==null||xuehao.equals(”“)){
沈陽理工大學課程設計
}
} oldXuehao=xuehao;} if(xuehao==null||xuehao.equals(”“)){ mp.errorLb.setText(”請輸入修改后的學號...“);return;} if(name==null||name.equals(”“)){ mp.errorLb.setText(”請輸入修改后的姓名...“);return;} if(gender==null||gender.equals(”“)){ mp.errorLb.setText(”請輸入修改后的性別...“);return;} if(address==null||address.equals(”“)){ mp.errorLb.setText(”請輸入修改后的地址...“);return;} Student stu=new Student();stu.setXuehao(Integer.parseInt(xuehao));stu.setName(name);stu.setGender(gender);stu.setAddress(address);int old=Integer.parseInt(oldXuehao);JdbcIcpCURD curd=new JdbcIcpCURD();if(curd.modify(stu, old)){ mp.errorLb.setText(”修改成功...“);}
SearchAllListener.java:搜索所有學生信息 package manager.ui.listener;
import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Vector;
import javax.swing.JButton;import javax.swing.JTextArea;
import manager.dao.JdbcIcpCURD;import manager.domain.Student;import manager.ui.conponent.SearchPanel;
public class SearchAllListener implements ActionListener {
@Override public void actionPerformed(ActionEvent e){
JButton jb=(JButton)e.getSource();
SearchPanel sp=(SearchPanel)jb.getParent();
沈陽理工大學課程設計
}
} JTextArea jt=sp.resultTa;JdbcIcpCURD curd=new JdbcIcpCURD();Vector
import java.awt.event.ActionEvent;import java.awt.event.ActionListener;
import javax.swing.JButton;
import manager.dao.JdbcIcpCURD;import manager.domain.Student;import manager.ui.conponent.DeletePanel;import manager.ui.conponent.ModifyPanel;import manager.ui.conponent.SearchPanel;
public class SearchDListener implements ActionListener {
@Override public void actionPerformed(ActionEvent e){
JButton jb=(JButton)e.getSource();
DeletePanel dp=(DeletePanel)jb.getParent();
JdbcIcpCURD curd=new JdbcIcpCURD();
String s=dp.xuehaoFd.getText().trim();
Student stu=curd.searchByXuehao(Integer.parseInt(s));
if(stu==null){
dp.errorLb.setText(”沒有查詢到此學生“);
return;
}
dp.xuehaoTf.setText(new Integer(stu.getXuehao()).toString());
dp.nameTf.setText(stu.getName());
dp.genderTf.setText(stu.getGender());
dp.addressTf.setText(stu.getAddress());
沈陽理工大學課程設計
} } SearchListener.java:搜索一個學生信息 package manager.ui.listener;
import java.awt.event.ActionEvent;import java.awt.event.ActionListener;
import javax.swing.JButton;
import manager.dao.JdbcIcpCURD;import manager.domain.Student;import manager.ui.conponent.ModifyPanel;
public class SearchListener implements ActionListener {
@Override public void actionPerformed(ActionEvent e){
JButton jb=(JButton)e.getSource();
ModifyPanel mp=(ModifyPanel)jb.getParent();
String s=mp.xuehaoFd.getText().trim();
if(s==null||s.equals(”“)){
mp.errorLb.setText(”請輸入學號..“);
return;
}
JdbcIcpCURD curd=new JdbcIcpCURD();
Student stu=curd.searchByXuehao(Integer.parseInt(s));
mp.xuehaoTf.setText(new Integer(stu.getXuehao()).toString());
mp.nameTf.setText(stu.getName());
mp.genderTf.setText(stu.getGender());
mp.addressTf.setText(stu.getAddress());} } SearchRListener.java:搜索一個學生信息 package manager.ui.listener;
import java.awt.event.ActionEvent;import java.awt.event.ActionListener;
import javax.swing.JButton;
import manager.dao.JdbcIcpCURD;import manager.domain.Student;import manager.ui.conponent.ModifyPanel;import manager.ui.conponent.SearchPanel;
public class SearchRListener implements ActionListener {
@Override public void actionPerformed(ActionEvent e){
沈陽理工大學課程設計
}
} JButton jb=(JButton)e.getSource();SearchPanel sp=(SearchPanel)jb.getParent();JdbcIcpCURD curd=new JdbcIcpCURD();String s=sp.xuehaoTf.getText().trim();Student stu=curd.searchByXuehao(Integer.parseInt(s));if(stu==null){ return;} StringBuilder sb=new StringBuilder();sb.append(” “);sb.append(stu.getXuehao());sb.append(”t“);sb.append(stu.getName());sb.append(”t“);sb.append(stu.getGender());sb.append(”t“);sb.append(stu.getAddress());sb.append(”t“);sb.append(stu.getRegTime().toString());sb.append(”n“);sp.resultTa.setText(sb.toString());
SubmitListener.java:提交信息監(jiān)聽 package manager.ui.listener;
import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Date;
import javax.swing.JButton;import javax.swing.JLabel;
import manager.dao.JdbcIcpCURD;import manager.domain.Student;import manager.ui.conponent.RegPanel;
public class SubmitListener implements ActionListener {
@Override public void actionPerformed(ActionEvent e){ JButton jb=(JButton)e.getSource();RegPanel jp=(RegPanel)jb.getParent();String xuehao=jp.xuehaoFd.getText();String name=jp.nameFd.getText();String address=jp.addressFd.getText();String gender=”“;boolean b1=jp.maleRB.isSelected();boolean b2=jp.femaleRB.isSelected();
沈陽理工大學課程設計
if(b1){ } JLabel errorLabel=jp.errorLabel;if(xuehao==null||xuehao.trim().equals(”“)){ errorLabel.setText(”沒有填寫學號..“);return;} if(name==null||name.trim().equals(”“)){ errorLabel.setText(”沒有填寫姓名..“);return;} if(address==null|address.trim().equals(”“)){ errorLabel.setText(”沒有填寫地址..“);return;} if(!(b1||b2)){ errorLabel.setText(”請選擇性別...“);return;} if(b1){ gender=”男“;} if(b2){ gender=”女“;} Student stu=new Student(Integer.parseInt(xuehao),name,gender,new Date(System.currentTimeMillis()),address);JdbcIcpCURD curd=new JdbcIcpCURD();boolean b=curd.insert(stu);if(b){ errorLabel.setText(”注冊成功!“);jp.xuehaoFd.setText(”“);jp.nameFd.setText(”“);jp.addressFd.setText(”");} } }
五、心得體會
我們剛學習java這門課程,對專業(yè)的java編程知識并未有深入的學習和探索。但是當我們查找過一些書籍資料后,在不斷努力下我們還是把課程設計題目順利的完成了。通過此次學生學籍管理系統(tǒng)的設計,使我們對java編程語言有了更深層次的了解。不過在編寫的過程中也存在一些問題,例如在選擇適宜的方法實現(xiàn)修改和刪除功能的時候,由于對
沈陽理工大學課程設計
數(shù)組的理解還不能滿足當前的編程需要,并未選擇更加簡單的數(shù)組來處理數(shù)據(jù),以至于當刪除指定內容后在文本文件中留有空行,從而導致了在接下來的查詢異常和再次修改和刪除功能無法正常實現(xiàn),還需人工刪除掉文本文件中的空行以保證程序的正常運行。我們也可以選用其他的更加方便的處理方法使得程序更加優(yōu)化和簡潔。
“書山有路勤為徑,學海無涯苦作舟”,我們現(xiàn)今所學的知識還遠遠不夠,在今后的學習過程中我們要進一步學習java的更多的知識,此次課程設計不僅鍛煉了我們獨立思考和團隊合作的能力,而且提高了我們動手的能力,我會繼續(xù)努力學習此課程的。
六、參考文獻 鄭阿奇 編著《Java實用教程(第二版)》電子工業(yè)出版社 2 良葛格 編著《Java學習筆記》清華大學出版
第二篇:JAVA課程設計員工信息管理系統(tǒng)
JAVA員工管理系統(tǒng)
實驗報告
姓名:張旭冉
學號:10105010117
班級:信10-1
北方工業(yè)大學理學院信息與計算科學系
2013年 12月 17日
員工管理系統(tǒng)一、實驗目的
通過該課程設計,使同學們進一步理解概JAVA的基本概念、理論和方法,初步掌握JDK、Eclipse的調試和應用,以及程序中錯誤的解決方法,明確JAVA在實際程序設計中的應用。使課堂中學習到理論得到應用,練習文件形式在JAVA程序設計中的應用。
二、實驗內容
A.設計題目:員工管理系統(tǒng)
設計要求:(1)完成員工信息的添加、刪除、查詢、修改功能
(2)使用用戶界面操作
(3)使用文件形式完成
設計思路:首先設計界面進入面板,在面板中添加菜單選項,并將要實現(xiàn)的功能選項添加其中,然后對這些選項實施監(jiān)聽,實現(xiàn)其功能。通過文件類型知識的應用,實現(xiàn)對員工信息的管理。B.概要設計
面板設計:首先設計一個容器,然后再容器中添加菜單,在菜單中添加選項,并在容器中加入面板,面板布局設置為CardLayout,最后將面板添加進容器。
功能實現(xiàn):在錄入、查詢、修改和刪除界面中使用JButton、JLabel、ButtonGroup、JRadioButton、JTextField、Choice為界面中加入相應的組件,并對其進行監(jiān)聽,同時附加了文件流的處理。C.詳細設計
1、定義員工類:
public class Employee implements java.io.Serializable { String number,name,discipling,grade,borth,sex;public Employee(){ } public void setNumber(String number){ this.number=number;} public String getNumber(){ return number;
} public void setName(String name){ this.name=name;} public String getName(){ return name;} public void setDiscipling(String discipling){ this.discipling=discipling;} public String getDisciping(){ return discipling;} public void setGrade(String grade){ this.grade=grade;} public String getGrade(){ return grade;} public void setBorth(String borth){ this.borth=borth;} public String getBorth(){ return borth;} public void setSex(String sex){ this.sex=sex;} public String getSex(){ return sex;}}
2、主程序:
import java.awt.*;
import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.Hashtable;public class EmployeeManager extends JFrame implements ActionListener { EmployeeSituation 基本信息錄入=null;ModifySituation 基本信息修改=null;Inquest 基本信息查詢=null;Delete 基本信息刪除=null;JMenuBar bar;JMenu fileMenu;JMenuItem 錄入,修改,查詢,刪除;Container con=null;Hashtable 基本信息=null;File file=null;CardLayout card=null;JLabel label=null;JPanel pCenter;public EmployeeManager(){ 錄入=new JMenuItem(“錄入員工基本信息”);修改=new JMenuItem(“修改員工基本信息”);查詢=new JMenuItem(“查詢員工基本信息”);刪除=new JMenuItem(“刪除員工基本信息”);bar=new JMenuBar();fileMenu=new JMenu(“菜單選項”);fileMenu.add(錄入);fileMenu.add(修改);fileMenu.add(查詢);fileMenu.add(刪除);bar.add(fileMenu);setJMenuBar(bar);label=new JLabel(“歡迎進入員工信息管理系統(tǒng)”,JLabel.CENTER);label.setFont(new Font(“SansSerif”,Font.BOLD+Font.ITALIC,25));label.setForeground(Color.red);基本信息=new Hashtable();錄入.addActionListener(this);修改.addActionListener(this);查詢.addActionListener(this);刪除.addActionListener(this);card=new CardLayout();con=getContentPane();pCenter=new JPanel();
pCenter.setLayout(card);pCenter.setBackground(Color.yellow);file=new File(“基本信息.txt”);if(!file.exists()){
try
{
FileOutputStream out=new FileOutputStream(file);ObjectOutputStream objectOut=new ObjectOutputStream(out);
objectOut.writeObject(基本信息);
objectOut.close();
out.close();
}
catch(IOException e)
{
} } 基本信息錄入=new EmployeeSituation(file);基本信息修改=new ModifySituation(file);基本信息查詢=new Inquest(this,file);基本信息刪除=new Delete(file);pCenter.add(“歡迎語界面”,label);pCenter.add(“錄入界面”,基本信息錄入);pCenter.add(“修改界面”,基本信息修改);pCenter.add(“刪除界面”,基本信息刪除);con.add(pCenter,BorderLayout.CENTER);con.validate();addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){ System.exit(0);}});setVisible(true);setBounds(100,50,420,380);validate();} public void actionPerformed(ActionEvent e){ if(e.getSource()==錄入){ card.show(pCenter,“錄入界面”);} else if(e.getSource()==修改)
{ card.show(pCenter,“修改界面”);} else if(e.getSource()==查詢){ 基本信息查詢.setVisible(true);} else if(e.getSource()==刪除){ card.show(pCenter,“刪除界面”);} } public static void main(String args[]){ new EmployeeManager();}}
3、實現(xiàn)員工信息的錄入: import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class EmployeeSituation extends JPanel implements ActionListener { Hashtable 基本信息表=null;JTextField 員工號,姓名,工資;Choice 部門;JRadioButton 男,女;Employee 員工=null;ButtonGroup group=null;JButton 錄入,重置;FileInputStream inOne=null;ObjectInputStream inTwo=null;FileOutputStream outOne=null;ObjectOutputStream outTwo=null;File file=null;public EmployeeSituation(File file){
this.file=file;
員工號=new JTextField(10);
姓名=new JTextField(10);
部門=new Choice();部門.add(“請選擇”);部門.add(“研發(fā)部”);部門.add(“銷售部”);部門.add(“人事部”);部門.add(“安全部”);工資=new JTextField(10);group=new ButtonGroup();男=new JRadioButton(“男”,true);女=new JRadioButton(“女”,false);group.add(男);group.add(女);錄入=new JButton(“錄入”);重置=new JButton(“重置”);錄入.addActionListener(this);重置.addActionListener(this);Box box1=Box.createHorizontalBox();box1.add(new JLabel(“員工號:”,JLabel.CENTER));box1.add(員工號);Box box2=Box.createHorizontalBox();box2.add(new JLabel(“姓名:”,JLabel.CENTER));box2.add(姓名);Box box3=Box.createHorizontalBox();box3.add(new JLabel(“性別:”,JLabel.CENTER));box3.add(男);box3.add(女);Box box4=Box.createHorizontalBox();box4.add(new JLabel(“部門:”,JLabel.CENTER));box4.add(部門);Box box6=Box.createHorizontalBox();box6.add(new JLabel(“ ”,JLabel.CENTER));Box box5=Box.createHorizontalBox();box5.add(new JLabel(“工資:”,JLabel.CENTER));box5.add(工資);Box boxH=Box.createVerticalBox();boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box5);boxH.add(box6);boxH.add(box4);boxH.add(Box.createVerticalGlue());JPanel pCenter=new JPanel();pCenter.add(boxH);
pCenter.setBackground(Color.yellow);
setLayout(new BorderLayout());
add(pCenter,BorderLayout.CENTER);
JPanel pSouth=new JPanel();
pSouth.add(錄入);
pSouth.add(重置);
pSouth.setBackground(Color.yellow);
add(pSouth,BorderLayout.SOUTH);
validate();
} public void actionPerformed(ActionEvent e){ if(e.getSource()==錄入){ String number=“";number=員工號.getText();if(number.length()>0){ try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();} catch(Exception ee){ } if(基本信息表.containsKey(number)){ String warning=”該員工基本信息已存在,請到修改頁面修改!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);} else { String m=”基本信息將被錄入!“;int ok=JOptionPane.showConfirmDialog(this,m,”確認“,JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE);if(ok==JOptionPane.YES_OPTION){ String name=姓名.getText();
String discipling=部門.getSelectedItem();String grade=工資.getText();String sex=null;if(男.isSelected()){ sex=男.getText();} else { sex=女.getText();} 員工=new Employee();員工.setNumber(number);員工.setName(name);員工.setDiscipling(discipling);員工.setGrade(grade);員工.setSex(sex);try { outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne);
基本信息表.put(number,員工);outTwo.writeObject(基本信息表);outTwo.close();outOne.close();
員工號.setText(null);
姓名.setText(null);
工資.setText(null);} catch(Exception ee){ System.out.println(ee);}}}} else { String warning=”必須要輸入員工號!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);}}
if(e.getSource()==重置)
{
員工號.setText(null);
姓名.setText(null);
部門.remove(部門.getSelectedIndex());
工資.setText(null);}}}
4、實現(xiàn)員工信息的修改: import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class ModifySituation extends JPanel implements ActionListener { Hashtable 基本信息表=null;JTextField 員工號,姓名,工資;Choice 部門;JRadioButton 男,女;ButtonGroup group=null;JButton 開始修改,錄入修改,重置;FileInputStream inOne=null;ObjectInputStream inTwo=null;FileOutputStream outOne=null;ObjectOutputStream outTwo=null;File file=null;public ModifySituation(File file)
{ this.file=file;員工號=new JTextField(10);姓名=new JTextField(10);部門=new Choice();部門.add(”請選擇“);部門.add(”研發(fā)部“);部門.add(”銷售部“);部門.add(”人事部“);部門.add(”安全部“);工資=new JTextField(10);group=new ButtonGroup();男=new JRadioButton(”男“,true);女=new JRadioButton(”女“,false);group.add(男);group.add(女);開始修改=new JButton(”開始修改“);錄入修改=new JButton(”錄入修改“);錄入修改.setEnabled(false);重置=new JButton(”重置“);員工號.addActionListener(this);開始修改.addActionListener(this);錄入修改.addActionListener(this);重置.addActionListener(this);Box box1=Box.createHorizontalBox();box1.add(new JLabel(”輸入要修改信息的員工號:“,JLabel.CENTER));box1.add(員工號);box1.add(開始修改);Box box2=Box.createHorizontalBox();box2.add(new JLabel(”姓名:“,JLabel.CENTER));box2.add(姓名);Box box3=Box.createHorizontalBox();box3.add(new JLabel(”性別:“,JLabel.CENTER));box3.add(男);box3.add(女);Box box4=Box.createHorizontalBox();box4.add(new JLabel(”部門:“,JLabel.CENTER));box4.add(部門);Box box6=Box.createHorizontalBox();box6.add(new JLabel(” “,JLabel.CENTER));Box box5=Box.createHorizontalBox();box5.add(new JLabel(”工資:“,JLabel.CENTER));box5.add(工資);Box boxH=Box.createVerticalBox();
boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box5);boxH.add(box6);boxH.add(box4);boxH.add(Box.createVerticalGlue());JPanel pCenter=new JPanel();pCenter.add(boxH);pCenter.setBackground(Color.yellow);setLayout(new BorderLayout());add(pCenter,BorderLayout.CENTER);JPanel pSouth=new JPanel();pSouth.add(錄入修改);pSouth.add(重置);pSouth.setBackground(Color.yellow);add(pSouth,BorderLayout.SOUTH);validate();
} public void actionPerformed(ActionEvent e){
if(e.getSource()==開始修改||e.getSource()==員工號)
{
String number=”“;
number=員工號.getText();
if(number.length()>0){ try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();} catch(Exception ee){ } if(基本信息表.containsKey(number)){ 錄入修改.setEnabled(true);Employee stu=(Employee)基本信息表.get(number);姓名.setText(stu.getName());部門.getSelectedItem();工資.setText(stu.getGrade());
if(stu.getSex().equals(”男“)){ 男.setSelected(true);} else { 女.setSelected(true);} }
else
{
錄入修改.setEnabled(false);String warning=”該員工號不存在!“;JOptionPane.showMessageDialog(this,warning,”警告
“,JOptionPane.WARNING_MESSAGE);員工號.setText(null);姓名.setText(null);部門.remove(部門.getSelectedItem());工資.setText(null);
} }
else { 錄入修改.setEnabled(false);String warning=”必須要輸入員工號!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);員工號.setText(null);姓名.setText(null);部門.remove(部門.getSelectedItem());工資.setText(null);}
}
else if(e.getSource()==錄入修改)
{
String number=”“;
number=員工號.getText();
if(number.length()>0)
{
try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();
inTwo.close();} catch(Exception ee){ } if(基本信息表.containsKey(number)){ String question=”該員工基本信息已存在,您想修改他(她)的基本信息嗎?“;JOptionPane.showMessageDialog(this,question,”警告“,JOptionPane.QUESTION_MESSAGE);String m=”基本信息將被修改!“;int ok=JOptionPane.showConfirmDialog(this,m,”確認“,JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE);if(ok==JOptionPane.YES_OPTION){ String name=姓名.getText();String discipling=部門.getSelectedItem();String grade=工資.getText();String sex=null;if(男.isSelected()){ sex=男.getText();} else { sex=女.getText();} Employee 員工=new Employee();
員工.setNumber(number);
員工.setName(name);
員工.setDiscipling(discipling);
員工.setGrade(grade);
員工.setSex(sex);try { outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne);基本信息表.put(number,員工);outTwo.writeObject(基本信息表);outTwo.close();outOne.close();
員工號.setText(null);姓名.setText(null);部門.remove(部門.getSelectedItem());工資.setText(null);} catch(Exception ee){ System.out.println(ee);} 錄入修改.setEnabled(false);} else if(ok==JOptionPane.NO_OPTION){ 錄入修改.setEnabled(true);} }
else
{ String warning=”該員工號沒有基本信息,不能修改!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);錄入修改.setEnabled(false);
}
}
else
{
String warning=”必須要輸入員工號!“;JOptionPane.showMessageDialog(this,warning,”警告
“,JOptionPane.WARNING_MESSAGE);
錄入修改.setEnabled(false);
}
}
if(e.getSource()==重置)
{
員工號.setText(null);
姓名.setText(null);
部門.remove(部門.getSelectedItem());
工資.setText(null);}}}
5、實現(xiàn)員工信息的查詢: import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class Inquest extends JDialog implements ActionListener { Hashtable 基本信息表=null;JTextField 員工號,姓名,部門,工資;JRadioButton 男,女;JButton 查詢;ButtonGroup group=null;FileInputStream inOne=null;ObjectInputStream inTwo=null;File file=null;public Inquest(JFrame f,File file){
super(f,”查詢對話框“,false);
this.file=file;
員工號=new JTextField(10);
查詢=new JButton(”查詢“);
員工號.addActionListener(this);
查詢.addActionListener(this);姓名=new JTextField(10);姓名.setEditable(false);部門=new JTextField(10);部門.setEditable(false);工資=new JTextField(10);工資.setEditable(false);男=new JRadioButton(”男“,false);女=new JRadioButton(”女“,false);group=new ButtonGroup();group.add(男);group.add(女);Box box1=Box.createHorizontalBox();box1.add(new JLabel(”輸入要查詢的員工號:“,JLabel.CENTER));box1.add(員工號);box1.add(查詢);Box box2=Box.createHorizontalBox();box2.add(new JLabel(”姓名:“,JLabel.CENTER));box2.add(姓名);Box box3=Box.createHorizontalBox();box3.add(new JLabel(”性別:“,JLabel.CENTER));box3.add(男);box3.add(女);Box box4=Box.createHorizontalBox();box4.add(new JLabel(”部門:“,JLabel.CENTER));box4.add(部門);Box box5=Box.createHorizontalBox();box5.add(new JLabel(”工資:“,JLabel.CENTER));box5.add(工資);Box boxH=Box.createVerticalBox();boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box5);boxH.add(box4);boxH.add(Box.createVerticalGlue());JPanel pCenter=new JPanel();pCenter.add(boxH);pCenter.setBackground(Color.green);Container con=getContentPane();con.add(pCenter,BorderLayout.CENTER);con.validate();setVisible(false);setBounds(100,200,360,270);
addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ setVisible(false);} });} public void actionPerformed(ActionEvent e){ 姓名.setText(null);部門.setText(null);工資.setText(null);if(e.getSource()==查詢||e.getSource()==員工號){ String number=”“;number=員工號.getText();if(number.length()>0){ try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();} catch(Exception ee){ } if(基本信息表.containsKey(number)){ Employee stu=(Employee)基本信息表.get(number);姓名.setText(stu.getName());部門.setText(stu.getDisciping());工資.setText(stu.getGrade());if(stu.getSex().equals(”男“)){ 男.setSelected(true);} else { 女.setSelected(true);} } else {
String warning=”該員工號不存在!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);}} else { String warning=”必須要輸入員工號!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);}}}}
6、實現(xiàn)員工信息的刪除: import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class Delete extends JPanel implements ActionListener {
Hashtable 基本信息表=null;
JTextField 員工號,姓名,部門,工資;
JRadioButton 男,女;
JButton 刪除;
ButtonGroup group=null;
FileInputStream inOne=null;
ObjectInputStream inTwo=null;
FileOutputStream outOne=null;
ObjectOutputStream outTwo=null;
File file=null;
public Delete(File file)
{
this.file=file;
員工號=new JTextField(10);
刪除=new JButton(”刪除“);
員工號.addActionListener(this);
刪除.addActionListener(this);
姓名=new JTextField(10);
姓名.setEditable(false);
部門=new JTextField(10);
部門.setEditable(false);
工資=new JTextField(10);
工資.setEditable(false);
男=new JRadioButton(”男“,false);
女=new JRadioButton(”女“,false);
group=new ButtonGroup();
group.add(男);
group.add(女);
Box box1=Box.createHorizontalBox();
box1.add(new JLabel(”輸入要刪除的學號:“,JLabel.CENTER));
box1.add(員工號);
box1.add(刪除);
Box box2=Box.createHorizontalBox();
box2.add(new JLabel(”姓名:“,JLabel.CENTER));
box2.add(姓名);
Box box3=Box.createHorizontalBox();
box3.add(new JLabel(”性別:“,JLabel.CENTER));
box3.add(男);
box3.add(女);
Box box4=Box.createHorizontalBox();
box4.add(new JLabel(”部門:“,JLabel.CENTER));
box4.add(部門);
Box box6=Box.createHorizontalBox();
box6.add(new JLabel(” “,JLabel.CENTER));
Box box5=Box.createHorizontalBox();
box5.add(new JLabel(”工資:“,JLabel.CENTER));
box5.add(工資);
Box boxH=Box.createVerticalBox();
boxH.add(box1);
boxH.add(box2);
boxH.add(box3);
boxH.add(box5);
boxH.add(box6);
boxH.add(box4);
boxH.add(Box.createVerticalGlue());
JPanel pCenter=new JPanel();
pCenter.add(boxH);
pCenter.setBackground(Color.yellow);
setLayout(new BorderLayout());
add(pCenter,BorderLayout.CENTER);
validate();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==刪除||e.getSource()==員工號)
{
String number=”“;
number=員工號.getText();if(number.length()>0){ try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();} catch(Exception ee){
} if(基本信息表.containsKey(number)){
Employee stu=(Employee)基本信息表.get(number);
姓名.setText(stu.getName());
部門.setText(stu.getDisciping());
工資.setText(stu.getGrade());if(stu.getSex().equals(”男“)){ 男.setSelected(true);} else { 女.setSelected(true);} String m=”確定要刪除該員工號及全部信息嗎?“;int ok=JOptionPane.showConfirmDialog(this,m,”確認
“,JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);if(ok==JOptionPane.YES_OPTION){ 基本信息表.remove(number);try { outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne);outTwo.writeObject(基本信息表);outTwo.close();outOne.close();員工號.setText(null);姓名.setText(null);部門.setText(null);工資.setText(null);} catch(Exception ee){ System.out.println(ee);} } else if(ok==JOptionPane.NO_OPTION){ 員工號.setText(null);姓名.setText(null);部門.setText(null);
工資.setText(null);} } else {
String warning=”該員工號不存在!“;JOptionPane.showMessageDialog(this,warning,”警告
“,JOptionPane.WARNING_MESSAGE);} } else {
String warning=”必須要輸入員工號!“;JOptionPane.showMessageDialog(this,warning,”警告",JOptionPane.WARNING_MESSAGE);}}}}
三、實驗結果體會
本次JAVA課程設計我所編寫的程序是員工信息管理系統(tǒng),程序中實現(xiàn)了對員工信息的添加、查詢、修改、刪除的功能,我是應用文件的形式完成的,其中還應用到了圖形用戶界面。我設計的程序簡單易懂,操作簡單,且 適用于不同的單位使用,只需按照自己的需要將所要錄入的信息名稱做添加或修改就可以實現(xiàn)。通過這次JAVA的程序設計,使我對JAVA有了更加深入的了解,鞏固了我對JAVA基礎知識的掌握。
第三篇:人員信息管理系統(tǒng) java課程設計
大學人員信息管理系統(tǒng) / 29
目錄
目錄.......................................................................................................................................1 設計任務書...............................................................................................................................2 課程設計任務...........................................................................................................................2 程序功能實現(xiàn):.......................................................................................................................3 1.程序主體............................................................................................................................3 2.流程圖:............................................................................................................................4 3.模塊說明............................................................................................................................4 3.1、主菜單四個選項......................................................................................................4 3.2、教師功能菜單..........................................................................................................5 3.3、學生功能菜單..........................................................................................................5 3.4、查找菜單..................................................................................................................6 4.源代碼及說明.................................................................................................................6 4.1、listStuTea 類............................................................................................................6 4.2、Menu 類................................................................................................................10 4.3、StudnTeach 類.......................................................................................................16 4.4、Student 類.............................................................................................................19 4.5、Teacher 類.............................................................................................................19 4.6、Person 類...............................................................................................................20 4.7、lkExecption類........................................................................................................21 4.8、MainStuTea類........................................................................................................23 5.操作方法和測試結果......................................................................................................24 5.1.1、教師信息顯示.....................................................................................................24 5.1.2、教師信息添加.....................................................................................................24 5.1.3、教師信息刪除.....................................................................................................25 5.1.4、教師信息查找.....................................................................................................26 5.2、學生菜單實現(xiàn)........................................................................................................28 6.設計體會..........................................................................................................................28
Java程序設計 大學人員信息管理系統(tǒng) / 29
設計任務書
問題描述:
編寫程序對大學里的人員進行管理。大學里的人員主要由學生、教師和在職進修教師(既是學生又是教師)組成,各類人員均有姓名、電話和住址等信息,學生另有所屬專業(yè)信息,教師另有所在系部、授課信息及工資信息,在職進修教師具備以上各類人員的信息。
要求:
1、設計Person類,保存各類人員均有的姓名、電話和住址等信息。
2、設計Student類或接口,繼承Person類,并添加所屬專業(yè)班級信息。
3、設計Teacher類接口,繼承Person類,并添加所在系部信息,授課信息及工資信息。
4、設計StudenTeacher類,繼承Student類接口和Teache類接口。其具備以上各類人員信息。
5、把創(chuàng)建的所有StudenTeacher對象按照其所屬系部依次組織在一個文件中方便查詢、修改、刪除及添加等操作。
6、對各類的對象進行信息輸入操作,輸入信息包括該類對象的所有信息。
7、對各類的對象進行輸出操作,顯示輸出該類對象的所有信息
課程設計任務及設計人
設計任務:
大學人員信息管理系統(tǒng) 課程目的:
1、復習、鞏固Java語言的基礎知識,進一步加深對Java語言的理解和掌握;
2、課程設計為學生提供了一個既動手又動腦,獨立實踐的機會,將課本上的理論知識和實際有機的結合起來,鍛煉學生的分析解決實際問題的能力。提高學生適應實際,實踐編程的能力;
Java程序設計 大學人員信息管理系統(tǒng) / 29
3、培養(yǎng)學生在項目開發(fā)中團隊合作精神、創(chuàng)新意識及能力。
課程要求:
1、對系統(tǒng)進行功能模塊分析、控制模塊分析正確,符合課題要求,實現(xiàn)相應功能;可以加以其他功能或修飾,使程序更加完善、合理;
2、系統(tǒng)設計要實用,編程簡練,可用,功能全面
3、說明書、流程圖要清楚
4、記錄設計情況(備查,也為編寫設計說明書作好準備);
5、要求采用模塊化程序設計方法,及鋸齒型書寫格式,要求上機調試通過和按設計報告格式。
6、本設計需要實現(xiàn)Java的面向對象開發(fā)運用到的有Java的接口,Java的繼承,Java的異常處理,Java類的封裝。能夠在異常輸入的情況下,能正確處理。最后得到正確結果。
程序功能實現(xiàn):一、二、三、四、五、六、按照課程的要求實現(xiàn)學生和教師的基本信息的錄入。把輸入的教師和學生信息顯示出來。
有姓名和專業(yè)兩種查找方式去分別把老師和學生的信息查找并且顯示出來。刪除選項可以刪除相應學生和老師信息。
用switch語句實現(xiàn)菜單功能,字符界面做到簡潔清晰
異常處理處理錯誤的輸入并且返回錯誤的提示,更正后填入正確數(shù)據(jù)。
1.程序主體
1、設計分析:
1.1、實體是實現(xiàn)程序思想的主要方式,首先應該分為學生和老師2個入口,分別做查詢和信息添加、顯示、刪除和查找的功能。
1.2、學生和老師的信息輸入考慮要求多名信息考慮用對象數(shù)組去實現(xiàn)。但是對象數(shù)組的刪除不是本學期的內容。且排序麻煩??紤]用其他方式實現(xiàn)信息錄入,查閱相關信息發(fā)現(xiàn)可以使用list對象實現(xiàn)信息錄入和刪除。
1.3、菜單使用switch語句實現(xiàn)菜單功能,菜單的相互調用實現(xiàn)功能的循環(huán)。
Java程序設計 大學人員信息管理系統(tǒng) / 29
2.流程圖:
3.模塊說明
3.1、主菜單四個選項
學生入口:
Java程序設計 大學人員信息管理系統(tǒng) / 29
這個模塊與學生功能模塊相連。
教師入口:
這個模塊與教師功能模塊相連
顯示全部信息:
這個模塊顯示所有的老師和學生信息
3.2、教師功能菜單
顯示教師信息:
這個模塊顯示輸入的教師信息,如果不存在提示輸入信息
添加教師信息:
這個模塊添加教師基本信息
刪除教師信息:
這個模塊按照序號刪除教師信息,如果不存在提示信息輸入
查找教師信息:
按照姓名和專業(yè)查找教師信息
返回上一級菜單: 返回主菜單
3.3、學生功能菜單
顯示學生信息:
這個模塊顯示輸入的教師信息,如果不存在提示輸入信息
添加學生信息:
這個模塊添加教師基本信息
刪除學生信息:
這個模塊按照序號刪除教師信息,如果不存在提示信息輸入
查找學生信息:
按照姓名和專業(yè)查找學生信息
返回上一級菜單: 返回主菜單
Java程序設計 大學人員信息管理系統(tǒng) / 29
3.4、查找菜單
按照姓名查找:
查找模塊,按照姓名查找,如果不存在則提示輸入信息。按照專業(yè)查找:
查找模塊,按照專業(yè)查找,如果不存在則提示輸入信息。
返回上一級菜單: 返回主菜單
4.源代碼及說明
4.1、listStuTea 類
用來實現(xiàn)學生和教師數(shù)據(jù)添加、刪除、查找的方法
import java.util.*;import lkExecption.LKExecption;public class listStuTea extends StudnTeach{
final int SIZE = 50;//最大學生和教師人數(shù)
listStuTea[] st = new listStuTea[SIZE];//學生和老師對象數(shù)組 Scanner into = new Scanner(System.in);List
} public void FindStuName(){
} public void FindTeaName(){
String tpname;boolean zy = true;StudnTeach point;System.out.println(“請輸入教師姓名:”);tpname = into.nextLine();for(int i = 0;i } point =list1.get(i);if(tpname.equals(point.name)){ } //break;System.out.println(“要查找的姓名存在”);{ showTea(i,point);zy = false;//標志位 } String tpname;boolean zy = true;StudnTeach point;System.out.println(“請輸入學生姓名:”);tpname = into.nextLine();for(int i = 0;i } if(zy)System.out.println(“沒有該學生”);if(getStuNumber()==0)System.out.println(“警告??!學生數(shù)據(jù)為空請?zhí)砑訑?shù)據(jù)”);point =list2.get(i);if(tpname.equals(point.name)){ } System.out.println(“要查找的姓名存在”);showStu(i,point);zy = false;Java程序設計 大學人員信息管理系統(tǒng) / 29 if(zy)System.out.println(“沒有該老師”);if(getTeaNumber()==0)System.out.println(“警告!!老師數(shù)據(jù)為空請?zhí)砑訑?shù)據(jù)”); } { public void FindteaSpec()String tpSpec;boolean zy = true;StudnTeach point;System.out.println(“請輸入教師專業(yè):”);tpSpec = into.nextLine();for(int i = 0;i } if(zy)System.out.println(“沒有該專業(yè)的老師”);if(getTeaNumber()==0)System.out.println(“警告?。±蠋煍?shù)據(jù)為空請?zhí)砑訑?shù)據(jù)”);point =list1.get(i);if(tpSpec.equals(point.getteaSpeciality())){ showTea(i,point);zy = false;//標志位 } } { public void FindstuSpec()String tpStu;boolean zy = true;StudnTeach point;System.out.println(“請輸入學生專業(yè):”);tpStu = into.nextLine();for(int i = 0;i } if(zy)System.out.println(“沒有選修該專業(yè)的學生”);point =list2.get(i);if(tpStu.equals(point.getstuSpeciality())){ showStu(i,point);zy = false;//標志位 } Java程序設計 大學人員信息管理系統(tǒng) / 29 if(getStuNumber()==0)System.out.println(“警告??!學生數(shù)據(jù)為空請?zhí)砑訑?shù)據(jù)”);} public void showStu(int n,StudnTeach point){ point=list2.get(n);System.out.println(“學生編號:”+n); System.out.println(“姓名:”+point.name+“ 性別:”+point.sex+“ 年齡:”+point.age); System.out.println(“電話:”+point.phone);System.out.println(“地址:”+point.address);System.out.println(“專業(yè):”+point.getstuSpeciality());System.out.println(“班級:”+point.getClassname());} public void showTea(int n,StudnTeach point){ point=list1.get(n);System.out.println(“教師編號:”+n); System.out.println(“姓名:”+point.name+“ 性別:”+point.sex+“ 年齡:”+point.age); System.out.println(“電話:”+point.phone);System.out.println(“地址:”+point.address);System.out.println(“專業(yè):”+point.getteaSpeciality());System.out.println(“工資:”+point.getPay());} public void addstu(int n)throws LKExecption { st[n] = new listStuTea();st[n].add();st[n].setClassname();st[n].setstuSpeciality();list2.add(st[n]);if(list2.size()!=0)System.out.println(“添加學生成功”); } public void addtea(int n)throws LKExecption { st[n] = new listStuTea();st[n].add();st[n].setteaSpeciality();Java程序設計 大學人員信息管理系統(tǒng) / 29 } st[n].setPay();list1.add(st[n]);if(list1.size()!=0)System.out.println(“添加教師成功”); } public void delTea(){ } public void delStu(){ } System.out.println(“請輸入被刪的學生編號”);int k =into.nextInt();if(list2.size()<=k||k<0)System.out.println(“刪除失敗!編號不存在請重新輸入!”);else { list2.remove(k);System.out.println(“刪除成功”);} System.out.println(“請輸入被刪的教師編號”);int k =into.nextInt();if(list1.size()<=k||k<0)System.out.println(“刪除失敗!編號不存在請重新輸入!”);else { list1.remove(k);System.out.println(“刪除成功”);} 4.2、Menu 類 字符菜單的實現(xiàn) import java.util.*;import lkExecption.LKExecption;public class Menu { Scanner into = new Scanner(System.in);int num = 0;List list=new ArrayList / 29 StudnTeach point = new listStuTea();//遍歷指針 public Menu()throws LKExecption{ } public int setIn(){ } void MainMenu()throws LKExecption//主菜單 { System.out.println(“================”);System.out.println(“1.教師入口”);System.out.println(“2.學生入口”);System.out.println(“3.顯示全部信息”);System.out.println(“4.退出管理”);switchMainMenu();} void FindMenu()//查找菜單 { } void MenuTea1_1()throws LKExecption//老師菜單 { System.out.println(“----------------”);System.out.println(“1.顯示教師信息”);System.out.println(“2.添加教師信息”);System.out.println(“3.刪除教師信息”);System.out.println(“4.查找教師信息”);System.out.println(“5.返回上一級菜單”);System.out.println(“----------------”);System.out.println(“1.按照姓名查找”);System.out.println(“2.按照專業(yè)查找”);System.out.println(“3.返回上一級菜單”);//switchMainMenu();int t;String tpNum = null;try{ } catch(NumberFormatException e){ } return t;t = new LKExecption().Num1Execption(tpNum);System.out.println(“請輸入選項”);tpNum = into.nextLine();t = Integer.parseInt(tpNum);MainMenu();Java程序設計 大學人員信息管理系統(tǒng) / 29 } switchMenuTea1_1();void MenuStu1_1()throws LKExecption//學生菜單 { } void switchFindStuMenu()throws LKExecption//查找學生菜單 { } void switchFindTeaMenu()throws LKExecption//查找教師菜單 { int t;t = setIn();switch(t){ case 1: int t;t = setIn();switch(t){ case 1: } point.FindStuName();FindMenu();switchFindStuMenu();break;point.FindstuSpec();FindMenu();switchFindStuMenu();break;MenuStu1_1();switchMenuStu1_1();break;System.out.println(“輸入錯誤請重新輸入”);switchFindStuMenu();System.out.println(“----------------”);System.out.println(“1.顯示學生信息”);System.out.println(“2.添加學生信息”);System.out.println(“3.刪除學生信息”);System.out.println(“4.查找學生信息”);System.out.println(“5.返回上一級菜單”);switchMenuStu1_1();case 2: case 3: default: Java程序設計 大學人員信息管理系統(tǒng) / 29 } void switchMainMenu()throws LKExecption//主菜單 { int t;t = setIn();switch(t){ case 1: MenuTea1_1();//老師顯示菜單 break;MenuStu1_1();//學生顯示菜單 break;if(point.getNumber()==0)System.out.println(“警告?。?shù)據(jù)為空請?zhí)砑訑?shù)據(jù)”);else{ } for(int i = 0;i point.showTea(i,point);point.showStu(i,point);for(int i = 0;i } point.FindteaSpec();FindMenu();switchFindTeaMenu();break;MenuTea1_1();switchMenuTea1_1();break;System.out.println(“輸入錯誤請重新輸入”);switchFindTeaMenu(); point.FindTeaName();FindMenu();switchFindTeaMenu();break;case 2: case 3: default: case 2: case 3: Java程序設計 大學人員信息管理系統(tǒng) / 29 } } MainMenu();break;System.out.println(“歡迎再次光臨!大學人員信息管理系統(tǒng)!”);break;System.out.println(“輸入錯誤請重新輸入”);switchMainMenu();case 4: default: void switchMenuTea1_1()throws LKExecption { System.out.println(“----------------”);int t;t = setIn();switch(t){ case 1: if(point.getTeaNumber()==0)System.out.println(“警告!!教師數(shù)據(jù)為空請?zhí)砑訑?shù)據(jù)”);for(int i = 0;i FindMenu();switchFindTeaMenu();break;MainMenu();break;case 2: case 3: case 4: case 5: Java程序設計 大學人員信息管理系統(tǒng) / 29 } } default: } System.out.println(“輸入錯誤請重新輸入”);switchMenuTea1_1();void switchMenuStu1_1()throws LKExecption { } System.out.println(“----------------”);int t;t = setIn();switch(t){ case 1: } if(point.getStuNumber()==0)System.out.println(“警告?。W生數(shù)據(jù)為空請?zhí)砑訑?shù)據(jù)”);for(int i = 0;i Java程序設計 大學人員信息管理系統(tǒng) / 29 4.3、StudnTeach 類 繼承于教師和學生接口實現(xiàn)它們抽象方法,且繼承人類屬性。 import java.util.*; import lkExecption.LKExecption;class StudnTeach extends Person implements Student,Teacher{ Scanner into = new Scanner(System.in);float pay = 0;//工資 String classname = null;//班級 String stuSpec = null;//老師專業(yè) String teaSpec = null;//學生專業(yè) void add()throws LKExecption { } public void addstu(int n)throws LKExecption{ } public void addtea(int n)throws LKExecption{ } public void setPay(){ String tpNum = null;try{ //add(); //setteaSpeciality();//setPay();//add(); //setClassname();//setstuSpeciality();setName();setSex();setAge();setPhone();System.out.println(“請輸入地址”);address = into.nextLine(); Java程序設計 大學人員信息管理系統(tǒng) / 29 } } System.out.println(“請輸入工資:”);tpNum = into.nextLine();pay = Integer.parseInt(tpNum);catch(NumberFormatException e){ } pay = new LKExecption().Num1Execption(tpNum);public float getPay(){ } public void setClassname(){ } public String getClassname(){ } public void setstuSpeciality(){ } public String getstuSpeciality(){ } return stuSpec; System.out.println(“請輸入專業(yè):”);stuSpec = into.nextLine(); return classname; System.out.println(“請輸入班級:”);classname = into.nextLine(); return pay;Java程序設計 大學人員信息管理系統(tǒng) public void setteaSpeciality(){ System.out.println(“請輸入專業(yè):”); teaSpec = into.nextLine(); } public String getteaSpeciality(){ return teaSpec;} public void show(boolean b, int num, StudnTeach point){ } public void showStu(int num, StudnTeach point){ } public void showTea(int num, StudnTeach point){ } public int getStuNumber(){ return 0;} public int getTeaNumber(){ return 0;} public int getNumber(){ return 0;} public void delStu(){ } Java程序設計 / 29 大學人員信息管理系統(tǒng) / 29 } public void FindteaSpec(){ } public void FindTeaName(){ } public void FindstuSpec(){ } public void FindStuName(){ } public void delTea(){ } 4.4、Student 類 接口、學生的抽象方法 public interface Student { } abstract void setstuSpeciality();abstract String getstuSpeciality();abstract void setClassname();abstract String getClassname(); 4.5、Teacher 類 接口、教師的抽象方法 public interface Teacher { Java程序設計 大學人員信息管理系統(tǒng) / 29 } abstract void setteaSpeciality();abstract String getteaSpeciality();abstract void setPay();abstract float getPay(); 4.6、Person 類 定義人類的基本屬性 import java.util.*;import lkExecption.LKExecption;public class Person { Scanner into = new Scanner(System.in);String name;int phone;String address;String sex;int age;public void setName(){ } public void setSex()throws LKExecption { } public void setAge(){ String tpAge = null;try{ System.out.println(“請輸入性別:”);sex = into.nextLine();if(sex.equals(“man”)||sex.equals(“woman”)){} else } catch(LKExecption lk){ } sex = new LKExecption().sexExecption(sex);throw new LKExecption();System.out.println(“請輸入姓名:”);name = into.nextLine();Java程序設計 大學人員信息管理系統(tǒng) / 29 } } try{ } catch(NumberFormatException e){ } age = new LKExecption().NumExecption(tpAge);System.out.println(“請輸入年齡:”);tpAge = into.nextLine();age = Integer.parseInt(tpAge);public void setPhone(){ } String tpNum = null;try{ } catch(NumberFormatException e){ } phone = new LKExecption().Num1Execption(tpNum);System.out.println(“請輸入電話號碼:”);tpNum = into.nextLine();phone = Integer.parseInt(tpNum); 4.7、lkExecption類 自定義異常類 package lkExecption;import java.util.Scanner;public class LKExecption extends Exception { Scanner into = new Scanner(System.in);public String sexExecption(String mg){ String str;boolean pd = true;do{ System.out.println(mg+“ 不是正確的性別,正確的性別為 man 或者 woman”);str = into.next();Java程序設計 大學人員信息管理系統(tǒng) / 29 } //System.out.println(mg+“ 驗證”); if(str.equals(“man”)||str.equals(“woman”)){ } }while(pd);return str;pd = false;public int NumExecption(String mg){ String num = null;int tpNum = 0;boolean pd = true;System.out.println(mg+“ 請正確的數(shù)字或者不在范圍內!請重新輸入!”);do{ try{ } catch(NumberFormatException e){ System.out.println(num+“ 請正確的數(shù)字或者不在范圍內!請重新輸num = into.nextLine();tpNum = Integer.parseInt(num);if(tpNum>120||tpNum<0)//范圍判斷 throw new NumberFormatException();else pd = false;入!”); } } public String charExecption(String mg){ final String[] str={“null”};//這里指定 規(guī)定字段 boolean pd = true;do{ System.out.println(mg+“ 不是正確字段,請輸入指定的字段”);mg = into.next();for(int i =0;i / 29 } } } }while(pd);return mg;public int Num1Execption(String mg){ } String num;int tpNum = 0;System.out.println(mg+“ 不是數(shù)字!請輸入數(shù)字!”);do{ try{ } catch(NumberFormatException e){ System.out.println(mg+“ 不是數(shù)字!請輸入數(shù)字!”);} num = into.nextLine();tpNum = Integer.parseInt(num);break;}while(true);return tpNum;4.8、MainStuTea類 主函數(shù)調用 import lkExecption.LKExecption;public class MainStuTea { } public static void main(String[] args)throws LKExecption { Menu lk = new Menu();} Java程序設計 大學人員信息管理系統(tǒng) / 29 5.操作方法和測試結果 5.1.1、教師信息顯示 選擇一進入教師信息入口 選擇一進入教師信息查看 因為我們沒有添加教師信息,所以他要求我們添加教師信息 5.1.2、教師信息添加 選擇二進入教師信息添加 Java程序設計 大學人員信息管理系統(tǒng) / 29 教師信息添加成功,如果不是指定字段輸入,出現(xiàn)異常則重新輸入 如下為添加的信息輸入顯示 5.1.3、教師信息刪除 Java程序設計 大學人員信息管理系統(tǒng) / 29 5.1.4、教師信息查找 專業(yè)查找 現(xiàn)在添加三個教師信息,如下顯示 首先使用專業(yè)查找,我們查找computer專業(yè)的 Java程序設計 大學人員信息管理系統(tǒng) / 29 查找其他math專業(yè) 查找不存在的專業(yè) 姓名查找 再添加一個同名的教師 查找lisi Java程序設計 大學人員信息管理系統(tǒng) / 29 5.2、學生菜單實現(xiàn) 學生信息采取同樣測試 6.設計體會 這個課程設計可以的設計心得,可謂十分波折。全部的源代碼都出自自己,其中的list排列我們還沒有學習。在這里要感謝google感謝baidu。沒有他們就沒有今天的代碼。當然網上只有相似的課題沒有相同的代碼,list排列經過自己一小時的摸索可以了解了部分的運用,首先寫了一個test類來測試這個用法 import java.util.ArrayList;import java.util.LinkedList;import java.util.Iterator;import java.util.List;import java.util.Scanner; public class test { public static void main(String[] args){ System.out.println(“開始:”);String a = “A”, b = “B”, c = “C”, d = “D”, e = “E”;List / 29 list.set(1, b);// 將索引位置為1的對象e修改為對象b list.add(2, c);// 將對象c添加到索引位置為2的位置 list.add(e);list.remove(1);Iterator System.out.println(“結束!”);} } 再想了一下把它添加進了listStuTea對象,全都的代碼完成用了一天的時間,在原來想起寫500多行的代碼幾乎是不可能的,但是在這個課程設計中實現(xiàn)了。這個課程設計真的使自己學到了很多的東西。在接口的使用還不是很好的和實際模型很多的結合起來,這是鍛煉較少的原因,前期的分析也幼稚的表現(xiàn)了自己在這方面的不足,在層次結構上浪費了較多的時間。總之在這方面的鍛煉還是比較少,我想不管是在以后布置下來的課程設計才去編寫代碼,這是不可行的,得在平時多多鍛煉。 Java程序設計 嵌入式課程設計報告冊 題目:學生信息管理系統(tǒng) 班級:移動三班 輔導老師:邱雅 一、軟件需求分析 1、可行性分析 (1)經濟可行性 ①:目前中國有越來越多的中小型企業(yè)在蓬勃發(fā)展,而現(xiàn)代化員工信息管理系統(tǒng)已經逐漸取代了傳統(tǒng)的人工信息管理,智能化的管理系統(tǒng)更具有高效性可行性,所以自能管理系統(tǒng)將會成為或正在成為現(xiàn)代化公司員工信息管理的有效方式; ②:這款學生信息管理系統(tǒng)的價格適合所有學校消費群體,將會有很大的應用空間,滿足各種學校學生管理的要求; ③:學生系信息管理系統(tǒng)的價格比相對于同類公司員工管理系統(tǒng)產品較低,同時本軟件的成本低于同類產品的平均水平,具有很大的利潤空間; ④:本系統(tǒng)的開發(fā)環(huán)境和軟件環(huán)境都是當前流行的產品,本系統(tǒng)的軟件需求都是基本的功能和應用,在現(xiàn)實中很容易實現(xiàn)。 (2)法律可行性 本軟件的開發(fā)采用C語言作為軟件的開發(fā)語言,沒有采用同類產的代碼,完全是自主開發(fā),并按照國際上軟件開發(fā)的相關規(guī)定來實現(xiàn)開發(fā)的; (3)技術可行性 本軟件開發(fā)系統(tǒng)采用linux開發(fā)平臺,具有很強的兼容性和擴展性,本軟件的占用的內存較小大部分的硬件處理系統(tǒng)都可以兼容,開發(fā)語言采用國際通用的C高級編程語言具有很高的維護可行性,經過綜合分析我認為現(xiàn)階段我方所擁有的資源和技術人員,在技術上完全可以實現(xiàn)這款軟件的開發(fā),并且能高質量,快速的完成這項工作。 2、用戶需求概述 用戶需要一個可以簡單的實現(xiàn)通訊錄功能的簡單通訊錄系統(tǒng),分別完成查詢,增加,修改,刪除的一些簡單的功能要求在完成所要求功能的前提下增強與用戶的互動,使軟件的可操作性增強,此外還可以志愿加入一些新的功能來進行對軟件的優(yōu)化在優(yōu)化的同時要注意軟件基本功能的保障。 二、軟件分析與設計 一.功能 1、創(chuàng)建班級 2、輸出學生信息 3、按照學號錄入學生成績 4、按照班級錄入學生成績 5、按照學號修改學生成績 6、按照班級修改學生成績 7、按照班級統(tǒng)計學生的總成績 8、按照學號查詢學生成績 9、按照班級輸出不及格學生名單及科目 10、按照班級輸出學生成績單 0、退出系統(tǒng) 二.功能模塊圖: 學生信息管理系統(tǒng)按照創(chuàng)建班級輸出學生信息按照學號錄入學生成績按照班級錄入學生成績按照學號修改學生成績按照班級修改學生成績按照班級統(tǒng)計學生的總成績按照學號查詢學生成績班級輸出不及格學生名單及科目按照班級輸出學生成績單按照班級輸出學生成績單 圖1 系統(tǒng)功能模塊圖 三、主要功能的實現(xiàn) 程序設計一般由兩部分組成 些數(shù)據(jù)結構具有同樣的重要性 保存等外更多的情況是查詢 1、學生信息管理 算法和數(shù)據(jù)結構,合理地選擇和實現(xiàn)一個數(shù)據(jù)結構和處理這,在學生信息管理程序中由于預計記錄數(shù)比較大能夠、刪除、。所以選用動態(tài)鏈表保存數(shù)據(jù)。 由于信息輸入量比較大,需要的存儲空間大,所以需要采用樹的雙親表示法進行信息存儲,為了方便采用以下定義。struct student { int num;char name[20];char sex[5];char class[30];int semester;char course[30];int score[3];struct student *next;}; struct list { int class;struct student *head;};2.main()主函數(shù) 程序采用模塊化設計,主函數(shù)是程序的入口各模塊獨立??煞謮K調 試均由主函數(shù)控制調用控制功能的實現(xiàn)通過循環(huán)執(zhí)行一個開關語句,該語句的條件值是通過 調用主菜單函數(shù)得到的返回值,根據(jù)該值 調用相應的各功能函數(shù)。同時設置一個斷點。即當返回值為一定條件時運行break 0;函數(shù)結束程序,以免造成死循環(huán)。根據(jù)菜單的提示進 行需要的操作。 圖2 主函數(shù)輸出界面 開始輸入數(shù)據(jù)否選擇是功能選擇退出系統(tǒng)結束 圖3 程序總體流程圖(1)主菜單 直接利用輸出函數(shù) printf 輸出字符串在屏幕上顯示一個菜單并顯示一個提示輸入 選項輸 入數(shù)字,將此數(shù)字作為菜單函數(shù)的返回值返回主函數(shù),主函數(shù)根據(jù) 這個數(shù)字調用相應的功 10-2 所示: 能函數(shù),制作簡便,操作簡單界面如圖 圖 4 主菜單界面 由于程序中很多地方用到了字符串輸入語句會造成下一個字符不能正確讀入為了 在程序調 按照所見即所得的方式直接 用執(zhí)行了各個函數(shù)后能夠清晰地看到菜單 并輸入新的選項。設計輸出函數(shù)輸出字符串達到菜單效果將精力主要放在程序功能的實現(xiàn)上利用 while循環(huán) 語句一直執(zhí)行 scanf(“%d”,t)語句。讓用戶輸入 數(shù)按照整形數(shù)據(jù)形式輸入然后字符串轉化 為數(shù)字返回主函數(shù)。既然是數(shù)字選項為什么不用整數(shù)格式輸入而要按字符串輸入。再將其 a 和 b 等 由于類轉換呢,如果按照整數(shù)格式輸入,當用戶輸入了非數(shù)字字 符。例如 表面上看是數(shù)字也應將其設為字符 型不同將導致程序出錯。所以對于不參與運算的數(shù)據(jù) 處理。例如電話號碼,千萬不要設為整數(shù)類型,程序設計技巧很多。所以讀者在編程調試中應注意并仔細體會。 (2)創(chuàng)建班級 輸入記錄時按照一條一行的格式輸入,每個數(shù)據(jù)之間用空格分隔,較為清晰且能直接 反映數(shù)據(jù)之間的關系,但由于 scanf 函數(shù)的特性,在輸入時數(shù)據(jù)用回車分隔也是可以的,但與 界面設計不吻合界面.由于記錄并不是一次性全部輸入而是隨時填加和刪除的,而預先開辟 n,然后用的空間數(shù)往往大于實際的記錄數(shù)。所以程序設計為首先輸入準備輸入的記錄數(shù) while循環(huán)語句循環(huán)輸信息。 圖5 創(chuàng)建列表頁面 輸出學生信息 該功能的實現(xiàn)主要是 是通過結構體數(shù)組中的鏈表指針進行輸出 圖6輸出全部信息 按照學號錄入學生成績 通過頭指針查找到需要錄入成績的節(jié)點,錄入成績。 按照班級錄入學生成績 按照學 號 修 改 學 生 成績 按照班級修改學生成績 按照班 級 統(tǒng) 計 學 生的總 成績 按照學 號 查 詢 學 生 成績 按照班級輸 出 不 及 格 學 生 名 單 及 科 目(11)按照班級輸出學生成績單 四、程序設計 (一)先進行人工檢查,即靜態(tài)檢查。 在寫好一個程序以后,不要匆匆忙忙上機,而應對程序進行人工檢查。這一步十分重要,它能發(fā)現(xiàn)程序設計人員由于疏忽而造成的多數(shù)錯誤。這一步往往容易被人忽視,總希望把一切都推給計算機去做,但這樣會多占用機器時間,作為一個程序人員應當養(yǎng)成嚴謹?shù)淖黠L,每一步都要嚴格把關,不把問題留給后面的工序。 為了更有效地進行人工檢查,所編的程序應力求做到以下幾點: ①應當采用結構化程序方法編程,以增加可讀性; ②盡可能多加注釋,以幫助理解每段程序的作用; ③在編寫復雜的程序時不要將全部語句都寫在main函數(shù)中,而要多利用函數(shù),用一個函數(shù)來實現(xiàn)一個單獨的功能。各函數(shù)之間除用參數(shù)傳遞數(shù)據(jù)外,盡量少出現(xiàn)耦合關系,這樣便于分別檢查和處理。 (二)在人工檢查無誤后,再上機調試。 通過上機發(fā)現(xiàn)錯誤稱為動態(tài)檢查。在編譯時會給出語法錯誤的信息,調試時可以根據(jù)提示信息具體找出程序中出錯之處并改正。應當注意的是有時提示出錯的地方并不是真正出錯的位置,如果在提示出錯的行找不到錯誤的話應當?shù)缴弦恍性僬?。有時提示出錯的類型并非絕對準確,由于出錯的情況繁多且各種錯誤互有關聯(lián),因此要善于分析,找出真正的錯誤,而不要只從字面意義上找出錯信息,鉆牛角尖。 如果系統(tǒng)提示的出錯信息很多,應當從上到下逐一改正。有時顯示出一大片出錯信息往往使人感到問題嚴重,無從下手。其實可能只有一二個錯誤。例如,對使用的變量未定義,編譯時就會對所有含該變量的語句發(fā)出出錯信息。這時只要加上一個變量定義,就所有錯誤都消除了。 (三)在改正語法錯誤(包括“錯誤(error)”和“警告(warning)”)后,程序經過連接(link)就得到可執(zhí)行的目標程序。運行程序,輸入程序所需數(shù)據(jù),就可得到運行結果。應當對運行結果作分析,看它是否符合要求。有的初學者看到運行結果就認為沒問題了,不作認真分析,這是危險的。 有時,數(shù)據(jù)比較復雜,難以立即判斷結果是否正確??梢允孪瓤紤]好一批“試驗數(shù)據(jù)”,輸入這些數(shù)據(jù)可以很容易判斷結果正確與否。例如解方程。事實上,當程序復雜時很難把所有的可能情況全部都試到,選擇典型的臨界數(shù)據(jù)作試驗即可。 (四)運行結果不對,大多屬于邏輯錯誤。對這類錯誤往往需要仔細檢查和分析才能發(fā)現(xiàn)。可以采用以下辦法: 1.將程序與流程圖仔細對照,如果流程圖是正確的,程序寫錯了,是很容易發(fā)現(xiàn)的。例如,復合語句忘記寫花括弧,只要一對照流程圖就能很快發(fā)現(xiàn)。 2.如果實在找不到錯誤,可以采用“分段檢查”的方法。在程序不同的位置設幾個printf函數(shù)語句,輸出有關變量的值,逐段往下檢查。直到找到在某一段中數(shù)據(jù)不對為止。這時就已經把錯誤局限在這一段中了。不斷減小“查錯區(qū)”,就能發(fā)現(xiàn)錯誤所在。 3.也可以用“條件編譯”命令進行程序調試(在程序調試階段,若干printf函數(shù)語句就要進行編譯并執(zhí)行。當調試完畢,這些語句不用再編譯了,也不再被執(zhí)行了)。這種方法可以不必一一去掉printf函數(shù)語句,以提高效率。 4.如果在程序中沒有發(fā)現(xiàn)問題,就要檢查流程圖有無錯誤,即算法有無問題。如有則改正之,接著修改程序。 5.有的系統(tǒng)還提供debug(調試)工具,跟蹤程序并給出相應信息,使用更為方便,請查閱有關手冊。 總之,程序調試是一項細致深入的工作,需要下功夫,動腦子,善于積累經驗。在程序調試過程中往往反映出一個人的水平,經驗和態(tài)度。希望大家給以足夠的重視。上機調試程序的目的決不是為了“驗證程序的正確”,而是“掌握調試的方法和技術”,要學會自己找問題,這樣慢慢自己就會寫出錯誤較少的實用程序。 五、代碼的實現(xiàn) #include #define MAXSIZE 100 struct student { int num;char name[20];char sex[5];char class[30];int semester;char course[30];int score[3];struct student *next;}; struct list { int class;struct student *head;}; void CreatClassStudent(struct list Class[],int n)//創(chuàng)建班級 { char ch;int i;i = 1;struct student *head,*p,*q;head =(struct student *)malloc(sizeof(struct student));q = p = head;while(i <= n){ printf(“輸入第%d個班級的信息:n”,i); struct student *head,*p,*q; head =(struct student *)malloc(sizeof(struct student)); Class[i].head = p = head; while(1) { printf(“輸入學號:n”); scanf(“%d”,&head->num); printf(“輸入姓名:n”); scanf(“%s”,head->name); head->score[0] = 0; head->score[1] = 0; head->score[2] = 0; getchar(); printf(“是否繼續(xù)?n”); scanf(“%c”,&ch); if(ch == 'n') break; p =(struct student *)malloc(sizeof(struct student)); head->next = p; head = p; } head->next = NULL; i++;} } void print(struct list Class[],int n)//輸出學生信息 按照班級輸出 { struct student *p;int i=1; while(i <= n){ p = Class[i].head; printf(“移動%d班學生信息n”,i); while(p!= NULL) { printf(“%dt”,p->num); printf(“%st”,p->name); printf(“%dt%dt%d”,p->score[0],p->score[1],p->score[2]); p = p->next; printf(“n”); } printf(“n”); i++;} } void StudentId(struct list Class[],int n)//按照學號輸入成績 { int score1,score2,score3;int t;int key;printf(“輸入學號:”); scanf(“%d”,&key); int i;i = 1;struct student *p; while(i <= n){ p = Class[i].head; while(p!= NULL) { if(p->num == key) { printf(“輸入3門成績:”); scanf(“%d%d%d”,&score1,&score2,&score3); p->score[0] = score1; p->score[1] = score2; p->score[2] = score3; t = 0; } p = p->next; } i++;} if(t!= 0) printf(“該學號不存在!n”);} void ClassId(struct list Class[],int n){ int i = 1;struct student *p;while(i <= n){ printf(“錄入%d班級的成績n”,i); p = Class[i].head; while(p!= NULL) { printf(“輸入學號為%d的學生成績:”,p->num); scanf(“%d%d%d”,&p->score[0],&p->score[1],&p->score[2]); p = p->next; } printf(“成績錄入結束n”); i++;} } void StudentNumberChange(struct list Class[],int n){ int i = 1;int key;int score1,score2,score3;int t; printf(“請輸入學號:”);scanf(“%d”,&key);struct student *p;while(i <= n){ p = Class[i].head; while(p!= NULL) { if(p->num == key) { printf(“請輸入新的成績:”); scanf(“%d%d%d”,&score1,&score2,&score3); p->score[0] = score1; p->score[1] = score2; p->score[2] = score3; t = 0; } p = p->next; } i++;} if(t!= 0){ printf(“該學號不存在!n”);} } void ClassNumChange(struct list Class[],int n) { int class;int score1,score2,score3;char ch;struct student *p;printf(“輸入需要修改信息的班級號%d----%d:”,1,n);scanf(“%d”,&class); p = Class[class].head; while(p!= NULL) { printf(“是否要修改%d的成績:”,p->num); getchar(); scanf(“%c”,&ch); if(ch == 'n') { p = p->next; continue; } printf(“輸入新的成績:”); scanf(“%d%d%d”,&score1,&score2,&score3); p->score[0] = score1; p->score[1] = score2; p->score[2] = score3; p = p->next; } } void TotalGrade(struct list Class[],int n){ int sum = 0;int average;int k;int class;printf(“輸入班級號%d------%dn”,1,n);scanf(“%d”,&class);struct student *p;p = Class[class].head;while(p!= NULL){ sum = p->score[0] + p->score[1] + p->score[2]; average = sum / 3; printf(“%d的總成績是%d平均成績是%dn”,p->num,sum,average); p = p->next; } } void QueryResults(struct list Class[],int n){ int i = 1;int key;int t;struct student *p;printf(“請輸入學號:”);scanf(“%d”,&key);while(i <= n){ p = Class[i].head; while(p!= NULL) { if(p->num == key) { printf(“學號為%d的學生[移動%d班]”,p->num,i); printf(“%dt%dt%dn”,p->score[0],p->score[1],p->score[2]); t = 0; break; } p = p->next; } if(t!= 0) { printf(“該學生不存在于%d班n”,i); } i++;} } void NotPass(struct list Class[],int n){ int class; printf(“請輸入班級號%d---%d:”,1,n);scanf(“%d”,&class);struct student *p;p = Class[class].head;printf(“%d班不及格名單n”,class);while(p!= NULL){ if(p->score[0] < 60 || p->score[1] < 60 || p->score[2] < 60) { printf(“%dt%st”,p->num,p->name); if(p->score[0] < 60) printf(“語文t%dt不及格t”,p->score[0]); if(p->score[1] < 60) printf(“線性代數(shù)t%dt不及格t”,p->score[1]); if(p->score[2]<60) printf(“英語t%dt不及格t”,p->score[2]); printf(“n”); } p = p->next;} } void Transcript(struct list Class[],int n){ int class;printf(“請輸入班級號:”);scanf(“%d”,&class);struct student *p;p = Class[class].head;while(p!= NULL){ printf(“%dt%st%dt%dt%dn”,p->num,p->name,p->score[0],p->score[1],p->score[2]); p = p->next;} } void menu(){ printf(“ 0、退出系統(tǒng)n”);printf(“ 1、創(chuàng)建班級n”);printf(“ 2、輸出學生信息n”);printf(“ 3、按照學號錄入學生成績n”);printf(“ 4、按照班級錄入學生成績n”);printf(“ 5、按照學號修改學生成績n”);printf(“ 6、按照班級修改學生成績n”);printf(“ 7、按照班級統(tǒng)計學生的總成績n”);printf(“ 8、按照學號查詢學生成績n”);printf(“ 9、按照班級輸出不及格學生名單及科目n”);printf(“ 10、按照班級輸出學生成績單n”);} int main(){ int n;int i;int operation; struct list Class[MAXSIZE];Class[0].head = NULL;Class[0].class =-1; printf(“輸入班級數(shù)量:n”);scanf(“%d”,&n);while(1){ menu(); printf(“請選擇操作:”); scanf(“%d”,&operation); switch(operation) { case 1:CreatClassStudent(Class,n); break; case 2:print(Class,n); break; case 3:StudentId(Class,n); break; case 4:ClassId(Class,n); break; case 5:StudentNumberChange(Class,n); break; case 6:ClassNumChange(Class,n); break; case 7:TotalGrade(Class,n); break; case 8: QueryResults(Class,n); break; case 9:NotPass(Class,n); break; case 10:Transcript(Class,n); break; case 0:exit(-1); } } return 0; } 六、參考文獻 1、《嵌入式linux上的C語言編程實踐》 北京亞嵌教育研究中心、韓超 電子工業(yè)出版社 2、《linux 下C語言應用編程》 楊鑄 北京航空航天大學出版社 3、《linux 高級程序設計》 楊宗德 鄧玉春 人民郵電出版社 七、開發(fā)環(huán)境 開發(fā)環(huán)境linux操作系統(tǒng) GNU Compiler Collection程序生成工具軟件 ******11111111111111 目 錄 摘 要………………………………………………………………………5 前 言………………………………………………………………………6 第一章 為什么要開發(fā)一個學生檔案管理系統(tǒng)……………………………7 1.1 在教育中用計算機管理學生檔案的意義.………………………7 1.2為將來學校上網做好準備……………………..…………………7 1.3 學生檔案的設計分析……………………………………………7 第二章 編程環(huán)境的選擇.…………………………………………………9 2.1開發(fā)工具的介紹.…………………………………………………9 2.3關系型數(shù)據(jù)庫……………………………………………………11 2.4 數(shù)據(jù)庫的概念……………………………………………………12 2.5新建一個數(shù)據(jù)庫.…………………………………………………12 第三章 需求分析………….………………………………………………14 3.1 可行性研究………………………………………………………14 3.2 需求分析…………………………………………………………15 第四章 系統(tǒng)總體規(guī)劃..……………………………………………………17 4.1軟件模塊結構設計………………………………………………17 4.2數(shù)據(jù)庫設計...……………………………………………………18 第五章 系統(tǒng)具體實………………………………………………………19 5.1 主界面………………………………………………………………19 5.2數(shù)據(jù)庫的實現(xiàn)…………………………………………………………21 5.3 ACCESS與VB的連接………………………………………………22 第六章 測試 …………………………………………………………………24 6.1程序運行界面 如下圖………………………………………………24 6.2輸入用戶名和密碼界面………………………………………………26 ******11111111111111 6.3系統(tǒng)所具備的功能顯示界面…………………………………………26 6.4系統(tǒng)管理功能…………………………………………………………27 6.5班級系統(tǒng)………………………………………………………………30 6.6 檔案管理……………………………..………………………………32 6.7課程管理………………………………………………………………33 6.8成績管理………………………………………………………………34 結束語…………………………………………………………………………36 致 謝……………………………………………………………………….37 參考文獻………………………………………………………………………38 摘 要 學生檔案管理系統(tǒng)是典型的信息管理系統(tǒng)(MIS),其開發(fā)主要包括后臺數(shù)據(jù)庫的建立和維護以及前端應用程序的開發(fā)兩個方面。對于前者要求建立起數(shù)據(jù)一致性和完整性強、數(shù)據(jù)安全性好的庫。而對于后者則要求應用程序功能完備,易使用等特點。 經過分析,我們使用 MICROSOFT公司的 VISUAL BASIC開發(fā)工具,利用其提供的各種面向對象的開發(fā)工具,尤其是數(shù)據(jù)窗口這一能方便而簡潔操縱數(shù)據(jù)庫的智能化對象,首先在短時間內建立系統(tǒng)應用原型,然后,對初始原型系統(tǒng)進行需求迭代,不斷修正和改進,直到形成用戶滿意的可行系統(tǒng)。 關鍵字:控件、窗體、域。 摘要:隨著中國教育事業(yè)的迅速發(fā)展,學生的數(shù)量日益增加,學生的信息管理也變得日益繁重和復雜。如果想要提高學生信息管理的效率和質量,以適應教育事業(yè)的發(fā)展,我們就必須對學校內部進行改革和加強學校管理。借助現(xiàn)代信息技術的管理方法,建立學生信息管理系統(tǒng)勢在必行。本文通過對一個學生信息管理系統(tǒng)的開發(fā)實例,對基于Visual Basic 6.0和SQL 2000的學生信息管理系統(tǒng)進行了分析和研究。 文章首先分析了管理信息系統(tǒng)的概念和特點,介紹了開發(fā)工具Visual Basic 6.0和SQL ******11111111111111 2000,然后對學生信息管理信息系統(tǒng)進行了需求分析、概要設計和詳細設計,在概要設計中進行了數(shù)據(jù)庫的設計,在詳細設計中討論了系統(tǒng)的實現(xiàn)方法和編碼。之后對系統(tǒng)測試進行了分析和討論,功能模塊的測試中把登錄服務器模塊的測試和其他功能模塊的測試分開進行,介紹了一種實用的測試方法。最后是介紹系統(tǒng)的總體測試和系統(tǒng)發(fā)布。本文所論述的學生信息管理系統(tǒng)對實現(xiàn)初中、高中和大中專院校的學生信息管理的現(xiàn)代化、科學化具有重要意義。 關鍵詞:學生信息管理系統(tǒng);Visual Basic 6.0;SQL 2000 ;C/S模式 Information Management system of student Based on C/S model Abstrac: With the quick development of Chinese education, the student’s quantity increasingly increaseses, the student’s status management also becomes increasingly heavy and complicated.If want to improve the efficiency and quality of the student’s status management and adapt the development of the education business, we must to reform the inner school and enhance the school management.So ask for the management method of the modern information technique and eatablish the student’s status management system is imperative.This text analysis and study the student’s status management information system which based on Visual Basic 6.0 and SQL 2000 across an example of student’s status management imformation system.Firstly, the article analyzed the management information system’s concept and characteristics and introduced the development tools Visual Basic 6.0 and SQL 2000.Then it carried through the need analysis, general design and detailed design for the student’s student status information system.It designed the database in the general design and discussed the realize methord and coding of the system in the detailed design.Then it analysised and dicussed to the system test.It classified the test of registering server mold and the test of other founction mold in the function mold test and introduced a practical test method.Finally it introduced the total test and release of the system.The student’s student status management this text discussing have important meaning to realize the student’s student status manage of junior and senior high school.Keywords: Students status management system;Visual Basic 6.0;SQL 2000;C/S model 目 錄 前言 1 1 系統(tǒng)開發(fā)環(huán)境及其工具介紹 2 ******11111111111111 1.1 系統(tǒng)簡介 2 1.1.1 管理信息系統(tǒng)的概述 2 1.1.4 學生學籍管理信息系統(tǒng)概述 2 1.2 系統(tǒng)開發(fā)工具及開發(fā)環(huán)境概述 3 1.2.1 Visual Basic 6.0 的介紹 3 1.2.2 ADO數(shù)據(jù)訪問技術 3 1.2.3 Microsoft SQL Server簡介 8 需求分析 11 2.1 系統(tǒng)需求 11 2.1.1 編寫目的 11 2.1.2 背景及范圍 11 2.2 任務概要 11 2.2.1 目標 11 2.2.2 運行環(huán)境 11 2.2.3 條件與限制 11 3 系統(tǒng)總體分析與設計 12 3.1 系統(tǒng)分析 12 3.1.1 系統(tǒng)功能的分析 12 3.1.2 系統(tǒng)功能模塊設計 12 3.2 數(shù)據(jù)庫設計 13 3.2.1 數(shù)據(jù)庫需求分析 13 3.2.2 數(shù)據(jù)庫概念結構設計 13 3.2.3 數(shù)據(jù)庫邏輯結構設計 15 詳細設計 18 4.1 學生管理系統(tǒng)主窗體的創(chuàng)建 18 4.1.1 創(chuàng)建工程項目——Student_MIS 18 4.1.2 創(chuàng)建學生信息管理系統(tǒng)的主窗體 18 4.1.3 創(chuàng)建主窗體的菜單 20 4.1.4 創(chuàng)建公用模塊 20 4.2 系統(tǒng)用戶管理模塊的創(chuàng)建 21 4.2.1 用戶登錄窗體的創(chuàng)建 21 4.2.2 添加用戶窗體的創(chuàng)建 23 4.2.3 修改用戶密碼窗體的創(chuàng)建 24 4.3 學籍管理模塊的創(chuàng)建 25 ******11111111111111 4.3.1 添加學籍信息窗體的創(chuàng)建 25 4.3.2 修改學籍信息窗體的創(chuàng)建 27 4.3.3 查詢學籍信息窗體的創(chuàng)建 29 4.4 班級管理模塊的創(chuàng)建 30 4.4.1 添加班級信息窗體的創(chuàng)建 30 4.4.2 修改班級信息窗體的創(chuàng)建 32 4.5 課程設置模塊的創(chuàng)建 32 4.5.1 添加課程信息窗體的創(chuàng)建 32 4.5.2 修改課程信息窗體的創(chuàng)建 33 4.5.3 設置年級課程窗體的創(chuàng)建 34 4.6 成績管理模塊的創(chuàng)建 35 4.6.1 添加成績信息窗體的創(chuàng)建 36 4.6.2 修改成績信息窗體的創(chuàng)建 37 4.6.3 查詢成績信息窗體的創(chuàng)建 37 運行與測試 39 5.1 登錄服務器模塊測試 39 5.2 其他模塊的測試 39 5.3 幫助文檔的設計 39 5.4 系統(tǒng)測試和打包發(fā)行 40 結束語 41 參考文獻 42 致謝 43 附錄 44 前言 管理信息系統(tǒng)就是我們常說的MIS(Management Information System),在強調管理,強調信息的現(xiàn)代社會中它變得越來越普及。MIS是一門新的學科,它跨越了若干個領域,比如管理科學、系統(tǒng)科學,運籌學、統(tǒng)計學以及計算機科學。[1]在這些學科的基礎上,形成信息收集和加工的方法,從而形成一個縱橫交織的系統(tǒng)。 管理信息系統(tǒng)起初應用于最基礎的工作,如打印報表、計算工資、人事管理等,進而發(fā)展到企業(yè)財務管理、庫存管理等單項業(yè)務管理,這屬于電子數(shù)據(jù)處理(EDP,Electronic Data Processing)系統(tǒng)。當建立了企業(yè)數(shù)據(jù)庫,有了計算機網絡從而達到數(shù)據(jù)共享后,從系統(tǒng)觀點出發(fā),實施全局規(guī)劃和設計信息系統(tǒng)時,就達到管理信息系統(tǒng)的階段。隨著計算機技術的進步和人們對系統(tǒng)的需求進一步提高,人們更加強調管理信息系統(tǒng)能否支持企業(yè)高層 ******11111111111111 領導的決策這一功能,更側重于企業(yè)外部信息的收集、綜合數(shù)據(jù)庫、模型庫、方法庫和其他人工智能工具能否直接面向決策者,這是決策支持系統(tǒng)(DSS,Decision Support System)的任務。 我國20世紀70年代末有少數(shù)企業(yè)開始MIS的局部應用?!傲濉逼陂g,選擇一些大型企業(yè)進行MIS的開發(fā)試點,其中首都鋼鐵公司、北京第一棉紡廠、湖北第二汽車制造廠、寧江機床廠等取得了經驗。20世紀80年代中后期,在全國性的計算機應用熱潮中,許多企業(yè)紛紛從財務管理、人事管理等單項應用入手,嘗試建立MIS。許多企業(yè),如北京內燃機廠、北京電視機廠、沈陽鼓風機廠、天津渤海無線電廠的MIS初具規(guī)模,建立了覆蓋全廠的計算機網絡。“八五”期間,企業(yè)逐步走向市場,MIS建設的目標和需求日益明確。一些企業(yè)的系統(tǒng),如北京第一機床廠、山西經緯紡織機械廠、成都飛機制造公司等都達到了很高的水平,與企業(yè)中其他系統(tǒng)集成,形成了CIMS。目前,我國MIS已經有了相當?shù)钠占奥?,幾乎覆蓋了各個行業(yè)及各個部門。 在學校,尤其是在各大高校,對于學生的管理是相當重要,而且也是相當麻煩的,它是學校管理中最基本的一項常規(guī)性工作。而長期以來,學校管理都是依賴人工來進行的,面對如此眾多的學生信息,其工作量是相當相當巨大的。這樣不僅僅浪費了大量的人力物力,而且由于人工管理存在著大量的不可預知性,造成學生信息管理的一些不規(guī)范,使得信息 管理陷入“事倍功半”的地步。 開發(fā)本系統(tǒng)就是為了解決學校在管理中的一些不規(guī)范,使學生信息的管理向著規(guī)范化、簡 單化、有效化的方向發(fā)展。[2] 根據(jù)學生信息管理系統(tǒng)的基本流程和高校學生信息管理的實際要求,本系統(tǒng)需要實現(xiàn)以下 功能: (1)學生基本信息的錄入,基本信息包括學生的基本情況、所在班級、所學課程和成績等; (2)要求在系統(tǒng)中能夠對學生信息精心靈活的瀏覽和查詢;(3)要求在系統(tǒng)中能夠對班級信息進行輸入、查詢和修改等;(4)要求能夠對學校基本課程信息錄入、修改和設置等;(5)要求能夠對學生成績信息進行輸入、修改和查詢等;(6)本系統(tǒng)可以提供給管理員或者學生本人使用。對學生類用 ******11111111111111 6.3系統(tǒng)所具備的功能顯示界面 如圖 ******11111111111111 6.4系統(tǒng)管理功能 如圖 ******11111111111111 6.5班級系統(tǒng) . 6.5.1 班級添加 ******11111111111111 6.6 檔案管理 ******11111111111111 6.6.1 檔案添加 6.6.2 檔案查詢 ******11111111111111 6.7課程管理 6.7.1課程設置 ******11111111111111 6.7.2 課程添加 ******11111111111111 四、設計結果分析 (1)系統(tǒng)所具備的功能顯示界面 ******11111111111111 ******11111111111111 ******11111111111111(2)結果分析 1、第一步能很好的運行,初始密碼就是用戶名,只有密碼正確才會進入系統(tǒng)。 2、點擊在用戶界面可以加入新的用戶和刪除以前的用戶,也可以對密碼進行修改。 3、在班級管理系統(tǒng)中各個功能都可以實現(xiàn),可以顯示當前系統(tǒng)中所有的班級信息。 4、課程設計一欄中可以添加系統(tǒng)中已經存儲的課程和手動的輸入課程,可以對課程的信息進行相應的操作。 5、成績管理功能可以正常的運行,每一個功能都是單獨的實現(xiàn),不會產生混淆。 6、學籍管理是比較難的一部分,在運行了幾次才讓各個功能更能很好的實現(xiàn),能夠很好的將學生的信息存到數(shù)據(jù)庫中。而且可以對其中的數(shù)據(jù)鏡像相應的操作 ******11111111111111 五、個人小結 雖然Vb課結束了,但是自己感覺好像沒有學到太多的東西,可能是上機的時間比較少吧,還有就是對待這么課的心態(tài)不同和老師要求的不嚴的緣故。 通過寫完這個學生管理系統(tǒng),感到收獲很多,不動手就不知道自己的在哪里不懂,在這次作業(yè)的完成中遇到了許多自己無法調試的錯誤,只能請教已經學過了的同學,感覺到自己的知識的缺乏。雖然最后自己把所有的功能都按照預期的編好了,也可以很好的運行,但是其中也有許多的不足,對圖像的不理解和不會很好的使用是自己的程序讓人感到很呆板,這是需要改進的一大部分。 跟著老師學習了一個學期,自己感覺到學會一些簡單的程序編寫,至少認識了vb的作用性,這次的大作業(yè),我只能把每一功能當做一個小的程序來編寫,不會很好的聯(lián)系所用的功能,在編寫較長的運算時,不能夠寫好,只能對著書本一個的一個算法嘗試,不能脫離課本,有時看著課本也不知道怎么寫。 當自己寫到難的時候,有點想放棄,感覺太難了,就把自己的程序給別人修改,加工。對其中的控件和文件的概念不是很熟 ******11111111111111 悉,還有就是數(shù)據(jù)庫,以前沒有接觸,雖然老師在最后一節(jié)課的時候是一步一步的在課堂上講解的,但是自己操作時,有時不知道在哪個地方編輯。 編完這個程序最大的收獲就是將自己不同的和學到的知識重新的聯(lián)系起來了,又重新的復習了所學的內容,對不同的算法有了新的了解。常用控件和系統(tǒng)對象有了初步的認識,學會利用數(shù)據(jù)庫來存儲信息,對上課不知道的多文檔界面,在試著編寫的過程中有了較大的認識。 總的來說,這一個學期并沒有浪費,可以在別人的幫助下做完這個學生管理系統(tǒng),感到有種成就感,雖然不是很完美,至少自己能夠讓這個系統(tǒng)完整的運行,其中不足之處,就只好留在自第四篇:嵌入式課程設計 學生信息管理系統(tǒng)
第五篇:VB課程設計--學生信息管理系統(tǒng)