delphi源代码+可执行文件+考试系统(一)

时间:2024-05-09 08:50:59 计算机毕业论文

delphi源代码+可执行文件+考试系统(一)

中文摘要
 
 考试系统为学校教师举行考试提供方便与快捷的条件与查询手段,拥有与真实考试同样的题目分值计算,自动阅卷试题分析等功能.其开发内容主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。利用DELPHI 6.0软件及其提供的各种面向对象的开发工具,建立完整性强、安全性好的数据库,开发出功能完备,易使用的应用程序。经过调试、编译与实现,该程序界面友好、程序设计风格朴素,使用起来美观大方、方便易用。尤其是系统的“自动阅卷模块”的功能极大的减轻工作人员的工作量,并以快速、准确等优点取代人工操作,提高了教师管理考试的工作效率。
 
 
 关键词 : DELPHI 6.0  信息管理系统   数据库  模块   考试系统
 

delphi源代码+可执行文件+考试系统(一)


 引  言 1
 1  Delphi语言概述 2
 1.1  Delphi简介 2
 1.2  数据库系统简介 2
 1.3  本应用软件的基本介绍 3
 2  本应用程序的构成和开发步骤 4
 2.1 可行性研究 4
 2.1.1  经济可行性 4
 2.1.2  时间可行性 4
 2.1.3  技术可行性 4
 2.1.4  社会可行性 5
 2.2  数据库的建立和连接 5
 2.3  系统的总体设计 5
 3   本程序的技术实现及具体功能 13
 3.1  登录的界面与程序设计实现 13
 3.2  得分界面与代码设计实现 13
 3.3  关于界面与代码设计实现14,
 3.4  考试题目界面与代码设计15
 3.5  考试系统主界面设计与代码设计 16
 结  论 21
 致  谢 22
 参 考 文 献 23
 
 
 
 
 引  言
 
 随着经济的发展,社会的进步,计算机越来越深入到我们日常的工作学习及生活中,成为我们日常生活中不可缺少的辅助工具。  随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。它已经深入到日常工作和生活的方方面面,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。然而,虽然现在世界上已经充满了多如牛毛的各种软件,但它们依然不能满足用户的各种特殊需要,人们还不得不开发适合自己特殊需求的软件。以前开发Windows应用软件是专业人员的工作,需要掌握许多专业知识和经过特殊的培训才能胜任。现在不同了,即使你没有接受过严格的程序设计训练,使用Delphi编程语言也一样能够开发出功能强大、适合自己特殊需求的应用程序了。Delphi编程语言继承了其他语言易学易用的特点,特别适合于初学者学习Windows系统编程。    考试系统用计算机管理学生考试活动的一种计算机应用技术的创新,在计算机还未普及之前学生考试都是由教师或工作人员人工管理,阅卷的方式来操作的.现在一般的学校管理都拥有实施计算机考试系统的硬件条件,完全可以采用采用计算机智能化管理,方便师生,提高教师工作效率,节省纸张的使用.符合我国的现代化发展方向,采用计算机作为工具的实用的计算机智能化管理程序来帮助前台管理员进行更有效的考试管理工作。考试系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。    经过分析,我们使用 Delphi编程语言开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。
 因为本人能力有限,加上时间紧迫,所以设计出来的本系统可能功能比较简单,另外本系统是单机版,不能实现网络互联操作,这些都有待于我在以后的工作学习中进一步改进。
 
Delphi简介

1.1  Delphi简介  
 Delphi是Inprise公司出品的一个优秀的可视化程序开发工具软件,它短小精悍,但功能却可以与庞大的visual c++媲美。它易学易用,如同VB,因而被称为“第四代编程语言”。
 从1995年推出Delphi1.0至今已经经历了7个版本,Delphi7.0运行在win9x或winme,win2000,winxp,windowsNT等操作系统下,是一个32位的应用程序开发工具。这里把“VB”比作是傻瓜相机,Delphi是带有自动功能的专业相机。前些年,软件界流行一句话叫“真正的程序员用VC,聪明的程序员用Delphi”。也有的把Delphi称作VB杀手。
