delphi+sql办公自动化系统+开题报告源程序+论文正文+外文

时间:2023-03-07 11:02:50 计算机毕业论文 我要投稿
  • 相关推荐

delphi+sql办公自动化系统(+开题报告源程序+论文正文+外文

中文摘要
 
 办公自动化系统企事业单位办公管理人员日常工作的调度、安排、计划。文件撰写、归档、调用、传真、打印等提供充足的信息和快捷的查询手段.其开发内容主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。利用DELPHI 6.0软件及其提供的各种面向对象的开发工具,建立完整性强、安全性好的数据库,开发出功能完备,易使用的应用程序。经过调试、编译与实现,该程序界面友好、程序设计风格朴素,使用起来美观大方、方便易用。尤其是系统的“报表生成模块”的功能极大的减轻工作人员的工作量,并以快速、准确等优点取代人工操作,提高了管理工作效率。
 
 
 关键词 : DELPHI 6.0  管理信息系统   数据库  模块 办公自动化系统
 
 

delphi+sql办公自动化系统(+开题报告源程序+论文正文+外文

 引  言 1
 1  Delphi语言概述 2
 1.1  Delphi简介 2
 1.2  数据库系统简介 5
 1.3  本应用软件的基本介绍 7
 2  本应用程序的构成和开发步骤 9
 2.1 可行性研究 10
 2.1.1  经济可行性 11
 2.1.2  时间可行性 12
 2.1.3  技术可行性 13
 2.1.4  社会可行性 14
 2.2  数据库的建立和连接 15
 2.3  系统的总体设计 17
 3   本程序的技术实现及具体功能 21
 3.1  登录的界面与程序设计实现 24
 3.2  客户信息界面与代码设计实现 34
 3.3  发送通知界面与代码设计实现45
 3.4  人事调动信息界面与代码设计52
 3.5  主界面设计与代码设计 55
 结  论 60
 致  谢 61
 参 考 文 献 62
 
 
 
 引  言
 
 随着经济的发展,社会的进步,计算机越来越深入到我们日常的工作学习及生活中,成为我们日常生活中不可缺少的辅助工具。  随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。它已经深入到日常工作和生活的方方面面,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。然而,虽然现在世界上已经充满了多如牛毛的各种软件,但它们依然不能满足用户的各种特殊需要,人们还不得不开发适合自己特殊需求的软件。以前开发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  数据库的建立和连接
 这个程序采用的数据库是SQL,Delphi作为数据库的前台开发工具,必须与后台数据库进行连接,这样才能控制和进行操作数据库,数据库的连接方式有两种,ODBC和ADO。
 ODBC是数据库的通用接口,其缺点是效率低;专用接口调用直接速度快,但是通用性差,如果用ODBC连接数据库一般要两个步骤:1.要创建数据源;2.创建描述文件。数据库的建立则时在SQL中建立的,在这里你可以设置数据库的密码,对数据库进行保护。在创建数据源时可以通过BDE administrator进行创建,也可以通过系统控制面板中的ODBC数据源进行建立。而描述文件则可以在Delphi的主程序中用Database Profile中进行建立,之后进行数据库的连接。接下来的工作是建表。同样建表的过程也不是唯一的,但是最终实现的结果是唯一的。你可以通过Access进行建表,也可以通过在 delphi 主程序中建表,也可以通过powerdesigner进行可视化的建立,不过用这种方法,在导入的时候要把数据库要先断开,否则数据库的数据容易丢失。建表的过程注意规范化命名规则,如表的字段名等等。同时也要注意表的字段长度和可否为空。因为以后要设计到主键,外键的问题。如果字段名不同,同一字段长度不同则主键和外键将会连接不上。可见建表时应做好全局的打算。我在程序开发的初期,同样犯了这个错误,导致数据库出错,有时还要向表中新加入字段。导致数据窗口不好用的连锁反映。
2.3  系统的总体设计
 
 这个管理系统从4月1日开始着手设计开发,经过一段时间的分析,并根据对水电管理的具体要求及需要本软件实现的功能,将本软件分为5个大的模块,分别是:第一部分:系统管理;第二部分:员工管理;第三部分:客户管理; 第四部分:业务管理;第五部分:账目管理;第六部分:账目管理;第七部分:统计分析;
 程序流程图如下:

 

 3   本程序的技术实现及具体功能

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

unit UlogIn;

interface

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

type
  TfrmLogIn = class(TForm)
    Image1: TImage;
    Bevel1: TBevel;
    Label1: TLabel;
    ComboBox1: TComboBox;
    Label2: TLabel;
    Label3: TLabel;
    Edit2: TEdit;
    Bevel2: TBevel;
    Bevel3: TBevel;
    bbtnOK: TBitBtn;
    bbtnCancel: TBitBtn;
    ComboBox2: TComboBox;
    procedure bbtnCancelClick(Sender: TObject);
    procedure ComboBox1DropDown(Sender: TObject);
    procedure bbtnOKClick(Sender: TObject);
    procedure ComboBox2DropDown(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmLogIn: TfrmLogIn;
  LogTimes:Integer=0;
  DeptName:string;
  LogInTime:TDateTime;
  UserName:string;
implementation

uses Umain, MyData, UtodayWork;

{$R *.dfm}

procedure TfrmLogIn.bbtnCancelClick(Sender: TObject);
begin
  Application.Terminate;
end;

procedure TfrmLogIn.ComboBox1DropDown(Sender: TObject);
begin
  ComboBox1.Items.Clear;
   with dm.AQDept do
    begin
      close;
      sql.Clear;
      sql.Add('select distinct department from Users');
      open;
      first;
      while not dm.AQDept.Eof do
       begin
         ComboBox1.Items.Add(dm.AQDept.FieldValues['department']);
         dm.AQDept.Next;
       end;
    end;
end;

procedure TfrmLogIn.bbtnOKClick(Sender: TObject);
begin
  if Edit2.Text='' then
   begin
     ShowMessage('用户密码不能为空!');
     Exit;
   end;
  with dm.AQDept do
   begin
     close;
     sql.Clear;
     sql.Add('select * from Users where Department='''+Trim(ComboBox1.Text)+'''and UserName='''+Trim(ComboBox2.Text)+''' and PWD='''+frmMain.Encrypt(Trim(Edit2.Text))+'''');
     open;
   end;
   if dm.AQDept.Eof then
     begin
       LogTimes:=LogTimes+1;
       if LogTimes<3 then
        begin
          MessageBox(handle,pchar('密码第'+IntToStr(LogTimes)+'次错误,请重新输入!'),'密码错误',MB_OK OR MB_ICONERROR);
          Edit2.Text:='';
          Edit2.SetFocus;
        end
       else
        begin
         MessageBox(handle,'密码错误三次程序将关闭!','密码错误',MB_ICONERROR);
         Application.Terminate;
        end;
     end
   else if dm.AQDept.RecordCount<>0 then
    begin
      DeptName:=Trim(ComboBox1.Text);
      UserName:=Trim(ComboBox2.Text);
      LogInTime:=Now;
      self.Close;
    end;
end;

procedure TfrmLogIn.ComboBox2DropDown(Sender: TObject);
begin
  if ComboBox1.ItemIndex<0 then
   begin
     ShowMessage('请先选择该用户所在的部门!');
     Exit;
   end;
 ComboBox2.Items.Clear;
   with dm.AQDept do
    begin
      close;
      sql.Clear;
      sql.Add('select * from Users where Department='''+Trim(comboBox1.Text)+'''');
      open;
      first;
      while not dm.AQDept.Eof do
       begin
         ComboBox2.Items.Add(dm.AQDept.FieldValues['UserName']);
         dm.AQDept.Next;
       end;
    end;
  
end;

end.


客户信息界面与代码设计实现
unit Ucustom;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, ExtCtrls, Buttons, Grids, DBGrids, ImgList,
  Menus, Mask, DBCtrls;

type
  TfrmCustomer = class(TForm)
    Panel2: TPanel;
    Splitter1: TSplitter;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    bbtnNew: TBitBtn;
    bbtnModify: TBitBtn;
    bbtnDel: TBitBtn;
    bbtnExit: TBitBtn;
    ImageList1: TImageList;
    GroupBox4: TGroupBox;
    DBGrid3: TDBGrid;
    PopupMenu1: TPopupMenu;
    A1: TMenuItem;
    B1: TMenuItem;
    C1: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N8: TMenuItem;
    GroupBox5: TGroupBox;
    DBGrid1: TDBGrid;
    GroupBox1: TGroupBox;
    TreeView1: TTreeView;
    HeaderControl1: THeaderControl;
    ComboBox1: TComboBox;
    Edit8: TEdit;
    DBEdit4: TDBEdit;
    DBEdit9: TDBEdit;
    DBGrid2: TDBGrid;
    bbtnShowAll: TBitBtn;
    procedure bbtnNewClick(Sender: TObject);
    procedure bbtnModifyClick(Sender: TObject);
    procedure bbtnExitClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ComboBox1DropDown(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TreeView1Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N9Click(Sender: TObject);
    procedure bbtnDelClick(Sender: TObject);
    procedure A1Click(Sender: TObject);
    procedure B1Click(Sender: TObject);
    procedure C1Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure DBGrid2DblClick(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure bbtnShowAllClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmCustomer: TfrmCustomer;

implementation

uses MyData, Ufamily, Uconnact, UtodayWorkRecord, UcustomerAdd,
  UcustomerUpdate;

{$R *.dfm}

procedure TfrmCustomer.bbtnNewClick(Sender: TObject);
begin
  frmCustomerAdd.Show;
end;

procedure TfrmCustomer.bbtnModifyClick(Sender: TObject);
begin
  if self.DBGrid1.DataSource.DataSet.IsEmpty then
   begin
    ShowMessage('没有要修改的记录,请选择记录后再试!');
    Exit;
   end
  else
  begin
    frmCustomerUpdate.Show;
  end;
end;

procedure TfrmCustomer.bbtnExitClick(Sender: TObject);
begin
  close;
end;

procedure TfrmCustomer.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action:=caFree;
end;

procedure TfrmCustomer.ComboBox1DropDown(Sender: TObject);
begin
  ComboBox1.Items.Clear;
  with dm.AQCustName do
  begin
    close;
    sql.Clear;
    sql.Add('select distinct DeptName from Customers');
    open;

    first;
    while not Eof do
    begin
      ComboBox1.Items.Add(FieldValues['DeptName']);
      next;
    end;
  end;
end;

procedure TfrmCustomer.FormShow(Sender: TObject);
var
   node1,node2 :TTreeNode;
   secoder :string;
   first:string;
   kind:string ;
begin
  ComboBox1.Text :='';
  TreeView1.Items.Clear;
  with dm.AQCustName do
  begin
    close;
    sql.Clear;
    sql.Add('select distinct Intension from Customers');
    open;
  end;
  dm.AQCustName.First;
  while not dm.AQCustName.Eof do
  begin
    first:= dm.AQCustName.fieldbyname('Intension').AsString;
    node1:=treeview1.Items.AddChild(nil,first);
    node1.ImageIndex :=0;
    node1.SelectedIndex :=0;
    node1.StateIndex :=-1;
    kind:=first;
    with dm.AQDeptName do
    begin
      close;
      sql.Clear;
      sql.Add('select distinct DeptName from Customers where Intension='''+kind+'''');
      open;
    end;
    dm.AQDeptName.First;
    while not dm.AQDeptName.Eof do
    begin
      secoder:=dm.AQDeptName.fieldbyname('DeptName').AsString;
      node2 :=treeview1.Items.AddChild(node1,secoder);
      node2.ImageIndex :=1;
      node2.SelectedIndex :=1;
      node2.StateIndex :=-1;
      dm.AQDeptName.Next;
    end;
    dm.AQCustName.Next;
  end;

end;

procedure TfrmCustomer.TreeView1Click(Sender: TObject);
begin
  if treeview1.Selected.Level=0 then
  begin
    with dm.AQCustInfo do
    begin
      close;
      sql.Clear;
      sql.Add('select * from Customers where Intension='''+treeview1.Selected.Text+'''');
      open;
      dm.ATCustInfo.Clone(dm.AQCustInfo);
    end;
  end
  else
  begin
    with dm.AQCustInfo do
    begin
      close;
      sql.Clear;
      sql.Text :='select * from Customers where  DeptName='''+treeview1.Selected.Text+''' '+
      ' and Intension='''+TreeView1.Selected.Parent.Text+'''';
      open;
      dm.ATCustInfo.Clone(dm.AQCustInfo);
    end;
  end;
end;

procedure TfrmCustomer.ComboBox1Change(Sender: TObject);
var
  Tempstr:string;
  i:integer;
begin
  TempStr:=Trim(ComboBox1.Text);
  if TreeView1.Items.GetFirstNode.Text=TempStr then
  begin
    TreeView1.Items.GetFirstNode.Selected:=True;
  end
  else
  begin
    for i:=1 to TreeView1.Items.Count do
    begin
      if TreeView1.Items.Item[i].Text=TempStr then
      begin
        TreeView1.SetFocus;
        TreeView1.Items.Item[i].Selected :=True;
        Break;
      end
      else
        Continue;
    end;
  end;
end;

procedure TfrmCustomer.N1Click(Sender: TObject);
begin
  bbtnNew.Click;
end;

procedure TfrmCustomer.N2Click(Sender: TObject);
begin
  bbtnModify.Click;
end;

procedure TfrmCustomer.N3Click(Sender: TObject);
begin
  bbtnDel.Click;
end;

procedure TfrmCustomer.N9Click(Sender: TObject);
begin
  frmFamily.bbtnAdd.Click;
  frmFamily.Show;
end;

procedure TfrmCustomer.bbtnDelClick(Sender: TObject);
var
  Customerid,CustomerName:string;
begin
  Customerid :=dm.ATCustInfo.FieldByName('CustomerID').AsString;
  CustomerName:=dm.ATCustInfo.fieldbyname('Cusname').AsString;
  if self.DBGrid1.DataSource.DataSet.IsEmpty then
    begin
     ShowMessage('没有要删除的记录,请选择记录后再试!');
     Exit;
    end
  else  if MessageBox(self.Handle,'将删除与该客户的项目和家庭成员信息,确定吗?','警告',MB_OKCANCEL+MB_ICONWARNING+MB_DefButton2)=IDOk then
  begin
    dm.ATCustInfo.Delete;
    with dm.AQItems do
     begin
      close;
      sql.Clear;
      sql.Add('delete from ProjectItem where Customname='''+CustomerName+'''');
      ExecSQL;
     end;
    with dm.AQCustInfo do
     begin
      close;
      sql.Clear;
      sql.Add('delete from Family where CustomerID='''+Customerid+'''');
      ExecSQL;
     end;
    with dm.AQService do
     begin
       close;
       sql.Clear;
       sql.Add('delete from Service where SerName='''+CustomerName+'''');
       ExecSQL;
     end;
  end;
end;

procedure TfrmCustomer.A1Click(Sender: TObject);
var
  CustomerId :string;
begin
  CustomerId :=dm.ATCustInfo.FieldValues['CustomerID'];
  try
    if Application.MessageBox('您确实要把此客户移到A区吗?','系统提示',MB_YESNO)=6 then
    begin
      with dm.AQCustInfo do
      begin
        close;
        sql.Clear;
        sql.Text :='update Customers set Intension=''一定''  where CustomerID='''+CustomerId+'''';
        ExecSql;
      end;
    showmessage('成功移动到A区!');
    self.FormShow(Sender);
    end;
  except
    showmessage('移动到A区失败!');
  end;
end;

procedure TfrmCustomer.B1Click(Sender: TObject);
var
  CustomerId :string;
begin
  CustomerId :=dm.ATCustInfo.FieldValues['CustomerID'];
  try
    if Application.MessageBox('您确实要把此客户移到B区吗?','系统提示',MB_YESNO)=6 then
    begin
      with dm.AQCustInfo do
      begin
        close;
        sql.Clear;
        sql.Text :='update Customers set Intension=''初定''  where CustomerID='''+CustomerId+'''';
   &enForm(TfrmLogdaily,frmLogdaily,self);
end;

procedure TfrmMain.FormShow(Sender: TObject);
begin
   frmLogIn.ShowModal;
   OpenForm(TfrmTodayWork,frmTodayWork,self);
end;

procedure TfrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
   if MessageBox(self.Handle,'您确定真的要退出系统吗?','提示',MB_OKCANCEL+MB_DefButton2+MB_ICONINFORMATION)=idOK then
    Canclose:=True
   else
    Canclose:=False;
end;

procedure TfrmMain.Timer1Timer(Sender: TObject);
begin
  StatusBar1.Panels[0].Text:='使用者:'+DeptName+'|'+UserName+'     '+'登录时间:'+DateTimeToStr(LogInTime);
  StatusBar1.Panels[1].Text:='系统时间:'+TimeToStr(Now);
  StatusBar1.Panels[2].Text:='使用时间:'+TimeGetStamp(TimeToStr(LogInTime));
  StatusBar1.Panels[3].Text:='版权所有:南都信息网';
end;

procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  AddLogin;
  Action := caFree;
end;

procedure TfrmMain.N1Click(Sender: TObject);
begin
  OpenForm(TfrmServerChart,frmServerChart,self);
end;

procedure TfrmMain.N2Click(Sender: TObject);
begin
 OpenForm(TfrmTotal,frmTotal,self);
end;

procedure TfrmMain.AboutClick(Sender: TObject);
begin
  OpenForm(TfrmAbout,frmAbout,self);
end;

procedure TfrmMain.ExitClick(Sender: TObject);
begin
 Application.Terminate;
end;

procedure TfrmMain.N3Click(Sender: TObject);
begin
  OpenForm(TfrmTotal,frmTotal,self);
end;

procedure TfrmMain.N5Click(Sender: TObject);
begin
   OpenForm(TfrmSendMsg,frmSendMsg,self);
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+sql办公自动化系统+开题报告源程序+论文正文+外文】相关文章:

健康管理系统毕业论文开题报告格式10-18

论文开题报告06-18

论文正文标准格式08-25

项目管理系统开题报告06-30

论文写作开题报告06-09

关于论文开题报告09-27

教研论文开题报告10-18

舞蹈论文开题报告11-06

物流论文开题报告06-28

医学论文写作 - 正文05-26