- 相關(guān)推薦
delphi+access網(wǎng)絡(luò)考試系統(tǒng)[開題報告+論文+源代碼+答辯ppt+
中文摘要
網(wǎng)絡(luò)考試系統(tǒng)為教師實施計算機網(wǎng)絡(luò)考試提供可能的便捷的手段,其開發(fā)內(nèi)容主要包括后臺數(shù)據(jù)庫的建立和維護以及前端應(yīng)用程序的開發(fā)兩個方面。利用DELPHI 6.0軟件及其提供的各種面向?qū)ο蟮拈_發(fā)工具,建立完整性強、安全性好的數(shù)據(jù)庫,開發(fā)出功能完備,易使用的應(yīng)用程序。經(jīng)過調(diào)試、編譯與實現(xiàn),該程序界面友好、程序設(shè)計風格樸素,使用起來美觀大方、方便易用。尤其是系統(tǒng)的“機器自動分配”的功能極大的減輕工作人員的工作量,并以快速、準確等優(yōu)點取代人工操作,提高了網(wǎng)絡(luò)化考試的工作效率。
關(guān)鍵詞 : DELPHI 6.0 信息管理系統(tǒng) 數(shù)據(jù)庫 模塊 網(wǎng)絡(luò)考試系統(tǒng)
引 言 1
1 Delphi語言概述 2
1.1 Delphi簡介 2
1.2 數(shù)據(jù)庫系統(tǒng)簡介 2
1.3 本應(yīng)用軟件的基本介紹 3
2 本應(yīng)用程序的構(gòu)成和開發(fā)步驟 4
2.1 可行性研究 4
2.1.1 經(jīng)濟可行性 4
2.1.2 時間可行性 4
2.1.3 技術(shù)可行性 4
2.1.4 社會可行性 5
2.2 數(shù)據(jù)庫的建立和連接 5
2.3 系統(tǒng)的總體設(shè)計 5
2.4 系統(tǒng)的詳細設(shè)計 7
3 本程序的技術(shù)實現(xiàn)及具體功能 13
3.1 登錄的界面與程序設(shè)計實現(xiàn) 13
3.2 系統(tǒng)維護界面與代碼設(shè)計實現(xiàn)及功能 13
3.3 考員管理界面與代碼設(shè)計實現(xiàn)14,
3.4 考試管理界面與代碼設(shè)計15
3.5 統(tǒng)計報表界面設(shè)計與代碼設(shè)計 16
3.6 主界面與代碼設(shè)計 17
結(jié) 論 21
致 謝 22
參 考 文 獻 23
引 言
隨著經(jīng)濟的發(fā)展,社會的進步,計算機越來越深入到我們?nèi)粘5墓ぷ鲗W習及生活中,成為我們?nèi)粘I钪胁豢扇鄙俚妮o助工具。 隨著科學技術(shù)的不斷提高,計算機科學日漸成熟,其強大的功能已為人們深刻認識,它已進入人類社會的各個領(lǐng)域并發(fā)揮著越來越重要的作用。它已經(jīng)深入到日常工作和生活的方方面面,比如文字處理、信息管理、輔助設(shè)計、圖形圖像處理、教育培訓以及游戲娛樂等。各行各業(yè)的人們無須經(jīng)過特別的訓練就能夠使用電腦完成許許多多復(fù)雜的工作。然而,雖然現(xiàn)在世界上已經(jīng)充滿了多如牛毛的各種軟件,但它們依然不能滿足用戶的各種特殊需要,人們還不得不開發(fā)適合自己特殊需求的軟件。以前開發(fā)Windows應(yīng)用軟件是專業(yè)人員的工作,需要掌握許多專業(yè)知識和經(jīng)過特殊的培訓才能勝任。現(xiàn)在不同了,即使你沒有接受過嚴格的程序設(shè)計訓練,使用Delphi編程語言也一樣能夠開發(fā)出功能強大、適合自己特殊需求的應(yīng)用程序了。Delphi編程語言繼承了其他語言易學易用的特點,特別適合于初學者學習Windows系統(tǒng)編程。 網(wǎng)絡(luò)考試系統(tǒng)采用計算機網(wǎng)絡(luò)化考試使用c/s方式,以建立服務(wù)器,然后多個client接入的方式進行考試的一種計算機應(yīng)用技術(shù)的創(chuàng)新,在計算機還未普及之前學生考試都是由工作人員人工安排,如試卷的打印分發(fā),批閱等來操作的.現(xiàn)在一般的高校計算機房完全有能力進行網(wǎng)絡(luò)化考試的物質(zhì)條件,所以有必要開發(fā)一套網(wǎng)絡(luò)考試系統(tǒng),方便學校的教師的日常工作,減輕教師負擔.網(wǎng)絡(luò)考試系統(tǒng)管理都采用計算機智能化管理,采用計算機作為工具的實用的計算機智能化管理程序來幫助前臺管理員進行更有效的試卷生成,試卷自動批改,學生成績統(tǒng)計等工作。網(wǎng)絡(luò)考試系統(tǒng)是典型的信息管理系統(tǒng)(MIS),其開發(fā)主要包括后臺數(shù)據(jù)庫的建立和維護以及前端應(yīng)用程序的開發(fā)兩個方面。對于前者要求建立起數(shù)據(jù)一致性和完整性強、數(shù)據(jù)安全性好的庫。而對于后者則要求應(yīng)用程序功能完備,易使用等特點。 經(jīng)過分析,我們使用 Delphi編程語言開發(fā)工具,利用其提供的各種面向?qū)ο蟮拈_發(fā)工具,尤其是數(shù)據(jù)窗口這一能方便而簡潔操縱數(shù)據(jù)庫的智能化對象,首先在短時間內(nèi)建立系統(tǒng)應(yīng)用原型,然后,對初始原型系統(tǒng)進行需求迭代,不斷修正和改進,直到形成用戶滿意的可行系統(tǒng)。
因為本人能力有限,加上時間緊迫,所以設(shè)計出來的本系統(tǒng)可能功能比較簡單,這些都有待于我在以后的工作學習中進一步改進。
Delphi簡介
1.1 Delphi簡介
Delphi是Inprise公司出品的一個優(yōu)秀的可視化程序開發(fā)工具軟件,它短小精悍,但功能卻可以與龐大的visual c++媲美。它易學易用,如同VB,因而被稱為“第四代編程語言”。
從1995年推出Delphi1.0至今已經(jīng)經(jīng)歷了7個版本,Delphi7.0運行在win9x或winme,win2000,winxp,windowsNT等操作系統(tǒng)下,是一個32位的應(yīng)用程序開發(fā)工具。這里把“VB”比作是傻瓜相機,Delphi是帶有自動功能的專業(yè)相機。前些年,軟件界流行一句話叫“真正的程序員用VC,聰明的程序員用Delphi”。也有的把Delphi稱作VB殺手。
1.2 數(shù)據(jù)庫系統(tǒng)簡介
數(shù)據(jù)庫系統(tǒng)是一個實際可運行的存儲、維護和應(yīng)用系統(tǒng)提供數(shù)據(jù)的軟件系統(tǒng),是存儲介質(zhì)、處理對象和管理系統(tǒng)的集合體。它通常由軟件、數(shù)據(jù)庫和數(shù)據(jù)管理員組成。其軟件主要包括操作系統(tǒng)、各種宿主語言,實用程序以及數(shù)據(jù)庫管理系統(tǒng)。數(shù)據(jù)庫是依照某種數(shù)據(jù)模型組織起來并存放二級存儲器中的數(shù)據(jù)集合。這些數(shù)據(jù)為多個應(yīng)用服務(wù),獨立于具體的應(yīng)用程序。數(shù)據(jù)庫由數(shù)據(jù)庫管理系統(tǒng)統(tǒng)一管理,數(shù)據(jù)的插入、修改和檢索均要通過數(shù)據(jù)庫管理系統(tǒng)進行。數(shù)據(jù)庫管理系統(tǒng)是一種系統(tǒng)軟件,它的主要功能是維護數(shù)據(jù)庫并有效地訪問數(shù)據(jù)庫中任意部分數(shù)據(jù)。對數(shù)據(jù)庫的維護包括保持數(shù)據(jù)的完整性、一致性和安全性。數(shù)據(jù)管理員負責創(chuàng)建、監(jiān)控和維護整個數(shù)據(jù)庫,使數(shù)據(jù)能被任何有權(quán)使用的人有效使用。數(shù)據(jù)庫管理員一般是由業(yè)務(wù)水平較高、資歷較深的人員擔任。
數(shù)據(jù)庫系統(tǒng)的個體含義是指一個具體的數(shù)據(jù)庫管理系統(tǒng)軟件和用它建立起來的數(shù)據(jù)庫;它的學科含義是指研究、開發(fā)、建立、維護和應(yīng)用數(shù)據(jù)庫系統(tǒng)所涉及的理論、方法、技術(shù)所構(gòu)成的學科。在這一含義下,數(shù)據(jù)庫系統(tǒng)是軟件研究領(lǐng)域的一個重要分支,常稱為數(shù)據(jù)庫領(lǐng)域。
1.3 本應(yīng)用軟件的基本介紹
本應(yīng)用軟件先是打開一個啟動窗口,就可以進入應(yīng)用程序的主窗口了。主界面是一個圖型界面窗口,整個平臺顯示采用人性化方式,首先開啟考試系統(tǒng)服務(wù)器,然后可以非常方便的系統(tǒng)維護,考員管理,考試管理,統(tǒng)計報表,等后期工作,如生成準考證,打印準考證,考場機器分配等管理日常經(jīng)營的基本情況,通過各種條件查詢出考員的基本信息,以及打印出查詢出的基本信息,總之一切考試基本信息都會顯示在系統(tǒng)平臺上,大大提高了考試管理人員的工作效率。
本應(yīng)用程序的構(gòu)成和開發(fā)步驟
下面從軟件工程的角度介紹本程序的基本開發(fā)步驟。Delphi 應(yīng)用程序一般包含以下三個基本部分: 應(yīng)用程序運行的接口:負責系統(tǒng)整體環(huán)境的設(shè)置,運行狀態(tài)的監(jiān)視,應(yīng)用程序的啟動等。 應(yīng)用程序的主體:主要完成用戶的業(yè)務(wù)邏輯功能,如準考證生成,準考證打印,考場安排,成績統(tǒng)計,成績打印等信息.
應(yīng)用程序的輔助部分:協(xié)助程序主體完成的一些工作。 下面從軟件工程的角度描述本程序的開發(fā)生命周期,開發(fā)過程和組織過程。
2.1 可行性研究
任何一個系統(tǒng)或一項工程,在建立之前,必須首選進行可行性分析,可行性分析包括兩層含義,一是可能性,二是必要性?赡苄灾搁_發(fā)信息系統(tǒng)的條件是否具備,必要性是指客觀上是否真正需要,通過可行性研究,可避免盲目投資,減少政治性要的損失。下面從四方面來討論:
2.1.1 經(jīng)濟可行性
主要是只指算一個新的系統(tǒng)開發(fā)所需要的投資費用和運算費用,并與估計的新系統(tǒng)收益進行比較,看是否有利。本系統(tǒng)所需的軟硬件成本比較低,投資小,具有一定的通過性,因此 ,在經(jīng)濟上是可行的。
2.1.2 時間可行性
主要包括系統(tǒng)在目前環(huán)境下能否正常運行,運行后所引起的各方面,以及這些變化對社會或人的因素所產(chǎn)生的影響。本系統(tǒng)對人事的管理比較全面,可長期使用。
2.1.3 技術(shù)可行性
利用現(xiàn)有的設(shè)備,軟件及技術(shù)人員,新系統(tǒng)的目標能否達到,這也是可行性研究中需要考慮的一個問題。關(guān)系型數(shù)據(jù)庫的高速發(fā)展使管理信息系統(tǒng)具備了良好的開發(fā)環(huán)境。本系統(tǒng)使用的Delphi 普及性好,操作簡單,用戶可以很快掌握使用方法,因此,在技術(shù)上是完全可行的。
2.1.4 社會可行性
人類社會文明的發(fā)展已進入信息化的高速發(fā)展時期,傳統(tǒng)的手工方式支持下的管理模式,已經(jīng)不能滿足各方面的需要。開發(fā)本系統(tǒng)的目標不僅是提高工作效率,減輕勞動強度,而且減少出錯率,具有很好的社會意義。
2.2 數(shù)據(jù)庫的建立和連接
這個程序采用的數(shù)據(jù)庫是Microsoft Access2000,Delphi作為數(shù)據(jù)庫的前臺開發(fā)工具,必須與后臺數(shù)據(jù)庫進行連接,這樣才能控制和進行操作數(shù)據(jù)庫,數(shù)據(jù)庫的連接方式有兩種,ODBC和ADO。
ODBC是數(shù)據(jù)庫的通用接口,其缺點是效率低;專用接口調(diào)用直接速度快,但是通用性差,如果用ODBC連接數(shù)據(jù)庫一般要兩個步驟:1.要創(chuàng)建數(shù)據(jù)源;2.創(chuàng)建描述文件。數(shù)據(jù)庫的建立則時在access2000中建立的,在這里你可以設(shè)置數(shù)據(jù)庫的密碼,對數(shù)據(jù)庫進行保護。在創(chuàng)建數(shù)據(jù)源時可以通過BDE administrator進行創(chuàng)建,也可以通過系統(tǒng)控制面板中的ODBC數(shù)據(jù)源進行建立。而描述文件則可以在Delphi的主程序中用Database Profile中進行建立,之后進行數(shù)據(jù)庫的連接。接下來的工作是建表。同樣建表的過程也不是唯一的,但是最終實現(xiàn)的結(jié)果是唯一的。你可以通過Access進行建表,也可以通過在 Visual Basic 主程序中建表,也可以通過powerdesigner進行可視化的建立,不過用這種方法,在導入的時候要把數(shù)據(jù)庫要先斷開,否則數(shù)據(jù)庫的數(shù)據(jù)容易丟失。建表的過程注意規(guī)范化命名規(guī)則,如表的字段名等等。同時也要注意表的字段長度和可否為空。因為以后要設(shè)計到主鍵,外鍵的問題。如果字段名不同,同一字段長度不同則主鍵和外鍵將會連接不上?梢娊ū頃r應(yīng)做好全局的打算。我在程序開發(fā)的初期,同樣犯了這個錯誤,導致數(shù)據(jù)庫出錯,有時還要向表中新加入字段。導致數(shù)據(jù)窗口不好用的連鎖反映。
2.3 系統(tǒng)的總體設(shè)計
這個管理系統(tǒng)從4月1日開始著手設(shè)計開發(fā),經(jīng)過一段時間的分析,并根據(jù)對影音店光盤管理的具體要求及需要本軟件實現(xiàn)的功能,將本軟件分為4個大的模塊,分別是:第一部分:系統(tǒng)維護;第二部分:考員管理;第三部分:考試管理; 第四部分:統(tǒng)計報表。
程序流程圖如下:
系統(tǒng)的詳細設(shè)計
進入Access后要做的第一件事就是建立一個數(shù)據(jù)庫。Access提供了6種用構(gòu)造數(shù)據(jù)庫系統(tǒng)的對象,根據(jù)本課題的需要,在這里選擇一個空的數(shù)據(jù)庫,命名建立了一個數(shù)據(jù)庫名稱為“bysj”,網(wǎng)絡(luò)考試系統(tǒng)。并在此數(shù)據(jù)庫下創(chuàng)建了六個表,用于存放原始數(shù)據(jù)。它只是存放數(shù)據(jù),對其中數(shù)據(jù)的修改要通過對應(yīng)的窗體來完成。創(chuàng)建各表的具體結(jié)構(gòu)如下:
3 本程序的技術(shù)實現(xiàn)及具體功能
登錄的界面與程序設(shè)計實現(xiàn)
代碼設(shè)計:
unit Unlogin;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, jpeg;
type
TLoginfrm = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
Bevel1: TBevel;
Label1: TLabel;
Label2: TLabel;
Bevel2: TBevel;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Loginfrm: TLoginfrm;
implementation
uses Undm, Unmain;
{$R *.dfm}
procedure TLoginfrm.Button1Click(Sender: TObject);
begin
if edit1.Text='' then
begin
application.MessageBox('您沒有輸入登錄名,請輸入你的登錄名。','系統(tǒng)警告',MB_ok+MB_Iconstop);
exit;
end;
if edit2.Text='' then
begin
application.MessageBox('您沒有輸入口令,請輸入你的口令!','系統(tǒng)警告',MB_ok+MB_Iconstop);
exit;
end;
if datamodule1.CDSManerge.Locate('姓名',edit1.Text,[]) then
begin
if datamodule1.CDSManerge.FieldByName('口令').AsString=edit2.Text then
begin
if datamodule1.CDSManerge.Fields[2].Value=2 then
begin
mainfrm.n1.Enabled:=false;
mainfrm.toolbutton1.Enabled:=false;
mainfrm.toolbutton3.Enabled:=false;
end;
close;
end
else
application.MessageBox('你輸入的口令有誤,請重新輸入!','系統(tǒng)警告',mb_ok+mb_iconstop);
end
else
application.MessageBox('你輸入的姓名有誤,請重新輸入!','系統(tǒng)警告',mb_ok+mb_iconstop);
end;
procedure TLoginfrm.Button2Click(Sender: TObject);
begin
application.Terminate;
end;
end.
系統(tǒng)維護界面與代碼設(shè)計實現(xiàn)及功能
權(quán)限管理界面
代碼設(shè)計:
unit Unmanerge;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, Buttons, DBCtrls, Grids, DBGrids, DB, Mask,
ExtCtrls;
type
TOperatorfrm = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
BitBtn1: TBitBtn;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
BitBtn2: TBitBtn;
TabSheet2: TTabSheet;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
Panel1: TPanel;
Label5: TLabel;
DBEdit1: TDBEdit;
DataSource1: TDataSource;
Label6: TLabel;
DBEdit2: TDBEdit;
Label7: TLabel;
DBEdit3: TDBEdit;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
GroupBox2: TGroupBox;
Label8: TLabel;
Label9: TLabel;
BitBtn5: TBitBtn;
TabSheet3: TTabSheet;
DBGrid2: TDBGrid;
DBNavigator2: TDBNavigator;
DataSource2: TDataSource;
Panel2: TPanel;
GroupBox3: TGroupBox;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Operatorfrm: TOperatorfrm;
implementation
uses Undm;
{$R *.dfm}
procedure TOperatorfrm.FormShow(Sender: TObject);
begin
if datamodule1.cDSManerge.Fields[2].Value=2 then
tabsheet2.Enabled:=false;
end;
procedure TOperatorfrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
datamodule1.CDSManerge.ApplyUpdates(-1);
action:=cafree;
end;
procedure TOperatorfrm.BitBtn5Click(Sender: TObject);
begin
close;
end;
procedure TOperatorfrm.BitBtn3Click(Sender: TObject);
begin
datamodule1.cDSManerge.Insert;
dbedit1.Enabled:=true;
dbedit2.Enabled:=true;
dbedit3.Enabled:=true;
dbedit1.SetFocus;
end;
procedure TOperatorfrm.BitBtn4Click(Sender: TObject);
begin
datamodule1.cDSManerge.Delete;
dbedit1.Enabled:=false;
dbedit2.Enabled:=false;
dbedit3.Enabled:=false;
end;
procedure TOperatorfrm.BitBtn1Click(Sender: TObject);
begin
if (edit1.Text='')or(edit2.Text='')or(edit3.Text='')or (edit4.Text='') then
begin
showmessage('請完整輸入你的信息,編輯框中的內(nèi)容不能為空!');
exit;
end
else
if not datamodule1.cDSManerge.Locate('姓名',edit1.Text,[]) then
//begin
showmessage('數(shù)據(jù)庫中沒有這個用戶名,請重新輸入')
else
if edit2.Text=datamodule1.cDSManerge.Fields[1].Value then
if edit3.Text=edit4.Text then
begin
datamodule1.cDSManerge.Edit;
datamodule1.cDSManerge.Fields[1].Value:=edit3.Text;
datamodule1.cDSManerge.Post;
showmessage('你已經(jīng)正確修改你的口令,請記住你的新口令!');
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
end
else
begin
showmessage('你輸入的口令和確認口令不相同,請重新輸入!');
edit3.Text:='';
edit4.Text:='';
end
else
showmessage('你輸入的口令不正確,請重新輸入!');
end;
procedure TOperatorfrm.BitBtn2Click(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
end;
procedure TOperatorfrm.BitBtn6Click(Sender: TObject);
begin
datamodule1.cDSManerge.Edit;
dbedit1.Enabled:=true;
dbedit2.Enabled:=true;
dbedit3.Enabled:=true;
end;
procedure TOperatorfrm.BitBtn7Click(Sender: TObject);
begin
datamodule1.cDSManerge.Post;
dbedit1.Enabled:=false;
dbedit2.Enabled:=false;
dbedit3.Enabled:=false;
end;
end.
考員管理界面與代碼設(shè)計實現(xiàn)
代碼分析
unit Unpass;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, QRCtrls, QuickRpt, ExtCtrls;
type
Tpassfrm = class(TForm)
QuickRep1: TQuickRep;
DetailBand1: TQRBand;
QRLabel1: TQRLabel;
QRLabel2: TQRLabel;
QRLabel3: TQRLabel;
QRLabel4: TQRLabel;
QRLabel5: TQRLabel;
QRLabel6: TQRLabel;
QRDBText1: TQRDBText;
QRDBText2: TQRDBText;
QRDBText3: TQRDBText;
QRDBText4: TQRDBText;
QRLabel7: TQRLabel;
PageFooterBand1: TQRBand;
QRLabel8: TQRLabel;
QRLabel9: TQRLabel;
QRShape1: TQRShape;
QRExpr1: TQRExpr;
private
{ Private declarations }
public
{ Public declarations }
end;
var
passfrm: Tpassfrm;
implementation
uses Undm;
{$R *.dfm}
end.
考試管理界面與代碼設(shè)計
代碼設(shè)計:
unit Unexam;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, DBCtrls, DB, Mask, Grids, DBGrids;
type
Ttikufrm = class(TForm)
DBGrid1: TDBGrid;
Label1: TLabel;
DBEdit1: TDBEdit;
DataSource1: TDataSource;
Label2: TLabel;
DBMemo1: TDBMemo;
DBNavigator1: TDBNavigator;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
GroupBox1: TGroupBox;
Panel1: TPanel;
Label3: TLabel;
DBEdit2: TDBEdit;
Label4: TLabel;
DBEdit3: TDBEdit;
Label5: TLabel;
DBEdit4: TDBEdit;
Label6: TLabel;
DBEdit5: TDBEdit;
Label7: TLabel;
DBEdit6: TDBEdit;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
tikufrm: Ttikufrm;
implementation
uses Undm;
{$R *.dfm}
procedure Ttikufrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
datamodule1.CDSExam.ApplyUpdates(-1);
action:=cafree;
end;
procedure Ttikufrm.BitBtn3Click(Sender: TObject);
begin
close;
end;
procedure Ttikufrm.BitBtn1Click(Sender: TObject);
begin
datamodule1.cDSExam.Insert;
end;
procedure Ttikufrm.BitBtn2Click(Sender: TObject);
begin
datamodule1.cDSExam.Delete;
end;
end.
統(tǒng)計報表界面設(shè)計與代碼設(shè)計
代碼設(shè)計:
unit Unchengji;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, StdCtrls, Mask, DB, Grids, DBGrids, ComCtrls;
type
Tchengjifrm = class(TForm)
DataSource1: TDataSource;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet3: TTabSheet;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
ComboBox1: TComboBox;
Button1: TButton;
Edit1: TEdit;
DBGrid1: TDBGrid;
RGselect: TRadioGroup;
RGid: TRadioGroup;
Edit2: TEdit;
Edit3: TEdit;
GBdate: TGroupBox;
Label3: TLabel;
DatePick: TDateTimePicker;
RGpass: TRadioGroup;
Button2: TButton;
Button3: TButton;
Bevel1: TBevel;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
procedure RGselectClick(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
chengjifrm: Tchengjifrm;
implementation
uses Undm, Unchengjiprint;
{$R *.dfm}
procedure Tchengjifrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;
procedure Tchengjifrm.Button1Click(Sender: TObject);
var item:string;
begin
ITEM:=combobox1.ITEMS.strings[combobox1.ITEMINDEX];
if not (edit1.Text='') then
begin
if item='準考證號' then
begin
datamodule1.cdsstudent.filtered:=false;
datamodule1.cDSStudent.filter:=format('準考證號=%s',[edit1.text]);
datamodule1.cdsstudent.filtered:=true;
if datamodule1.CDSStudent.IsEmpty then
showmessage('數(shù)據(jù)庫中沒有符合條件的數(shù)據(jù)!');
end;
if item='姓名' then
begin
datamodule1.cdsstudent.filtered:=false;
datamodule1.cDSStudent.filter:=format('姓名=%s',[edit1.text]);
datamodule1.cdsstudent.filtered:=true;
if datamodule1.CDSStudent.IsEmpty then
showmessage('數(shù)據(jù)庫中沒有符合條件的數(shù)據(jù)!');
end;
if item='身份證號' then
begin
datamodule1.cdsstudent.filtered:=false;
datamodule1.cDSStudent.filter:=format('身份證號=%d',[strtoint(edit1.text)]);
datamodule1.cdsstudent.filtered:=true;
if datamodule1.CDSStudent.IsEmpty then
showmessage('數(shù)據(jù)庫中沒有符合條件的數(shù)據(jù)!');
end;
{if item='狀態(tài)' then
begin
datamodule1.cDSStudent.filter:=format('狀態(tài)=%s',[edit1.text]);
datamodule1.cdsstudent.filtered:=true;
if datamodule1.CDSStudent.IsEmpty then
showmessage('數(shù)據(jù)庫中沒有符合條件的數(shù)據(jù)!');
end; }
end
else
if item='' then
datamodule1.cdsstudent.filtered:=false
else
showmessage('請輸入查詢值!');
end;
procedure Tchengjifrm.RGselectClick(Sender: TObject);
begin
case rgselect.ItemIndex of
0:begin
rgid.Enabled:=true;
gbdate.Enabled:=false;
rgpass.Enabled:=false;
end;
1:begin
rgid.Enabled:=false;
gbdate.Enabled:=true;
rgpass.Enabled:=false;
end;
else
begin
rgid.Enabled:=false;
gbdate.Enabled:=false;
rgpass.Enabled:=true;
end;
end;
end;
procedure Tchengjifrm.Button2Click(Sender: TObject);
begin
datamodule1.CDSStudent.Filtered:=false;
if rgselect.Enabled=true then
if rgselect.ItemIndex=1 then
begin
datamodule1.CDSStudent.Filter:=format('準考證號>=''%s'' AND 準考證號<=''%S''',[edit2.text,edit3.text]);
datamodule1.cDSStudent.Filtered:=TRUE;
end;
if gbdate.Enabled=true then
begin
datamodule1.CDSStudent.Filter:=format('考試日期=''%s''',[datetostr(datepick.Date)]);
datamodule1.cDSStudent.Filtered:=TRUE;
end;
if rgpass.Enabled=true then
if rgpass.ItemIndex=0 then
begin
datamodule1.CDSStudent.Filter:='得分>=60';
 bsp; 論
網(wǎng)絡(luò)考試系統(tǒng)是一個典型的信息管理系統(tǒng),其主要通過軟件工程方面的選擇課題、需求分析、總體設(shè)計、選用工具、程序模塊、系統(tǒng)測試等幾個步驟來實現(xiàn)。開發(fā)本系統(tǒng)的過程中,首先要對高校網(wǎng)絡(luò)考試流程管理進行系統(tǒng)調(diào)研,熟悉其中的新光盤登記、光盤出借的流程、步驟;其次在系統(tǒng)需求分析過程中,要透過現(xiàn)象看本質(zhì),敏銳觀察到光盤管理中存在的各種問題,并在總體設(shè)計把握好對問題的分析、理解,進而解決問題;選用開發(fā)工具要選用自己最熟悉、應(yīng)用較多的開發(fā)工具,本系統(tǒng)開發(fā)選用DELPHI 6.0,其具有語言簡單、功能強大、組件眾多的優(yōu)點。程序模塊的編制中,重點把握系統(tǒng)內(nèi)部完整性、功能性、實用性、便捷性,使其能夠協(xié)調(diào)統(tǒng)一、運行無誤。
致 謝
我首先感謝我的指導老師呂老師,在他嚴格的要求下我懂得了開發(fā)軟件要有一種極其認真負責的態(tài)度。無論做什么事都要大膽的去想去做,這樣會有好的創(chuàng)意,才能更有作為。
在這里我還要感謝我們宿舍的其它5個同學。他們和我共同生活了四年,在生活和學習上給了我很大的幫助。
參 考 文 獻
1 張春林.Delphi 6程序設(shè)計導學.北京:清華大學出版社,2002.5
2 飛思科技. Delphi6開發(fā)者手冊. 北京:電子工業(yè)出版社,2002.3
3 飛思科技. Delphi6數(shù)據(jù)庫開發(fā). 北京:電子工業(yè)出版社, 2002.1
4 丁寶康.數(shù)據(jù)庫原理. 北京:經(jīng)濟科學出版社,2004.1
5 何旭洪.Delphi 6.0數(shù)據(jù)庫系統(tǒng)開發(fā)實例導航.北京:人民郵電出版社, 2002.4
6周璋鵬. 基于B/S結(jié)構(gòu)的學生信息管理系統(tǒng)垢研究與開發(fā).西北電力技術(shù).2003,31(4):15~17,26
7 李全彬, 顧明亮. 基于ASP技術(shù)的學生信息管理系統(tǒng)的研究與開發(fā). 徐州師范大學學報(自然科學版).2001,19(2):25~28
8 谷軍.用Authorware開發(fā)學生信息管理系統(tǒng).計算機與與現(xiàn)代化.2003(7):40~41,44
9李丹榮,杜維.基于Delphi6.0的實時數(shù)據(jù)采集與分析系統(tǒng) 機電工程.2003,20(5): 64~67
【delphi+access網(wǎng)絡(luò)考試系統(tǒng)[開題報告+論文+源代碼+答辯pp】相關(guān)文章:
論文格式開題報告答辯范例11-27
大學論文開題答辯技巧02-13
(企業(yè)進銷存管理系統(tǒng))開題報告答辯03-28
開題報告怎么答辯02-15
網(wǎng)絡(luò)游戲產(chǎn)業(yè)的論文開題報告03-22
大學生論文開題答辯技巧02-15
校園網(wǎng)站畢業(yè)設(shè)計論文開題報告答辯03-09