1.2  数据库系统简介

 数据库系统是一个实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。它通常由软件、数据库和数据管理员组成。其软件主要包括操作系统、各种宿主语言,实用程序以及数据库管理系统。数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。这些数据为多个应用服务,独立于具体的应用程序。数据库由数据库管理系统统一管理,数据的插入、修改和检索均要通过数据库管理系统进行。数据库管理系统是一种系统软件,它的主要功能是维护数据库并有效地访问数据库中任意部分数据。对数据库的维护包括保持数据的完整性、一致性和安全性。数据管理员负责创建、监控和维护整个数据库,使数据能被任何有权使用的人有效使用。数据库管理员一般是由业务水平较高、资历较深的人员担任。
 数据库系统的个体含义是指一个具体的数据库管理系统软件和用它建立起来的数据库;它的学科含义是指研究、开发、建立、维护和应用数据库系统所涉及的理论、方法、技术所构成的学科。在这一含义下,数据库系统是软件研究领域的一个重要分支,常称为数据库领域。    数据库研究跨越于计算机应用、系统软件和理论三个领域,其中应用促进新系统的研制开发,新系统带来新的理论研究,而理论研究又对前两个领域起着指导作用。数据库系统的出现是计算机应用的一个里程碑,它使得计算机应用从以科学计算为主转向以数据处理为主,并从而使计算机得以在各行各业乃至家庭普遍使用。在它之前的文件系统虽然也能处理持久数据,但是文件系统不提供对任意部分数据的快速访问,而这对数据量不断增大的应用来说是至关重要的。为了实现对任意部分数据的快速访问,就要研究许多优化技术。这些优化技术往往很复杂,是普通用户难以实现的,所以就由系统软件(数据库管理系统)来完成,而提供给用户的是简单易用的数据库语言。由于对数据库的操作都由数据库管理系统完成,所以数据库就可以独立于具体的应用程序而存在,从而数据库又可以为多个用户所共享。因此,数据的独立性和共享性是数据库系统的重要特征。数据共享节省了大量人力物力,为数据库系统的广泛应用奠定了基础。数据库系统的出现使得普通用户能够方便地将日常数据存入计算机并在需要的时候快速访问它们,从而使的计算机走出科研机构进入各行各业、进入家庭。

1.3  本应用软件的基本介绍
 本应用软件先是打开一个启动窗口,就可以进入应用程序的主窗口了。主界面是一个图型界面窗口,整个平台显示采用人性化方式,可以非常方便的进行学生上机考试,自动阅卷统计分数,等基本信息,管理日常经营的基本情况,通过各种条件查询出考试情况的基本信息,以及打印出查询出的基本信息,总之一切学生考试基本信息都会显示在系统平台上,大大提高了管理人员的工作效率。
 
 
本应用程序的构成和开发步骤

 下面从软件工程的角度介绍本程序的基本开发步骤。Delphi 应用程序一般包含以下三个基本部分:    应用程序运行的接口:负责系统整体环境的设置,运行状态的监视,应用程序的启动等。    应用程序的主体:主要完成用户的业务逻辑功能,如题库的组建,题目的随即抽取,自动生成试卷,自动阅卷统计分数等等信息.
应用程序的辅助部分:协助程序主体完成的一些工作。 下面从软件工程的角度描述本程序的开发生命周期,开发过程和组织过程。
2.1 可行性研究
 任何一个系统或一项工程,在建立之前,必须首选进行可行性分析,可行性分析包括两层含义,一是可能性,二是必要性。可能性指开发信息系统的条件是否具备,必要性是指客观上是否真正需要,通过可行性研究,可避免盲目投资,减少政治性要的损失。下面从四方面来讨论:
2.1.1  经济可行性
 主要是只指算一个新的系统开发所需要的投资费用和运算费用,并与估计的新系统收益进行比较,看是否有利。本系统所需的软硬件成本比较低,投资小,具有一定的通过性,因此 ,在经济上是可行的。
2.1.2  时间可行性
 主要包括系统在目前环境下能否正常运行,运行后所引起的各方面,以及这些变化对社会或人的因素所产生的影响。本系统对人事的管理比较全面,可长期使用。
2.1.3  技术可行性
 利用现有的设备,软件及技术人员,新系统的目标能否达到,这也是可行性研究中需要考虑的一个问题。关系型数据库的高速发展使管理信息系统具备了良好的开发环境。本系统使用的Delphi 普及性好,操作简单,用户可以很快掌握使用方法,因此,在技术上是完全可行的。
2.1.4  社会可行性
 人类社会文明的发展已进入信息化的高速发展时期,传统的手工方式支持下的管理模式,已经不能满足各方面的需要。开发本系统的目标不仅是提高工作效率,减轻劳动强度,而且减少出错率,具有很好的社会意义。
