第一篇:軟件工程課程設(shè)計之——學(xué)生成績管理系統(tǒng)
1.設(shè)計背景
隨著科學(xué)技術(shù)的不斷提高,計算機(jī)科學(xué)技術(shù)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識,它已進(jìn)入人類社會的各個領(lǐng)域并發(fā)揮著越來越重要的作用。現(xiàn)在我國的教育機(jī)構(gòu)對學(xué)生成績管理還普遍停留在紙介質(zhì)的基礎(chǔ)上,這樣的機(jī)制已經(jīng)不能適應(yīng)時代的發(fā)展,因為它浪費(fèi)了許多人力和物力,在信息時代,這種傳統(tǒng)的管理方法必然被計算機(jī)為基礎(chǔ)的信息管理所取代。
通過調(diào)查,要求系統(tǒng)具有權(quán)限設(shè)置功能的登錄模塊,學(xué)生可以實(shí)現(xiàn)成績信息查詢功能。教務(wù)管理人員能夠?qū)崿F(xiàn)注冊新用戶,學(xué)生成績信息的查詢、錄入、刪除、修改、瀏覽、統(tǒng)計等。同時學(xué)院在教學(xué)這一部分主要是由教務(wù)處對課程、對學(xué)生、對學(xué)生成績進(jìn)行合理地安排以及統(tǒng)籌計劃,以及讓教務(wù)處在最短的時間段把學(xué)生的成績核算出來,提高教務(wù)處的辦事效率。同時,能夠隨時對學(xué)生、學(xué)生成績進(jìn)行各種查詢和統(tǒng)計,以及很好地對系統(tǒng)進(jìn)行維護(hù)。此種學(xué)生成績管理系統(tǒng)提供了強(qiáng)大的學(xué)生成績管理管理功能,方便了系統(tǒng)管理員對學(xué)生成績等信息的添加、修改,打印等操作,同時一樣方面的學(xué)生可以對自己各科成績查詢,學(xué)習(xí)的交流,滿足了時代的需要。
2.設(shè)計方案
2.1總體設(shè)計
本系統(tǒng)是將現(xiàn)代化的計算機(jī)技術(shù)和傳統(tǒng)的教學(xué)、教務(wù)工作相結(jié)合,按照學(xué)院的工作流程設(shè)計完成的。為了使系統(tǒng)在學(xué)院的管理中發(fā)揮更大的作用,實(shí)現(xiàn)工作過程的計算機(jī)化,提高工作效率和工作質(zhì)量,現(xiàn)提出如下的系統(tǒng)開發(fā)目標(biāo): 1.系統(tǒng)應(yīng)具有實(shí)用性、可靠性和適用性,同時注意到先進(jìn)性。2.對各個數(shù)據(jù)庫進(jìn)行動態(tài)管理,防止混亂。
3.能夠按照用戶選擇的不同的條件進(jìn)行簡單查詢和復(fù)合查詢。4.能夠?qū)Σ樵兘Y(jié)果進(jìn)行分類匯總,實(shí)現(xiàn)報表打印。5.注意數(shù)據(jù)的安全性,具有數(shù)據(jù)備份和恢復(fù)的功能。6.方便用戶的操作,盡量減少用戶的操作。
2.2模塊設(shè)計
本系統(tǒng)主要實(shí)現(xiàn)以下功能:①添加學(xué)生成績; ②刪除學(xué)生成績; ③查詢學(xué)生成績;④班級創(chuàng)建或刪除; ⑤科目調(diào)整和刪除 具體要求為:
a.添加學(xué)生成績:輸入要添加的學(xué)生的學(xué)號、姓名、課程成績等信息,且學(xué)號字段不能為空,確定則錄入取消則放棄該操作。
b .刪除功能:輸入要刪除的學(xué)生的學(xué)號,且必須輸入密碼驗證,確定則執(zhí)行該操作修改該學(xué)生信息,取消則放棄該操作。
c.查詢功能: 查詢功能是本系統(tǒng)的一個重要功能,按照科目成績的相關(guān)信息可進(jìn)行查找,應(yīng)盡量使操作簡化,節(jié)省使用者的時間。
d.班級創(chuàng)建:選擇要創(chuàng)建的班級名稱,或要刪除班級的名稱,單擊確定創(chuàng)建成功,選擇刪除將刪除該班級信息。
e.科目調(diào)整:選擇要調(diào)整的科目名稱、班級名稱,或要刪除科目和班級的名稱,單擊增加調(diào)整成功,選擇刪除將刪除該班級的該項科目信息。
3.方案實(shí)施
3.1成績管理各模塊功能介紹
添加學(xué)生成績,輸入要添加的學(xué)生的學(xué)號、姓名、課程成績等信息,且學(xué)號字段不能為空,確定則錄入取消則放棄該操作。刪除學(xué)生成績,輸入要刪除的學(xué)生的學(xué)號,且必須輸入密碼驗證,確定則執(zhí)行該操作修改該學(xué)生信息,取消則放棄該操作。查詢學(xué)生成績,查詢功能是本系統(tǒng)的一個重要功能,按照科目成績的相關(guān)信息可進(jìn)行查找,應(yīng)盡量使操作簡化,節(jié)省使用者的時間。班級創(chuàng)建或刪除,選擇要創(chuàng)建的班級名稱,或要刪除班級的名稱,單擊確定創(chuàng)建成功,選擇刪除將刪除該班級信息。科目調(diào)整和刪除,選擇要調(diào)整的科目名稱、班級名稱,或要刪除科目和班級的名稱,單擊增加調(diào)整成功,選擇刪除將刪除該班級的該項科目信息。
3.2成績管理模塊功能具體實(shí)現(xiàn)
具體實(shí)現(xiàn)功能如下:添加學(xué)生成績、刪除學(xué)生成績、查詢學(xué)生成績、班級創(chuàng)建或刪除、科目調(diào)整和刪除等。科目管理中科目添加和科目刪除的部分代碼如下:
科目管理
科目添加
ReturnBook()import java.awt.event.*;import javax.swing.*;import java.awt.*;import java.awt.Container;import java.util.*;import java.sql.*;import javax.swing.text.JTextComponent;
//extends JFrame class ReturnBook
implements ActionListener {
JFrame f3;Container cp;JPanel jp1,jp2,jp3,jp4,jp,jpanelWest;JButton jbt1,jbt2;//按鈕:確定、取消、JLabel label;
//標(biāo)簽
JTextField tf1,tf2;
//定義文本框
JLabel label1,label2,label3,label4;String stuName;
ReturnBook()
{
f3=new JFrame();cp=f3.getContentPane();// 初始化面板、按鈕、標(biāo)簽、文本框
jp1=new JPanel();
jp2=new JPanel();jp3=new JPanel();jp4=new JPanel();jpanelWest=new JPanel();jp=new JPanel();//-----------------jbt1=new JButton(“確定”);
jbt2=new JButton(“取消”);
//-----------------label=new JLabel(“ size='4'>
學(xué)生科目添加
//-----------------tf1=new JTextField(20);tf2=new JTextField(20);
// tf6=new JTextField(20);//-----------------//布局,添加控件
jp1.add(jbt1);jp1.add(jbt2);
stuName=tf2.getText();
jp1.add(new JLabel(“您好”+stuName+“歡迎登陸學(xué)生信息系統(tǒng)”));
JPanel jpanel=new JPanel();jpanel.add(label);
JPanel pp4=new JPanel();
JPanel jpane4=new JPanel();
cp.add(pp4,“West”);cp.add(pp2,“Center”);
cp.add(pp3,“South”);
cp.add(jpanel,“North”);JPanel pp2=new JPanel(new GridLayout(5,1));JPanel pp3=new JPanel();pp4.setLayout(new GridLayout(5,1));pp4.add(new JLabel(“學(xué)號”,SwingConstants.CENTER));pp2.add(tf1);pp4.add(new JLabel(“科目”,SwingConstants.CENTER));pp2.add(tf2);
pp3.add(jbt1);pp3.add(jbt2);cp.add(jpane4,“East”);
//-----------------
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();int x=screen.width;
/*取得顯示器窗口的寬度*/ int y=screen.height;f3.setSize(350,330);int xcenter=(x-350)/2;int ycenter=(y-330)/2;f3.setLocation(xcenter,ycenter);/*顯示在窗口中央*/
/*取得顯示器窗口的高度*/
f3.setVisible(true);
//------------------
jbt1.addActionListener(this);//注冊監(jiān)聽器
jbt2.addActionListener(this);
/*f3.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
} System.exit(0);} });*/ //-----------------
public void insertRecord(){
if(tf1.getText().equals(“")||tf2.getText().equals(”“))
{ JOptionPane.showMessageDialog(f3,”請?zhí)顚憣W(xué)生信息“);return;}
try{
Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);
}catch(ClassNotFoundException e){System.out.println(”加載驅(qū)動程序失敗!“);}
try{ String url = ”jdbc:odbc:driver={Microsoft Access Driver(*.mdb)};DBQ=Book.mdb“;//直接
Connection con=DriverManager.getConnection(url);Statement sql;
String s=”insert into course values('“+tf1.getText()+”','“+tf2.getText()+”');“;
//查詢輸入的學(xué)號是否在數(shù)據(jù)庫中存在 使用當(dāng)前類目錄下的數(shù)據(jù)庫文件
String query=”select * from course where 學(xué)號='“+tf1.getText()+”'“;
sql=con.createStatement();
ResultSet rs=sql.executeQuery(query);//返回查詢結(jié)果集 boolean moreRecords=rs.next();//判斷結(jié)果集是否有數(shù)據(jù)
if(moreRecords)
{
JOptionPane.showMessageDialog(f3,”學(xué)號已經(jīng)被使用,請重新輸入“);
con.close();tf1.setText(”“);return;
}
int insert=sql.executeUpdate(s);if(insert==1)
{ JOptionPane.showMessageDialog(null,”學(xué)生信息錄入成功!“);
tf1.setText(”“);tf2.setText(”“);
}
}catch(SQLException g)
{
System.out.println(”E Code“+g.getErrorCode());System.out.println(”E M“+g.getMessage());
}
}
public void actionPerformed(ActionEvent e){
String cmd=e.getActionCommand();
if(cmd.equals(”確定“))
{
insertRecord();
}
else if(cmd.equals(”取消“))
}
f3.hide();
public static void main(String []arg){
}
} 科目刪除
BorrowBook()
import java.awt.event.*;import javax.swing.*;import java.awt.*;import java.awt.Container;import java.util.*;import java.sql.*;
class BorrowBook implements ActionListener {
JFrame f;
Container cp;JPanel jpS,jpanelWest;JButton jbt1,jbt2,jbt3,jbt4;//按鈕,查詢、取消、修改 JLabel label,L;
//標(biāo)簽:請輸入姓名學(xué)號 JTextField tf;
//定義文人框
StudentIn a=new StudentIn();JTable table;//用來接收數(shù)據(jù)庫中返回的信息
Object columnName[]={”學(xué)號“,”科目“};
Object ar[][] =new Object[80][6];String sno;String count=”0“;
BorrowBook()
{
f=new JFrame();cp=f.getContentPane();// 初始化面板、按鈕、標(biāo)簽、文人框 jpS=new JPanel();
jpanelWest=new JPanel();
//-----------------jbt1=new JButton(”查詢“);
jbt2=new JButton(”刪除“);
jbt3=new JButton(”錄入“);
jbt4=new JButton(”關(guān)閉“);
//-----------------label=new JLabel(” size='4'> 請 輸 入 科 目 :
table=new JTable(ar,columnName);//ar存放表中的數(shù)據(jù),columnname表示列名
JScrollPane scrollpane = new JScrollPane(table);
//-----------------tf=new JTextField(18);
//-----------------
//
//-----------------//布局,添加控件
jpS.add(jbt1);jpS.add(jbt2);jpS.add(jbt3);jpS.add(jbt4);
JPanel jpanel=new JPanel();jpanel.add(label);jpanel.add(tf);
JPanel pp4=new JPanel();
JPanel jpE=new JPanel();
cp.add(jpanel,”North“);JPanel jp=new JPanel();//jp.add(scrollpane);JPanel p=new JPanel();//用來放兩個表 p.setLayout(new BorderLayout());
p.add(L,”North“);p.add(scrollpane);
cp.add(pp4,”West“);cp.add(p,”Center“);
cp.add(jpS,”South“);
cp.add(jpE,”East“);
//-----------------Dimension screen=kit.getScreenSize();int x=screen.width;
/*取得顯示器窗口的寬度*/ int y=screen.height;f.setSize(400,330);
/*取得顯示器窗口的高度*/
Toolkit kit=Toolkit.getDefaultToolkit();int xcenter=(x-350)/2;int ycenter=(y-330)/2;f.setLocation(xcenter,ycenter);/*顯示在窗口中央*/
f.setVisible(true);
//------------------
jbt1.addActionListener(this);//注冊監(jiān)聽器
jbt2.addActionListener(this);
jbt3.addActionListener(this);
jbt4.addActionListener(this);
/*f.addWindowListener(new WindowAdapter(){
});*/ public void windowClosing(WindowEvent e){ System.exit(0);} } //-----------------int i=0;
public void showRecord(String ql){
while(i>=0)
{
ar[i][0]=”“;ar[i][1]=”“;
i--;} i=0;
try{
Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);
}catch(ClassNotFoundException e){System.out.println(”加載驅(qū)動程序失敗!“);}
try{
String url = ”jdbc:odbc:driver={Microsoft Access Driver(*.mdb)};DBQ=Book.mdb“;//直
Connection con=DriverManager.getConnection(url);Statement sql;
String s=”select * from course where 科目 ='“+ql +”'“;
ResultSet rs=sql.executeQuery(s);
接使用當(dāng)前類目錄下的數(shù)據(jù)庫文件
sql=con.createStatement();
while(rs.next())
{
String bname=rs.getString(1);
String bno=rs.getString(2);
ar[i][0]=bname;ar[i][1]=bno;i++;
}
count=”“+i+”“;
L.setText(”“+count+”人“);
f.repaint();
con.close();System.out.println(ar[0][1]);
}catch(SQLException g)
{ System.out.println(”E Code“+g.getErrorCode());
System.out.println(”E M“+g.getMessage());
} }
public void deleteRecord(int index)
{
try{
Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);
}catch(ClassNotFoundException e){System.out.println(”加載驅(qū)動程序失敗!“);}
try{
String url = ”jdbc:odbc:driver={Microsoft Access Driver(*.mdb)};DBQ=Book.mdb“;//直接使用當(dāng)前類目錄下的數(shù)據(jù)庫文件
Connection con=DriverManager.getConnection(url);Statement sql;
String ql=(String)(ar[index][0]);
String s=”delete * from grade where 學(xué)號 ='“+ql +”'“;
sql=con.createStatement();
int del=sql.executeUpdate(s);
if(del==0)
{JOptionPane.showMessageDialog(null,”刪除成功!“,”信息“, JOptionPane.YES_NO_OPTION);}
con.close();
f.repaint();
}catch(SQLException g)
{
System.out.println(”E Code“+g.getErrorCode());System.out.println(”E M“+g.getMessage());
}
}
public void actionPerformed(ActionEvent e)
{
String remember=”“;String ql=”“;
String cmd=e.getActionCommand();
if(cmd.equals(”查詢“))
{
ql=tf.getText().trim();remember=ql;
showRecord(ql);
}
// if(cmd.equals(”刪除“))
// {
// new BorrowIn();
//}
//**************
if(cmd.equals(”刪除“))
{
int index=table.getSelectedRow();
if(index==-1)
JOptionPane.showMessageDialog(null,”請選定要刪除的姓名“,”輸入錯誤“, JOptionPane.YES_NO_OPTION);
else{
BorrowIn k=new BorrowIn();
k.setData(ar[index][0].toString(),ar[index][1].toString());
}
}
//**************
//if(cmd.equals(”還書“))
//new ReturnBook();
if(cmd.equals(”關(guān)閉"))
//
f.setVisible(false);
f.dispose();
} public static void main(String []arg){
}
}
BorrowBook a=new BorrowBook();
4.結(jié)果與結(jié)論
結(jié)果:本設(shè)計完成了一個具有添加學(xué)生成績、刪除學(xué)生成績、查詢學(xué)生成績、班級創(chuàng)建或刪除、科目調(diào)整和刪除等功能的學(xué)生成績管理系統(tǒng)。
結(jié)論:本系統(tǒng)為學(xué)生成績管理系統(tǒng),主要提供方便高效的管理功能以及網(wǎng)上的信息查閱平臺,學(xué)生可以查閱相關(guān)的成績和基本信息,管理員可以管理所有信息。包括瀏覽所有用戶信息以及相關(guān)的成績信息,實(shí)現(xiàn)添加,查詢,或刪除學(xué)生成績和信息,并且能夠?qū)崿F(xiàn)班級創(chuàng)建或刪除和科目調(diào)整和刪除等功能。
論文首先介紹了本系統(tǒng)開發(fā)的背景研究意義和開發(fā)環(huán)境,在進(jìn)行了可行性需求分析后對本系統(tǒng)進(jìn)行了概要設(shè)計,最后利用JAVA開發(fā)環(huán)境實(shí)現(xiàn)了系統(tǒng)設(shè)計時所確定的幾種功能,并進(jìn)行了調(diào)試和運(yùn)行,基本符合了學(xué)生成績管理系統(tǒng)的要求。
但是,由于一些技術(shù)和設(shè)備所限,本系統(tǒng)存在一些不足之處,有待進(jìn)一步改進(jìn)和完善,在開發(fā)過程中遇到了以下問題:
(1)對后臺數(shù)據(jù)庫中數(shù)據(jù)的日常維護(hù),包括自動清理過時數(shù)據(jù);
(2)程序中錯誤處理和輸入控制不夠全面,可能導(dǎo)致輸入無效引發(fā)錯誤;
(3)對補(bǔ)考學(xué)生的處理。
總之此次設(shè)計使我受益匪淺,雖然過程中有許多不盡人意的地方,但通過大家的努力最終還是把問題給攻克了。在此次設(shè)計中學(xué)到的知識對我終生受用。
5.收獲與致謝
軟件工程設(shè)計是軟件工程實(shí)踐教學(xué)的重要組成部分,合理的組織,精心的準(zhǔn)備,加上有序的實(shí)施,使我們的實(shí)踐能力得到很大的提高,同時培養(yǎng)了我們的團(tuán)隊合作精神,增強(qiáng)了我們學(xué)習(xí)的自信心,并為我們畢業(yè)后從事相關(guān)工作打下良好基礎(chǔ)。
在此次的設(shè)計中我不僅利用了自己的所學(xué),而且還學(xué)到了許多新的知識,不知不覺中我們的設(shè)計已經(jīng)接近了尾聲,在這里非常感謝我們的指導(dǎo)老師王瑞平老師,感謝她給我們的設(shè)計所提出的很多很多好的建議和意見,讓我從中獲益匪淺,同時也幫助我們圓滿的完成了課程設(shè)計。
最后我要感謝我們組的全體人員,沒有大家的幫助和鼓勵,我也不可能完成這么多的設(shè)計,也不可能學(xué)到這麼多有用的知識。
謝謝同學(xué)們對我的幫助,同時也謝謝老師對我們的輔導(dǎo)。沒有大家的共同努力就沒有我們今天課程設(shè)計的圓滿完成。向我摯愛的王瑞平老師以及可愛的同學(xué)們送上我最崇高的敬意!謝謝你們!
6.參考文獻(xiàn)
[1]王 晟.《Visual Basic.NET 數(shù)據(jù)庫開發(fā)經(jīng)典案例解析》.清華大學(xué)出版社.2005 [2]馬朝暉等.Java教程.(第4版)[M].北京:人民郵電出版社.2006 [3] 張白一,崔尚森.面向?qū)ο蟪绦蛟O(shè)計——Java[M].西安:電子科技大學(xué)出版社.2004 [4] 袁世鷹.微機(jī)教務(wù)管理系統(tǒng)的設(shè)計與實(shí)現(xiàn)[P].北京:開明出版社.2001
第二篇:語言課程設(shè)計-學(xué)生成績管理系統(tǒng)
1、課程設(shè)計的目的、任務(wù)
《匯編語言》課程設(shè)計對于鞏固匯編語言理論知識,加強(qiáng)學(xué)生的實(shí)際動手能力和提高學(xué)生綜合素質(zhì)十分必要。課程設(shè)計的目的主要是通過程序設(shè)計方法和技能的基本訓(xùn)練,鞏固在課堂上學(xué)到的有關(guān)程序設(shè)計的基本知識和基本方法,通過實(shí)際動手能力的培養(yǎng),進(jìn)一步熟悉匯編語言的結(jié)構(gòu)和使用方法,達(dá)到能獨(dú)立閱讀、編制和調(diào)試一定規(guī)模的匯編語言程序的水平。
2、軟件需求分析和設(shè)計
2.1學(xué)生成績管理系統(tǒng)是對學(xué)生成績的管理,其中包括以下幾個模塊:(1).插入一個數(shù)據(jù)(插入學(xué)生學(xué)號以及語數(shù)外三個成績)。(2)修改一個數(shù)據(jù)。(3)刪除學(xué)生成績數(shù)據(jù)。(4)查找學(xué)生成績。(5)查看學(xué)生成績的排名(6)查看學(xué)生成績分布(7)按esc鍵退出系統(tǒng)
2.2學(xué)生成績管理系統(tǒng)應(yīng)該包含以下信息:學(xué)號,語文成績,英語成績,數(shù)學(xué)成績。因此,系統(tǒng)應(yīng)該提供以下功能:(1)輸出顯示菜單。(2)輸入學(xué)生的成績(3)修改學(xué)生成績(4)刪除學(xué)生成績(5)查詢學(xué)生成績(6)顯示學(xué)生成績排名(7)顯示成績分布統(tǒng)計(8)按esc鍵退出系統(tǒng)
2.3依據(jù)程序的功能需求,該系統(tǒng)的功能結(jié)構(gòu)圖如下
系統(tǒng)功能結(jié)構(gòu)圖
2.4 程序流程圖:
主程序流程圖
查找學(xué)生成績
插入學(xué)生學(xué)號及成績
修改學(xué)生的成績
顯示各個學(xué)科各分?jǐn)?shù)段的人數(shù)
3、程序?qū)崿F(xiàn)說明
3.1學(xué)生管理系統(tǒng)中各子程序如下:
(1).輸入全部學(xué)生學(xué)號以及語文,英語,數(shù)學(xué)三科的成績。子程序名:insert 子程序描述:該子程序為輸入字程序。系統(tǒng)在開始的時候是沒有數(shù)據(jù)的,通過該子程序可以初始化系統(tǒng),將學(xué)生的學(xué)號及成績輸入系統(tǒng)。
代碼:
insert proc near;定義進(jìn)程子程序:插入學(xué)生,學(xué)號及 成績 call input;調(diào)用input add n,1 ret insert endp
(2).修改輸入的成績。子程序名:modify 子程序描述:通過子程序修改學(xué)生的成績 代碼:
modify proc near;定義進(jìn)程子程序:修改學(xué)生學(xué)號,成績 md1:output mess1;輸出mess1 shuru;調(diào)用宏shuru:二位數(shù)據(jù)輸入 mov bl,n mov bh,0 mov al,dl mov si,0 md: cmp al,xh[si];先查找輸入的學(xué)生是否存在
je qq1_1;查到的話,就跳轉(zhuǎn)到qq1_1輸入修改的值,也就是重新輸入。;結(jié)果相等則跳轉(zhuǎn)到qq1_1 add si,1
cmp si,bx jbe md;小于等于則跳轉(zhuǎn)到md output mess;輸出mess jmp md1;不相等繼續(xù)輸入學(xué)號
qq1_1:;轉(zhuǎn)入修改的值重新輸入。mov di,si output mess2 output mess4 mov si,0 mov cx,3
qq3_1:shuruu;cmp dx,78h;
jbe qq2_1;output ts3;jmp qq1_1;qq2_1:mov buf[si],dl output bg;add si,1 loop qq3_1 mov al,buf[0];mov chi[di],al mov al,buf[1]
分別輸入語文,英語,數(shù)學(xué)成績,并將其放 在緩沖區(qū)buf中 比較輸入的成績是否大于120,如果大于120的 話,那么重 新輸入成績 小于等于則轉(zhuǎn)移到qq2_1 輸出ts3 跳轉(zhuǎn)到qq1_1 輸出空格 將存入buf中的成績,分別賦值給存放對應(yīng)科 目的成績的數(shù)組
mov eng[di],al mov al,buf[2] mov mat[di],al ret modify endp
(3).刪除學(xué)生的成績。子程序名:delete 子程序描述:通過子程序刪除學(xué)生的成績 代碼:
de proc near;刪除某個學(xué)生的記錄 sc1:output mess1 shuru;調(diào)用宏shuru,接受輸入的學(xué)號 mov bl,n mov bh,0 mov al,dl mov si,0 sc: cmp al,xh[si];查詢輸入學(xué)號的學(xué)生信息是否存在,不存在的話,重新輸入學(xué)號 je sc2;相等則轉(zhuǎn)移到sc2 add si,1 cmp si,bx jbe sc;小于等于則轉(zhuǎn)移到sc output mess;輸出mess jmp sc1 sc2: sub bx,si cmp bx,0 je sc3;相等則轉(zhuǎn)移到sc3 mov cx,bx
sc4:mov dl,chi[si+1] mov chi[si],dl mov dl,eng[si+1] mov eng[si],dl mov dl,mat[si+1] mov mat[si],dl mov dl,xh[si+1] mov xh[si],dl add si,1 loop sc4;loop循環(huán)指令,執(zhí)行操作(cx)<--(cx)-1.若 cx!=0,跳轉(zhuǎn)到標(biāo)號sc處循環(huán)執(zhí)行;cx=0,則推出
循環(huán),執(zhí)行l(wèi)oop的下一條指令 sub n,1 sc3: ret de endp
(3).查詢學(xué)生的成績。子程序名:find 子程序描述:通過子程序查詢學(xué)生的成績 代碼:
find proc near;定義進(jìn)程子程序:查找學(xué)生成績 call sum;求學(xué)生的總成績 call ping;求學(xué)生的平均成績
bj1:output mess1;輸出mess1 shuru;二位數(shù)數(shù)據(jù)輸入 mov bl,n mov bh,0 mov al,dl
mov si,0
bj: cmp al,xh[si];將輸入的學(xué)號與輸入的學(xué)號相比,je i;存在的話,將此學(xué)生的成績輸出。je表示結(jié)果相
等則轉(zhuǎn)移。add si,1 cmp si,bx jbe bj;output mess jmp bj1 i: output strr2 shuzi xh[si];shuzi output bg;mov al,chi[si] cbw;shuzii ax;shuzii output bg;mov al,eng[si] cbw;shuzii ax;shuzii output bg
mov al,mat[si] cbw shuzii ax output bg;
mov al,pj[si] cbw
小于等于則轉(zhuǎn)移到bj 為二位數(shù)據(jù)輸出 輸出空格 將字節(jié)變?yōu)樽?/p>
為三位數(shù)據(jù)輸出。輸出空格 將字節(jié)變?yōu)樽?/p>
為三位數(shù)據(jù)輸出 輸出空格的字符串,用于與標(biāo)題欄對齊
shuzii ax output bg
mov ax,si mov bl,2 mul bl mov bx,ax shuzii zc[bx];shuzii為三位數(shù)據(jù)輸出
output bg;輸出空格的字符串,用于與標(biāo)題欄對齊 shuzi mc[si];shuzi為二位數(shù)據(jù)輸出 ret find endp
(4).顯示學(xué)生的成績排名。子程序名:show 子程序描述:通過子程序顯示學(xué)生的成績排名 代碼:
show proc near;定義進(jìn)程子程序:顯示結(jié)果排名 call sum;調(diào)用宏sum call ping;調(diào)用宏ping call rank;調(diào)用宏rank call shuchu;調(diào)用宏shuchu ret show endp
3.2程序運(yùn)行抓圖:
主菜單
修改學(xué)生成績
刪除學(xué)生成績
顯示各個學(xué)科各分?jǐn)?shù)段的人數(shù)
4、程序總結(jié)
通過兩個星期的學(xué)習(xí),努力,終于完成了報告。系統(tǒng)可以很好的運(yùn)行。這兩個多星期的時間,幾乎每天不是在敲代碼,就是在看代碼,查書,上網(wǎng)。系統(tǒng)中用到了很多最近才學(xué)習(xí)的知識,比如宏,子程序。這些都使得代碼的運(yùn)行效率提高了,代碼行數(shù)減少了。系統(tǒng)還用到了bios的清屏功能。這些功能如果不是做課程設(shè)計,我想我很難會接觸到這些知識。
由于自己對知識掌握的不是很牢固,其中也會碰到一些困難。每當(dāng)遇到問題的時候,我會先上網(wǎng)去查找,看看有沒有人提過這方面的問題。互聯(lián)網(wǎng)是強(qiáng)大的,大部分的問題通過網(wǎng)絡(luò)都可以解決。部分找不到的問題,我就去請教班里學(xué)得好的同學(xué)。他們對知識的掌握遠(yuǎn)超過我。這樣下來,很多問題都迎刃而解了。
課程設(shè)計是一個很好的掌握書本上知識的過程。平時上課之后,自己都不會想著去敲一些代碼聯(lián)系聯(lián)系。通過做課程設(shè)計,將理論與實(shí)踐結(jié)合了起來,對知識的理解更加深入了。
第三篇:課程設(shè)計--成績管理系統(tǒng)
“成績管理系統(tǒng)”課程設(shè)計指導(dǎo)書
課題名稱:學(xué)生成績管理系統(tǒng)
設(shè)計目標(biāo):按照軟件工程的規(guī)范,以SQL Server或Oracle為后臺數(shù)據(jù)庫,以Visual C++、Delphi等為前端開發(fā)工具,設(shè)計并實(shí)現(xiàn)一個能模擬高等學(xué)校學(xué)生成績管理的系統(tǒng)。
需求描述:
學(xué)生成績管理系統(tǒng)中:
1.系統(tǒng)用戶
系統(tǒng)的用戶是學(xué)校的學(xué)生、教師和管理員。學(xué)生使用本系統(tǒng)查詢自己的成績。教師使用本系統(tǒng)錄入和查詢自己所授課程的考試成績。教學(xué)管理員可以查詢所有課程成績,并使用本系統(tǒng)進(jìn)行成績的統(tǒng)計和生成報表。
2.系統(tǒng)功能
(1)成績錄入:
教師可以查詢自己本學(xué)期所授課程,并錄入學(xué)生的考試成績。錄入過
程中,可以暫存已錄入的成績,當(dāng)錄入完成后提交。
(2)成績維護(hù):
教師在提交前,可以修改已錄入或暫存的學(xué)生成績;但提交后,則只
能查詢不能再進(jìn)行任何修改。
教學(xué)管理員可以清除教師已提交的成績。
(3)成績查詢:
教師、教學(xué)管理員可以查詢學(xué)生考試成績。學(xué)生只允許查詢自己的考
試成績,教師只允許查詢自己所授課程的成績。
(4)成績統(tǒng)計:
教學(xué)管理員可以按課程、按學(xué)生、按班級等進(jìn)行成績統(tǒng)計。
教學(xué)管理員根據(jù)核算出的總評成績統(tǒng)計處于優(yōu)、良、中、及格、不及
格的學(xué)生人數(shù)以及占總?cè)藬?shù)的百分比。其中100-90為優(yōu),89-80為良,79-70為中,69-60為及格,60分以下為不及格。
按要求輸出成績在優(yōu)、良、中、及格、不及格各區(qū)間的學(xué)生學(xué)號。
結(jié)果形式:
提交課程設(shè)計報告、源程序和可演示的軟件
課程設(shè)計報告要求:詳見課程設(shè)計模板
課程設(shè)計參考思路:
(1)熟悉數(shù)據(jù)庫和開發(fā)工具,掌握開發(fā)工具與本地數(shù)據(jù)庫的連接方法。
(2)理解系統(tǒng)的信息需求,進(jìn)行合理的數(shù)據(jù)庫設(shè)計,建立各數(shù)據(jù)庫表。
(3)理解系統(tǒng)的功能需求,設(shè)計應(yīng)用軟件。結(jié)合Delphi 或VC++進(jìn)行系統(tǒng)界面
(窗體、菜單以及相應(yīng)控制按鈕)的設(shè)計、連接與操縱數(shù)據(jù)庫方案的設(shè)計,編寫程序。
(4)系統(tǒng)運(yùn)行、調(diào)試并完善。
(5)撰寫設(shè)計報告。
第四篇:軟件工程 課程設(shè)計 銷售管理系統(tǒng)
銷售管理系統(tǒng)一.項目簡介
隨著計算機(jī)技術(shù)的迅猛發(fā)展,存在于網(wǎng)絡(luò)的企業(yè)銷售管理系統(tǒng)將逐步代替?zhèn)鹘y(tǒng)的管理模式進(jìn)入企業(yè)。為了更高效得完成銷售方面的工作,也可以有更多的時間處理更多的別的事務(wù),企業(yè)也將擺脫原有的管理形勢完全進(jìn)入信息化管理。銷售管理系統(tǒng)在企業(yè)的管理過程中起著巨大的作用
二.功能需求
一個銷售管理系統(tǒng),設(shè)計者的目標(biāo)是滿足公司運(yùn)營和日常管理的需要,具有對產(chǎn)品,客戶管理的功能。客戶登錄銷售管理系統(tǒng)進(jìn)行售后服務(wù)查詢,銷售員可以對銷售的產(chǎn)品進(jìn)行登記,并將銷售情況反饋給數(shù)據(jù)庫。為管理的方便性和信息傳遞的快速性提供了一個很好的平臺。系統(tǒng)開發(fā)的總體任務(wù)是實(shí)現(xiàn)售后服務(wù)及銷售登記自動化。總之,銷售管理系統(tǒng)要實(shí)現(xiàn)登陸驗證、商品銷售管理、商品銷售報表管理、客戶信息管理四大部分。1.客戶對功能的需求
1>查看自己的信息,了解自己近期的購買情況。2>查看產(chǎn)品的信息,熟悉產(chǎn)品情況。2>查看售后服務(wù)信息。
2.銷售人員對功能的需求
1>查看自己的信息,了解自己近期的銷售情況。2>查看產(chǎn)品的信息,熟悉產(chǎn)品情況。3>登記銷售產(chǎn)品。
4>添加新產(chǎn)品,并填寫產(chǎn)品相關(guān)信息。
3.售后服務(wù)人員對功能的需求
1>查看售后服務(wù)信息。2>添加售后服務(wù)信息。
三.分析模型時序圖
銷售管理系統(tǒng)頂層圖
1.客戶管理
第三層DFD圖 客戶管理子系統(tǒng)
2.銷售管理
第三層DFD圖 銷售管理子系統(tǒng)
3.售后服務(wù)管理
第三層DFD圖 售后服務(wù)管理子系統(tǒng)
4.客戶登錄動態(tài)時序圖為
四.模塊活動圖,登錄流程圖
1.注冊、登陸模塊
1>模塊功能描述
該模塊主要實(shí)現(xiàn)對用戶能否進(jìn)入系統(tǒng)的確認(rèn)以及對進(jìn)入系統(tǒng)的用戶權(quán)限的設(shè)定;因為本系統(tǒng)涉及到三類使用者,不可能每一類用戶都具有相同的操作權(quán)限,如前所說,必然會早成系統(tǒng)的混亂和崩潰,嚴(yán)重影響其安全性和有效性。所以采取在通常的注冊,登錄模式下加上用戶類型的選擇,非常簡潔地就完成了對用戶類型的區(qū)別及權(quán)限的劃分。2>在模塊的詳細(xì)設(shè)計后,便能得出實(shí)現(xiàn)該部分的具體流程,如圖
用戶注冊模塊程序流程圖
登錄模塊程序流程圖
活動圖為:
2.客戶管理模塊
1>模塊功能描述
顯示客戶的基本信息。庫戶可以查看自己的等級和交易次數(shù)。
2>在模塊的詳細(xì)設(shè)計后,便能得出實(shí)現(xiàn)該部分的具體流程,如圖3-8。
客戶管理模塊流程圖
活動圖為:
3.銷售管理模塊 >模塊功能描述
在這個模塊可以登記銷售記錄。并且在提交記錄時,更新數(shù)據(jù)庫:
(1)更新客戶信息。如果是“老客戶”系統(tǒng)會按照客戶等級給出對應(yīng)的優(yōu)惠價。(2)更新產(chǎn)品信息。主要是更新該產(chǎn)品數(shù)量。
2>在模塊的詳細(xì)設(shè)計后,便能得出實(shí)現(xiàn)該部分的具體流程,如圖
銷售管理模塊流程圖
活動圖為
五.數(shù)據(jù)庫設(shè)計
1.客戶信息表
字段khidkhnamegyshjchzhgzhugteladrkhtelfaxbzh數(shù)據(jù)類型IntVarCharVarCharVarCharnCharVarCharncharVarChartext是否是主鍵是否否否否否否否否是否為空否否否是是是否是是說明客戶編號客戶名稱客戶簡稱采購主管采購主管聯(lián)系方式客戶地址客戶電話傳真?zhèn)渥?/p>
2.商品進(jìn)貨表
字段數(shù)據(jù)類型intVarCharCharCharCharnumericnumericint是否是主鍵是否否否否否否否是否為空說明進(jìn)貨編號商品名稱商品名稱首拼大單位小單位進(jìn)貨成本jhbhshpmchshpshpddwxdwjhchbxshjgjhshulgyshjhrqbzh否否否否是否否否銷售價格進(jìn)貨數(shù)量供應(yīng)商進(jìn)貨日期備注VarCharsmalldatetimeVarChar否否否是否是 3.商品銷售表
字段xshbhshpmchshpshpxshjgxshshlxshryxshrqkhbzh數(shù)據(jù)類型IntVarCharVarCharNumericIntVarCharSmalldatetimeVarChartext是否是主鍵是否否否否否否否否是否為空否否否是是是否是是說明銷售編號商品名稱商品名稱首拼銷售價格銷售數(shù)量銷售人員銷售日期客戶簡稱備注
六.運(yùn)行界面與代碼
1.登陸窗口
Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Private Sub CmdOk_Click()If UserName.Text <> “" And PassWord.Text <> ”“ Then Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.Open ”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & App.Path & ”人事.mdb;Persist Security Info=False“ rs.Open ”select * from usermanage where username='“ & UserName.Text & ”'“, conn, 1, 1 If Not rs.EOF Then If rs(”password“)= PassWord.Text Then Main.Show Unload Me Else MsgBox ”非法登錄,密碼錯誤!“, vbOKOnly, ”警告“ End If Else MsgBox ”非法登錄,找不到該用戶!“, vbOKOnly, ”警告“ End If Else MsgBox ”用戶名或密碼不能為空!“, vbOKOnly, ”提示“ End If End Sub
Private Sub PassWord_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then Call CmdOk_Click End If End Sub
Private Sub UserName_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then Call CmdOk_Click End If End Sub
`2.主界面
Private Sub Cmd_Click(Index As Integer)Select Case Index Case 0 GoodsIn.Show Me.Enabled = False Case 1 Saler.Show Me.Enabled = False Case 2 SaleData.Show Me.Enabled = False Case 3 SaleTotal.Show Me.Enabled = False Case 4 UserM.Show Me.Enabled = False End Select End Sub
`進(jìn)貨管理
Private Sub Cmd_Click(Index As Integer)Select Case Index Case 0 '第一條
Adodc1.Recordset.MoveFirst
Case 1 '上一條
If Not Adodc1.Recordset.BOF Then Adodc1.Recordset.MovePrevious End If
Case 2 '下一條
If Not Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveNext End If
Case 3 '最尾條
Adodc1.Recordset.MoveLast
Case 4 '添加
Adodc1.Recordset.AddNew For i = 0 To 7 GoodText(i).Enabled = True Next Cmd(6).Enabled = True
Case 5 '修改 For i = 0 To 7 GoodText(i).Enabled = True Next Cmd(6).Enabled = True
Case 6 '保存 Adodc1.Recordset.Update For i = 0 To 7 GoodText(i).Enabled = False Next MsgBox ”更新記錄成功!“, vbOKOnly, ”提示“ Cmd(6).Enabled = False
Case 6 '刪除
If MsgBox(”確定刪除當(dāng)前記錄,數(shù)據(jù)將不可恢復(fù)?“, vbOKCancel, ”提示“)= vbOK Then Adodc1.Recordset.Delete End If End Select End Sub
Private Sub Form_Load()Adodc1.ConnectionString = ”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & App.Path & ”人事.mdb;Persist Security Info=False“ Adodc1.RecordSource = ”select * from save“ For i = 0 To 6 Set GoodText(i).DataSource = Adodc1 GoodText(i).DataField = Adodc1.Recordset.Fields(i).Name Next Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1 End Sub
Private Sub Form_Unload(Cancel As Integer)Main.Enabled = True End Sub
`銷售管理
Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Public id As String Public action As String Private Sub Cmd_Click(Index As Integer)Select Case Index Case 0 '第一條
If Not Adodc1.Recordset.BOF Then Adodc1.Recordset.MoveFirst End If
Case 1 '上一條
If Not Adodc1.Recordset.BOF Then Adodc1.Recordset.MovePrevious End If
Case 2 '下一條
If Not Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveNext End If
Case 3 '最尾條
If Not Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveLast End If
Case 4 '添加 action = ”add“ ManageSale.Show Me.Enabled = False
Case 5 '修改 action = ”modify“ id = Adodc1.Recordset.Fields(”id“)ManageSale.Show Me.Enabled = False
Case 7 '刪除
If MsgBox(”確定刪除當(dāng)前記錄,數(shù)據(jù)將不可恢復(fù)?“, vbOKCancel, ”提示“)= vbOK Then Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.Open ”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & App.Path & ”人事.mdb;Persist Security Info=False“ rs.Open ”select goodcount from save where goodnum='“ & GoodText(0).Text & ”'“, conn, 1, 3 rs(”goodcount“)= rs(”goodcount“)+ GoodText(5).Text rs.Update rs.Close Adodc1.Recordset.Delete End If End Select End Sub
Private Sub Form_Load()Adodc1.ConnectionString = ”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & App.Path & ”人事.mdb;Persist Security Info=False“ Adodc1.RecordSource = ”select * from sale order by id“ For i = 0 To 6 Set GoodText(i).DataSource = Adodc1 GoodText(i).DataField = Adodc1.Recordset.Fields(i + 1).Name Next Adodc1.Refresh Set DataGrid1.DataSource = Adodc1 End Sub
Private Sub Form_Unload(Cancel As Integer)Main.Enabled = True End Sub
添加修改銷售記錄
Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Public salecount As Long
Private Sub Combo1_Change()End Sub
Private Sub Cmd_Click(Index As Integer)Select Case Index Case 0 Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.Open ”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & App.Path & ”人事.mdb;Persist Security Info=False“ If GoodText(0)= ”“ Or GoodText(3)= ”“ Or GoodText(4)= ”“ Then MsgBox ”數(shù)據(jù)沒有輸入完整,請重新輸入!“, vbOKOnly, ”提示“ Exit Sub End If
If SaleData.action = ”add“ Then rs.Open ”select * from sale“, conn, 1, 3 rs.AddNew Else rs.Open ”select * from sale where id=“ & SaleData.id, conn, 1, 3 End If rs(”Goodnum“)= GNum.Text rs(”goodname“)= GoodText(1).Text rs(”danwei“)= GoodText(2).Text rs(”outdate“)= GoodText(3).Text rs(”danjia“)= GoodText(4).Text rs(”outcount“)= GoodText(0).Text rs(”salename“)= SaleName.Text rs.Update rs.Close
rs.Open ”select * from save where goodnum='“ & GNum.Text & ”'“, conn, 1, 3 '在庫存表中將庫存數(shù)量減去已售出的數(shù)量 If SaleData.action = ”add“ Then rs(”goodcount“)= rs(”goodcount“)(GoodText(0).Text-salecount)End If rs.Update rs.Close MsgBox ”數(shù)據(jù)更新成功!“, vbOKOnly, ”提示“ SaleData.Adodc1.Refresh Unload Me Case 1 Unload Me
End Select End Sub
Private Sub Form_Load()Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.Open ”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & App.Path & ”人事.mdb;Persist Security Info=False“ Dim saleman As String
If SaleData.action = ”add“ Then rs.Open ”select goodnum from save order by goodnum“, conn, 1, 1 Do While Not rs.EOF GNum.AddItem rs(0)rs.MoveNext Loop GNum.Text = GNum.List(0)Else rs.Open ”select * from sale where id=“ & SaleData.id, conn, 1, 1 GNum.AddItem rs(”goodnum“)GoodText(1).Text = rs(”goodname“)GoodText(2).Text = rs(”danwei“)GoodText(3).Text = rs(”outdate“)GoodText(4).Text = rs(”danjia“)GoodText(0).Text = rs(”outcount“)saleman = rs(”salename“)GNum.Text = GNum.List(0)GNum.Enabled = False rs.Close rs.Open ”select * from save where goodnum='“ & GNum.Text & ”'“, conn, 1, 1 SaleNum.Max = GoodText(0).Text + rs(”goodcount“)salecount = GoodText(0).Text End If rs.Close rs.Open ”select salename from saler order by id“, conn, 1, 1 Do While Not rs.EOF SaleName.AddItem rs(0)rs.MoveNext Loop If SaleData.action = ”add“ Then SaleName.Text = SaleName.List(0)Else SaleName.Text = saleman Cmd(0).Caption = ”保存修改“ End If rs.Close End Sub
Private Sub Form_Unload(Cancel As Integer)SaleData.Enabled = True End Sub
Private Sub GNum_Click()Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.Open ”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & App.Path & ”人事.mdb;Persist Security Info=False“ rs.Open ”select * from save where goodnum='“ & GNum.Text & ”'“, conn, 1, 1 If Not rs.EOF Then GoodText(1).Text = rs(”goodname“)GoodText(2).Text = rs(”danwei“)SaleNum.Max = rs(”goodcount")End If End Sub
第五篇:VB學(xué)生成績管理系統(tǒng)課程設(shè)計報告
VB程序設(shè)計 課程設(shè)計報告
班 級:***** 姓 名:***** 序 號:***** 指導(dǎo)老師:*****
目錄
1、課設(shè)的目的..............................................................................................................................2
2、界面設(shè)計和功能設(shè)計............................................................................................................2
3、系統(tǒng)功能實(shí)施...................................................................................................................11
4、總結(jié)........................................................................................................................................30
一、課設(shè)的目的
1.本次課程設(shè)計提高了我們的實(shí)踐動手能力
5.通過本次課程設(shè)計,熟悉用戶界面的設(shè)計
2.通過本次課程設(shè)計,進(jìn)一步理解計算機(jī)程序設(shè)計的思路與方法
3.本次課程設(shè)計之后,達(dá)到能熟練使用各種常見的VB控件,理解面向?qū)ο蟮乃枷?4.經(jīng)過本次課程設(shè)計,我們進(jìn)一步熟練運(yùn)用VB的語言元素和流程控制語句
6.經(jīng)過本次課程設(shè)計,熟悉數(shù)據(jù)訪問控件ADO及相關(guān)對象的使用,能基于ADO控件實(shí)現(xiàn)Access的數(shù)據(jù)訪問與操縱
二、界面設(shè)計和功能設(shè)計
1、下面的界面為用戶登陸界面:
用戶名和密碼均已設(shè)定,用戶名為zgzy,密碼為11201,只有輸入正確,然后點(diǎn)擊“登陸“按鈕才能進(jìn)入主界面。如果用戶名或密碼三次輸入錯誤,則系統(tǒng)自動退出。當(dāng)你點(diǎn)擊“退出“按鈕時,彈出一個對話窗,界面如下:
在對話框上點(diǎn)擊“是”按鈕,則退出系統(tǒng),如果點(diǎn)擊“否”,則該界面不變。
2、當(dāng)用戶名和密碼均輸入正確,點(diǎn)擊“登陸”按鈕,進(jìn)入主界面——“學(xué)生成績管理系統(tǒng)”界面,該界面是其他子界面的入口,界面如下:
3、進(jìn)入主界面后,點(diǎn)擊“學(xué)生管理(刪除添加)”,進(jìn)入學(xué)生管理界面,界面如下
該界面上有一個ADO控件,用于連接數(shù)據(jù)庫,當(dāng)用戶在六個文本框中輸入數(shù)據(jù)時,點(diǎn)擊“添加“按鈕,可以將數(shù)據(jù)錄入到數(shù)據(jù)庫中,如果此時點(diǎn)擊”刪除“按鈕,則剛才輸入的數(shù)據(jù)就會被刪除,點(diǎn)擊”保存“按鈕時,輸入的數(shù)據(jù)就會自動保存在數(shù)據(jù)庫里,點(diǎn)擊”返回主窗體“按鈕,該窗體消失,主窗體出現(xiàn)。
4、在主界面點(diǎn)擊“各科成績查詢“按鈕,出現(xiàn)如下界面:
該界面有一個ADO控件,用來連接數(shù)據(jù)庫,還有一個DataGrid控件,用來顯示學(xué)生成績的查詢結(jié)果,當(dāng)用戶選擇了要查詢的科目和條件后,點(diǎn)擊“查詢“按鈕,在DataGrid控件上就會顯示出所查詢的結(jié)果。下面為輸入條件后查詢的結(jié)果——
5、在主界面點(diǎn)擊“姓名查詢“按鈕后,會出現(xiàn)如下界面:
該界面與上一界面相似,在文本框輸入要查詢的姓名后,點(diǎn)擊“查詢“按鈕,就會在DataGrid控件上顯示所要查詢的結(jié)果。下面為輸入條件后查詢的結(jié)果——
5、在主界面點(diǎn)擊“班級查詢“按鈕后,會出現(xiàn)如下界面:
在文版框中輸入所要查詢的班級,DataGrid控件上就會顯示所要查詢的結(jié)果。下面為輸入條件后查詢的結(jié)果——
6、在主界面上點(diǎn)擊“各科成績段查詢“按鈕后,會出現(xiàn)如下界面:
點(diǎn)擊“計算分?jǐn)?shù)段統(tǒng)計“按鈕后,就會出現(xiàn)所要查詢的結(jié)果。下面為查詢的結(jié)果——
7、在主界面點(diǎn)擊“計算總分“按鈕后,出現(xiàn)如下界面:
點(diǎn)擊“清除總分”按鈕后,出現(xiàn)如下界面
8、在主界面點(diǎn)擊“排名“按鈕后,出現(xiàn)如下界面:
在該界面上點(diǎn)擊“排名“按鈕后,在DataGrid控件上會顯示出按成績高低排名的結(jié)果,點(diǎn)擊”清除排名“按鈕后,剛才結(jié)果消失,顯示原來結(jié)果。下面為所現(xiàn)實(shí)的結(jié)果——
9、在主界面點(diǎn)擊“統(tǒng)計直方圖“按鈕后,出現(xiàn)如下界面:
在該界面點(diǎn)擊各個按鈕后,就會出現(xiàn)與之相關(guān)科目的成績統(tǒng)計直方圖,下面為查詢的結(jié)果——
10、在主界面點(diǎn)擊“優(yōu)等生“按鈕后,出現(xiàn)如下界面:
點(diǎn)擊按鈕查詢后,結(jié)果就會在界面上顯示出來。下面為所查詢的結(jié)果——
三、系統(tǒng)功能實(shí)施
以上展示的是系統(tǒng)的所有界面,怎樣才能讓這所有的功能實(shí)現(xiàn)呢?數(shù)據(jù)庫和ADO控件的使用便是其中的關(guān)鍵。
1、建立如下數(shù)據(jù)庫
(學(xué)號、姓名、班級、英語、數(shù)學(xué)、VB、總分、排名)
2、建立如下圖的所有界面:
3、ADO控件和DataGrid控件以及數(shù)據(jù)庫的連接步驟:(這一步在設(shè)計界面的同時完成)
(1)、如何加載ADO控件: 步驟1:
步驟2:
步驟3:
各個界面的ADO控件如何連接數(shù)據(jù)庫(分兩步):
步驟1:
如下面界面中的5個步驟
步驟2:
選中ADO控件Adodc1,點(diǎn)擊鼠標(biāo)右鍵選擇屬性,然后界面設(shè)置如下:
控件綁定數(shù)據(jù)庫的字段操作說明:
屬性設(shè)置說明:下面以學(xué)號為例,姓名、班級等都可參考此。將學(xué)號對應(yīng)的文本框Text1連接Adodc1顯示數(shù)據(jù)庫中的學(xué)號,需要設(shè)置DataSource和DataField兩個屬性,首先選中Text1文本框,并進(jìn)行下面的兩步操作,即可綁定數(shù)據(jù)庫的學(xué)號字段。
設(shè)置DataSource:
設(shè)置DataField:
(2)、如何加載DataGrid控件 控件DataGrid,可以實(shí)現(xiàn)數(shù)據(jù)的批量處理,該控件在控件庫Microsoft DataGrid Control 6.0中。
說明:DataGrid控件屬性設(shè)置
以下為各個界面所對應(yīng)的代碼——
該界面代碼如下:
Private Sub Command1_Click()If Text1.Text = “zgzy” And Text2.Text = “11201” Then Form1.Show Unload me Else MsgBox “用戶名或密碼錯誤,請重新輸入”, vbMsgBoxSetForeground, “系統(tǒng)提示!” End If
Static t As Integer t = t + 1 If t >= 3 Then End End Sub
Private Sub Command2_Click()a = MsgBox(“確定要退出本系統(tǒng)嗎?”, 3 + 32 + 256, “系統(tǒng)提示!”)
If a = 6 Then Unload Me End If End Sub
該界面代碼如下:
Private Sub Command1_Click()xsglfrm.Show End Sub Private Sub Command10_Click()ydsfrm.Show End Sub Private Sub Command3_Click()jszffrm.Show End Sub Private Sub Command4_Click()
pmfrm.Show End Sub Private Sub Command5_Click()
zftjtfrm.Show End Sub Private Sub Command6_Click()
cjcxfrm.Show End Sub Private Sub Command7_Click()
xmcxfrm.Show End Sub Private Sub Command8_Click()
bjcxfrm.Show End Sub Private Sub Command9_Click()
gkcjfrm.Show End Sub
該界面代碼如下:
Private Sub Command1_Click()Me.Adodc1.Recordset.AddNew End Sub
Private Sub Command2_Click()If Me.Adodc1.Recordset.RecordCount = 0 Or Me.Adodc1.Recordset.EOF Then
Exit Sub End If Me.Adodc1.Recordset.Delete Me.Adodc1.Recordset.MoveNext If Me.Adodc1.Recordset.RecordCount = 0 Then
Exit Sub End If If Me.Adodc1.Recordset.EOF Then Me.Adodc1.Recordset.MoveLast End Sub
Private Sub Command4_Click()Me.Adodc1.Recordset.Save End Sub
Private Sub Command5_Click()
Unload Me
mainfrm.Show End Sub
該界面代碼如下: Dim kc_條件 As String Dim kc As String Private Sub Command1_Click()kc_條件 = Me.Text1 Me.Adodc1.RecordSource = “select * from stu where ” + kc + “ ” + kc_條件 Me.Adodc1.Refresh End Sub
Private Sub Form_Load()kc_條件 = “>=92” kc = “vb” End Sub
Private Sub Option1_Click()
kc = “VB” End Sub Private Sub Option2_Click()kc = “math” End Sub Private Sub Option3_Click()kc = “English” End Sub
該界面代碼如下:
Dim kc_條件 As String Dim kc As String Private Sub Command1_Click()kc_條件 = Me.Text1 Me.Adodc1.RecordSource = “select * from stu where ” + kc + “='” + kc_條件 + “'” Me.Adodc1.Refresh End Sub
Private Sub Form_Load()kc = “name” End Sub
該界面代碼如下: Dim kc_條件 As String Dim kc As String Private Sub Command1_Click()kc_條件 = Me.Text1 Me.Adodc1.RecordSource = “select * from stu where ” + kc + “='” + kc_條件 + “'” Me.Adodc1.Refresh End Sub
Private Sub Form_Load()kc = “class” End Sub
該界面代碼如下:
Private Sub Command1_Click()
Dim vb_A As Integer
Dim vb_B As Integer
Dim vb_C As Integer
Dim vb_D As Integer
Dim vb_E As Integer
Dim Math_A As Integer
Dim Math_B As Integer
Dim Math_C As Integer
Dim Math_D As Integer
Dim Math_E As Integer
Dim English_A As Integer
Dim English_B As Integer
Dim English_C As Integer
Dim English_D As Integer
Dim English_E As Integer
Me.Adodc1.RecordSource = “select * from stu where vb>=90”
Me.Adodc1.Refresh
vb_A = Me.Adodc1.Recordset.RecordCount
Me.Text1 = vb_A
Me.Adodc1.RecordSource = “select * from stu where vb>=80 and vb<90”
Me.Adodc1.Refresh
vb_B = Me.Adodc1.Recordset.RecordCount
Me.Text2 = vb_B
Me.Adodc1.RecordSource = “select * from stu where vb>=70 and vb<80”
Me.Adodc1.Refresh
vb_C = Me.Adodc1.Recordset.RecordCount
Me.Text3 = vb_C
Me.Adodc1.RecordSource = “select * from stu where vb>=60”
Me.Adodc1.Refresh
vb_D = Me.Adodc1.Recordset.RecordCount
Me.Text4 = vb_D
Me.Adodc1.RecordSource = “select * from stu where vb<60”
Me.Adodc1.Refresh
vb_B = Me.Adodc1.Recordset.RecordCount
Me.Text5 = vb_E
Me.Adodc1.RecordSource = “select * from stu where math>=90”
Me.Adodc1.Refresh
Math_A = Me.Adodc1.Recordset.RecordCount
Me.Text6 = Math_A
Me.Adodc1.RecordSource = “select * from stu where math>=80 and math<90”
Me.Adodc1.Refresh
Math_B = Me.Adodc1.Recordset.RecordCount
Me.Text7 = Math_B
Me.Adodc1.RecordSource = “select * from stu where math>=70 and math<80”
Me.Adodc1.Refresh
Math_C = Me.Adodc1.Recordset.RecordCount
Me.Text8 = Math_C
Me.Adodc1.RecordSource = “select * from stu where math>=60 ”
Me.Adodc1.Refresh
Math_D = Me.Adodc1.Recordset.RecordCount
Me.Text9 = Math_D
Me.Adodc1.RecordSource = “select * from stu where math<60”
Me.Adodc1.Refresh
Math_E = Me.Adodc1.Recordset.RecordCount
Me.Text10 = Math_E
Me.Adodc1.RecordSource = “select * from stu where english>=90”
Me.Adodc1.Refresh
English_A = Me.Adodc1.Recordset.RecordCount
Me.Text11 = English_A
Me.Adodc1.RecordSource = “select * from stu where english>=80 and english<90”
Me.Adodc1.Refresh
English_B = Me.Adodc1.Recordset.RecordCount
Me.Text12 = English_B
Me.Adodc1.RecordSource = “select * from stu where english>=70 and english<80”
Me.Adodc1.Refresh
English_C = Me.Adodc1.Recordset.RecordCount
Me.Text13 = English_C
Me.Adodc1.RecordSource = “select * from stu where english>=60”
Me.Adodc1.Refresh
English_D = Me.Adodc1.Recordset.RecordCount
Me.Text14 = English_D
Me.Adodc1.RecordSource = “select * from stu where english<60”
Me.Adodc1.Refresh
English_E = Me.Adodc1.Recordset.RecordCount
Me.Text15 = English_E End Sub
Private Sub Form_Load()
Text1.Text = “"
Text2.Text = ”“
Text3.Text = ”“
Text4.Text = ”“
Text5.Text = ”“
Text6.Text = ”“
Text7.Text = ”“
Text8.Text = ”“
Text10.Text = ”“
Text11.Text = ”“
Text12.Text = ”“
Text13.Text = ”“
Text14.Text = ”“
Text15.Text = ”“ End Sub
代碼如下
Private Sub Command1_Click()'計算總分 Dim vb As Integer
Dim math As Integer Dim english As Integer Me.Adodc1.Recordset.MoveFirst For i = 1 To Me.Adodc1.Recordset.RecordCount
vb = Me.Adodc1.Recordset.Fields(”vb“).Value
math = Me.Adodc1.Recordset.Fields(”math“).Value
english = Me.Adodc1.Recordset.Fields(”english“).Value
Me.Adodc1.Recordset.Fields(”total“).Value = vb + math + english
Me.Adodc1.Recordset.Update
Me.Adodc1.Recordset.MoveNext Next i End Sub
Private Sub Command2_Click()'清除總分 Me.Adodc1.Recordset.MoveFirst For i = 1 To Me.Adodc1.Recordset.RecordCount
Me.Adodc1.Recordset.Fields(”total“).Value = Null
Me.Adodc1.Recordset.Update
Me.Adodc1.Recordset.MoveNext Next i End Sub
該界面代碼如下:
Private Sub Command1_Click()Me.Adodc1.RecordSource = ”select * from stu order by total desc“ Me.Adodc1.Refresh Me.Adodc1.Recordset.MoveFirst For i = 1 To Me.Adodc1.Recordset.RecordCount
Me.Adodc1.Recordset.Fields(”mc“).Value = i
Me.Adodc1.Recordset.Update
Me.Adodc1.Recordset.MoveNext
Next i End Sub
Private Sub Command2_Click()Me.Adodc1.Recordset.MoveFirst For i = 1 To Me.Adodc1.Recordset.RecordCount
Me.Adodc1.Recordset.Fields(”mc“).Value = Null
Me.Adodc1.Recordset.Update
Me.Adodc1.Recordset.MoveNext Next i End Sub
該界面代碼如下:
Private Sub Command1_Click()
Me.Adodc1.Refresh
'填充表格數(shù)據(jù)
MSChart1.RowCount = 1
MSChart1.ColumnCount = Me.Adodc1.Recordset.RecordCount
Me.Adodc1.Recordset.MoveFirst
For lngI = 1 To Me.Adodc1.Recordset.RecordCount
MSChart1.Column = lngI
'用Data屬性向MSChart數(shù)據(jù)網(wǎng)格填充數(shù)據(jù)
MSChart1.Data = Val(Adodc1.Recordset.Fields(”vb“).Value)
MSChart1.ColumnLabel = Adodc1.Recordset.Fields(”name“).Value
Adodc1.Recordset.MoveNext
Next lngI
MSChart1.RowLabel = ”VB成績直方圖“ End Sub
Private Sub Command2_Click()Me.Adodc1.Refresh
'填充表格數(shù)據(jù)
MSChart1.RowCount = 1
MSChart1.ColumnCount = Me.Adodc1.Recordset.RecordCount
Me.Adodc1.Recordset.MoveFirst
For lngI = 1 To Me.Adodc1.Recordset.RecordCount
MSChart1.Column = lngI
'用Data屬性向MSChart數(shù)據(jù)網(wǎng)格填充數(shù)據(jù)
MSChart1.Data = Val(Adodc1.Recordset.Fields(”math“).Value)
MSChart1.ColumnLabel = Adodc1.Recordset.Fields(”name“).Value
Adodc1.Recordset.MoveNext
Next lngI
MSChart1.RowLabel = ”Math成績直方圖“ End Sub
該界面代碼如下
Private Sub Command1_Click()Dim vb As Integer Dim math As Integer Dim english As Integer
Me.Adodc1.RecordSource = ”select * from stu where((math+english+vb)/3>=90)or((math+english+vb)/3>=85 and(math=100 or english=100 or vb=100))or((vb+english+math)/3>=85 and((vb>=95 and english >=95)or(english>=95 and math>=95)or(math>=95 and vb>=95)))and(mc<=3)and(vb>=60 and english>=60 and math>=60)" Me.Adodc1.Refresh End Sub
四、總結(jié)和體會
經(jīng)過好幾天的努力我的課程設(shè)計終于完成了。在沒有做課程設(shè)計以前覺得課程設(shè)計好難,我可能做不了,但是通過這次做課程設(shè)計發(fā)現(xiàn)自己錯了。課程設(shè)計不僅是對前面所學(xué)知識的一種檢驗,而且也是對自己能力的一種提高,它并不可怕。通過這次課程設(shè)計使我明白了自己原來知識還比較欠缺,自己要學(xué)習(xí)的東西還太多,以前上課沒怎么認(rèn)真聽,現(xiàn)在知道它重要了,幸好為時不晚,我以后要更加的努力學(xué)好vb。在這次課程設(shè)計中也使我們的同學(xué)關(guān)系更進(jìn)一步了,同學(xué)之間互相幫助,有什么不懂的大家在一起商量,聽聽不同的看法對我們更好的理解知識,所以在這里非常感謝幫助我的同學(xué)。此外,還得出一個結(jié)論:世上無難事,只怕有心人。
在設(shè)計過程中,我通過查閱有關(guān)資料,與同學(xué)交流經(jīng)驗和自學(xué)等方式,使自己學(xué)到了不少知識,也經(jīng)歷了不少艱辛,但收獲同樣巨大。在整個設(shè)計中我懂得了許多東西,也培養(yǎng)了我獨(dú)立工作的能力,樹立了對自己工作能力的信心,相信會對今后的學(xué)習(xí)工作生活有非常重要的影響。而且大大提高了動手的能力,使我充分體會到了在創(chuàng)造過程中探索的艱難和成功時的喜悅。雖然這個設(shè)計做的也不太好,但是在設(shè)計過程中所學(xué)到的東西是這次課程設(shè)計的最大收獲和財富,使我終身受益。