2.2  数据库的建立和连接
 这个程序采用的数据库是Microsoft Access2000,Delphi作为数据库的前台开发工具,必须与后台数据库进行连接,这样才能控制和进行操作数据库,数据库的连接方式有两种,ODBC和ADO。
 ODBC是数据库的通用接口,其缺点是效率低;专用接口调用直接速度快,但是通用性差,如果用ODBC连接数据库一般要两个步骤:1.要创建数据源;2.创建描述文件。数据库的建立则时在access2000中建立的,在这里你可以设置数据库的密码,对数据库进行保护。在创建数据源时可以通过BDE administrator进行创建,也可以通过系统控制面板中的ODBC数据源进行建立。而描述文件则可以在Delphi的主程序中用Database Profile中进行建立,之后进行数据库的连接。接下来的工作是建表。同样建表的过程也不是唯一的,但是最终实现的结果是唯一的。你可以通过Access进行建表,也可以通过在 Visual Basic 主程序中建表,也可以通过powerdesigner进行可视化的建立,不过用这种方法,在导入的时候要把数据库要先断开,否则数据库的数据容易丢失。建表的过程注意规范化命名规则,如表的字段名等等。同时也要注意表的字段长度和可否为空。因为以后要设计到主键,外键的问题。如果字段名不同,同一字段长度不同则主键和外键将会连接不上。可见建表时应做好全局的打算。我在程序开发的初期,同样犯了这个错误,导致数据库出错,有时还要向表中新加入字段。导致数据窗口不好用的连锁反映。
 
 
2.3  系统的总体设计
 
 这个管理系统从4月1日开始着手设计开发,经过一段时间的分析,并根据对教师考试管理的具体要求及需要本软件实现的功能,将本软件分为4个大的模块,分别是:第一部分:设置姓名;第二部分:选择考试题目;第三部分:设定考试时间; 第四部分:统计分数。
 程序流程图如下:
 
 
 3   本程序的技术实现及具体功能

登录的界面与程序设计实现

代码设计:
unit kaoshi1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Db, DBTables, ComCtrls;

type
  TKaoShi1Form = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Label2: TLabel;
    ComboBox1: TComboBox;
    Query1: TQuery;
    Label3: TLabel;
    shijian: TEdit;
    UpDown1: TUpDown;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  KaoShi1Form: TKaoShi1Form;

implementation
 uses Kaishi,KaoShi2;

{$R *.DFM}

procedure TKaoShi1Form.Button1Click(Sender: TObject);
begin
if trim(Edit1.text)='' then
  begin
  showmessage('请输入姓名');
  Edit1.SetFocus;
  end
else
  begin
  if MessageDlg('真的要开始考试吗?',mtConfirmation, [mbYes, mbNo], 0)
      = mrYes then
    begin
    KaiShiform.renming:=Edit1.Text;
    Application.CreateForm(TKaoshi2Form, Kaoshi2Form);
    KaoShi2Form.Show;
    KaoShi1Form.Release;
    end
  end;
end;

procedure TKaoShi1Form.FormCreate(Sender: TObject);
var i:byte;
begin
query1.DatabaseName:=kaishiform.AppPath;
Query1.SQL.Add('Select zu from 题库.db group by zu');
Query1.open;
i:=1;
if query1.RecordCount>0 then
 begin
 while i<=query1.RecordCount do
  begin
  combobox1.Items.Add(Query1.fieldbyname('zu').asstring);
  i:=i+1;
  query1.RecNo:=i;
  end;
 combobox1.Text:=trim( combobox1.Items.Strings[0]);
 end;
end;

end.

 

得分界面与代码设计实现
unit Defen;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TDeFenForm = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    renming: TListBox;
    defen: TListBox;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  DeFenForm: TDeFenForm;

implementation
 uses kaishi;
{$R *.DFM}

procedure TDeFenForm.FormCreate(Sender: TObject);
begin
renming.Items.LoadFromFile(kaishiform.AppPath+'\rm.sav');
defen.Items.LoadFromFile(kaishiform.AppPath+'\df.sav');
end;

procedure TDeFenForm.Button1Click(Sender: TObject);
begin
renming.Items.Clear;
defen.Items.Clear;
renming.Items.SaveToFile(kaishiform.AppPath+'\rm.sav');
defen.Items.SaveToFile(kaishiform.AppPath+'\df.sav');
end;

end.

 

 


关于界面与代码设计实现

代码设计:
unit GuanYu;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons;

type
  TGuanYuForm = class(TForm)
    Label1: TLabel;
    Label3: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label8: TLabel;
    Label9: TLabel;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  GuanYuForm: TGuanYuForm;

implementation

{$R *.DFM}

end.

考试题目界面与代码设计

代码设计:
unit kaoshi2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, Db, DBTables, Buttons, DBCtrls, Mask;

type
  TKaoshi2Form = class(TForm)
    Table1: TTable;
    DataSource1: TDataSource;
    Timer1: TTimer;
    Panel1: TPanel;
    Panel2: TPanel;
    GroupBox1: TGroupBox;
    shijian: TLabel;
    Label2: TLabel;
    jiaojuanbt: TBitBtn;
    Bianhao: TDBText;
    Label1: TLabel;
    Panel3: TPanel;
    Panel4: TPanel;
    Timu: TDBText;
    Label5: TLabel;
    Bevel1: TBevel;
    Panel5: TPanel;
    Panel6: TPanel;
    Label4: TLabel;
    DBNavigator1: TDBNavigator;
    DBEdit1: TDBEdit;
    Label3: TLabel;
    DBText1: TDBText;
    DBText2: TDBText;
    DBText3: TDBText;
    DBText4: TDBText;
    Panel7: TPanel;
    DBImage1: TDBImage;
    BatchMove1: TBatchMove;
    jiaojuan: TButton;
    Label6: TLabel;
    Panel8: TPanel;
    DBText5: TDBText;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure jiaojuanbtClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure jiaojuanClick(Sender: TObject);
    procedure Label4DblClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Kaoshi2Form: TKaoshi2Form;

implementation
 uses kaishi,kaoshi1,Jieguo;
{$R *.DFM}

procedure TKaoshi2Form.Timer1Timer(Sender: TObject);
begin
shijian.Caption:=intTostr(strToint(shijian.Caption)-1);
IF StrToInt(shijian.Caption)=0 then
  begin
  if MessageDlg('时间已到,考试结束,请点[确定]查看分数。',mtConfirmation, [mbOk], 0)
      = mrOk then
     begin
     jiaojuan.OnClick(Sender);
     end;
  end;
end;

procedure TKaoshi2Form.FormCreate(Sender: TObject);
var ii,zongfen:byte;
begin
kaoshi2form.Caption:='第'+kaoshi1form.ComboBox1.Text+'组试题';
shijian.Caption:=kaoshi1form.shijian.Text;
ii:=1;
zongfen:=0;
Table1.DatabaseName:=kaishiform.AppPath;
Table1.TableName:='题库1.DB';
table1.EmptyTable;
Table1.Open;
kaoshi1form.Query1.Close;
kaoshi1form.Query1.Sql.Clear;
kaoshi1form.Query1.sql.Add('Select * from 题库.db where zu="'+kaoshi1form.ComboBox1.Text+'"');
kaoshi1form.Query1.Open;
batchMove1.Source:=kaoshi1form.Query1;
batchMove1.Destination:=Table1;
batchMove1.Execute;
table1.First;
While ii<=Table1.RecordCount do
 begin
 zongfen:=zongfen+table1.fieldbyname('fenshu').Asinteger;
 Table1.Edit;
 Table1.FieldByName('DaTi').AsString:='';
 ii:=ii+1;
 Table1.RecNo:=ii;
 end;
 kaishiform.jigefenshu:=Zongfen*0.6;
 label6.Caption:='本套题共'+inttostr(zongfen)+'分,'+'及格分数为'+floattostr(kaishiform.jigefenshu)+'分。';
Table1.First;
end;

procedure TKaoshi2Form.jiaojuanbtClick(Sender: TObject);
begin
 if MessageDlg('交卷后不能再答题,真的要交卷吗?',mtConfirmation, [mbYes, mbNo], 0)
   = mrYes then
   begin
   jiaojuan.OnClick(Sender);
   end

end;

procedure TKaoshi2Form.FormShow(Sender: TObject);
begin
DBEdit1.SetFocus;
end;

procedure TKaoshi2Form.jiaojuanClick(Sender: TObject);
var i:byte;
begin
i:=1;
   Table1.First;
   while i<=Table1.RecordCount do
    begin
    if (ansicomparetext(trim(Table1.FieldByName('DaAn').AsString),
       trim(Table1.FieldByName('DaTi').AsString))=0) then  //比较
     kaishiform.FenShu:=kaishiform.FenShu+Table1.FieldByName('fenshu').AsInteger;//计算分数
     i:=i+1;
     Table1.RecNo:=i;
    end;
   Application.CreateForm(TJieguoForm, JieguoForm);
   JieGuoForm.show;
   kaoshi2form.Release;

end;

procedure TKaoshi2Form.Label4DblClick(Sender: TObject);
begin
dbtext5.Visible:=not dbtext5.Visible;
end;

end.


考试系统主界面设计与代码设计

代码设计:
unit KaiShi;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, ToolWin, ComCtrls, StdCtrls;

type
  TKaiShiForm = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    ToolBar1: TToolBar;
    N4: TMenuItem;
    procedure N3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
  private
    { Private declarations }
  public
    AppPath,RenMing:string;
    FenShu:Byte;
    jigefenshu:double;
    { Public declarations }
  end;

var
  KaiShiForm: TKaiShiForm;

implementation
 uses defen,Guanyu;
{$R *.DFM}

procedure TKaiShiForm.N3Click(Sender: TObject);
begin
 //Action:=caFree;
 if MessageDlg('真的要退出吗?',mtConfirmation, [mbYes, mbNo], 0)
      = mrYes then
    Close;
end;

procedure TKaiShiForm.FormCreate(Sender: TObject);
begin
AppPath:=ExtractFileDir(Application.ExeName);
FenShu:=0;//开始分数为0分
end;

procedure TKaiShiForm.N4Click(Sender: TObject);
begin
if FileExists(AppPath+'\df.sav') then
   begin
   Application.CreateForm(TDefenForm, DefenForm);
   DefenForm.show;
   end
end;

procedure TKaiShiForm.N2Click(Sender: TObject);
begin
  Application.CreateForm(TGuanYuForm, GuanYuForm);
  GuanYuForm.show;
end;

end.

 

 总   结
 考试系统是一个典型的信息管理系统,其主要通过软件工程方面的选择课题、需求分析、总体设计、选用工具、程序模块、系统测试等几个步骤来实现。开发本系统的过程中,首先要对学校考试的流程进行系统调研,熟悉其中的试题设计、题库组建的流程、步骤;其次在系统需求分析过程中,要透过现象看本质,敏锐观察到考试管理中存在的各种问题,并在总体设计把握好对问题的分析、理解,进而解决问题;选用开发工具要选用自己最熟悉、应用较多的开发工具,本系统开发选用DELPHI 6.0,其具有语言简单、功能强大、组件众多的优点。程序模块的编制中,重点把握系统内部完整性、功能性、实用性、便捷性,使其能够协调统一、运行无误。
 
 致  谢
 
 我首先感谢我的指导老师吕老师,在他严格的要求下我懂得了开发软件要有一种极其认真负责的态度。无论做什么事都要大胆的去想去做,这样会有好的创意,才能更有作为。
在这里我还要感谢我们宿舍的其它5个同学。他们和我共同生活了四年,在生活和学习上给了我很大的帮助。
 
 
 参 考 文 献

 1 张春林.Delphi 6程序设计导学.北京:清华大学出版社,2002.5
 2 飞思科技. Delphi6开发者手册. 北京:电子工业出版社,2002.3
 3 飞思科技. Delphi6数据库开发. 北京:电子工业出版社, 2002.1
 4 丁宝康.数据库原理. 北京:经济科学出版社,2004.1
 5 何旭洪.Delphi 6.0数据库系统开发实例导航.北京:人民邮电出版社, 2002.4
 6周璋鹏. 基于B/S结构的学生信息管理系统垢研究与开发.西北电力技术.2003,31(4):15~17,26
 7 李全彬, 顾明亮. 基于ASP技术的学生信息管理系统的研究与开发. 徐州师范大学学报(自然科学版).2001,19(2):25~28
 8 谷军.用Authorware开发学生信息管理系统.计算机与与现代化.2003(7):40~41,44
 9李丹荣,杜维.基于Delphi6.0的实时数据采集与分析系统 机电工程.2003,20(5): 64~67

【delphi源代码+可执行文件+考试系统(一)】相关文章:

delphi+access网络考试系统[开题报告+论文+源代码+答辩ppt+03-07

delphi题库系统(一)03-07

文件自动分类系统Delphi03-08

基于Delphi的试卷智能生成系统设计Delphi+SQL11-23

C语言上机考试系统Delphi7+Access11-23

排课系统的实现Delphi+SQL11-23

家庭理财系统Delphi+SQL11-23

世界杯投注系统Delphi+SQL03-08

计算机远程控制系统设计与实现Delphi03-08