delphi+sql辦公自動化系統(tǒng)+開題報告源程序+論文正文+外文

    時間:2024-10-22 23:29:12 計算機(jī)畢業(yè)論文 我要投稿
    • 相關(guān)推薦

    delphi+sql辦公自動化系統(tǒng)(+開題報告源程序+論文正文+外文

    中文摘要
     
     辦公自動化系統(tǒng)企事業(yè)單位辦公管理人員日常工作的調(diào)度、安排、計劃。文件撰寫、歸檔、調(diào)用、傳真、打印等提供充足的信息和快捷的查詢手段.其開發(fā)內(nèi)容主要包括后臺數(shù)據(jù)庫的建立和維護(hù)以及前端應(yīng)用程序的開發(fā)兩個方面。利用DELPHI 6.0軟件及其提供的各種面向?qū)ο蟮拈_發(fā)工具,建立完整性強(qiáng)、安全性好的數(shù)據(jù)庫,開發(fā)出功能完備,易使用的應(yīng)用程序。經(jīng)過調(diào)試、編譯與實現(xiàn),該程序界面友好、程序設(shè)計風(fēng)格樸素,使用起來美觀大方、方便易用。尤其是系統(tǒng)的“報表生成模塊”的功能極大的減輕工作人員的工作量,并以快速、準(zhǔn)確等優(yōu)點取代人工操作,提高了管理工作效率。
     
     
     關(guān)鍵詞 : DELPHI 6.0  管理信息系統(tǒng)   數(shù)據(jù)庫  模塊 辦公自動化系統(tǒng)
     
     

    delphi+sql辦公自動化系統(tǒng)(+開題報告源程序+論文正文+外文

     引  言 1
     1  Delphi語言概述 2
     1.1  Delphi簡介 2
     1.2  數(shù)據(jù)庫系統(tǒng)簡介 5
     1.3  本應(yīng)用軟件的基本介紹 7
     2  本應(yīng)用程序的構(gòu)成和開發(fā)步驟 9
     2.1 可行性研究 10
     2.1.1  經(jīng)濟(jì)可行性 11
     2.1.2  時間可行性 12
     2.1.3  技術(shù)可行性 13
     2.1.4  社會可行性 14
     2.2  數(shù)據(jù)庫的建立和連接 15
     2.3  系統(tǒng)的總體設(shè)計 17
     3   本程序的技術(shù)實現(xiàn)及具體功能 21
     3.1  登錄的界面與程序設(shè)計實現(xiàn) 24
     3.2  客戶信息界面與代碼設(shè)計實現(xiàn) 34
     3.3  發(fā)送通知界面與代碼設(shè)計實現(xiàn)45
     3.4  人事調(diào)動信息界面與代碼設(shè)計52
     3.5  主界面設(shè)計與代碼設(shè)計 55
     結(jié)  論 60
     致  謝 61
     參 考 文 獻(xiàn) 62
     
     
     
     引  言
     
     隨著經(jīng)濟(jì)的發(fā)展,社會的進(jìn)步,計算機(jī)越來越深入到我們?nèi)粘5墓ぷ鲗W(xué)習(xí)及生活中,成為我們?nèi)粘I钪胁豢扇鄙俚妮o助工具。  隨著科學(xué)技術(shù)的不斷提高,計算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識,它已進(jìn)入人類社會的各個領(lǐng)域并發(fā)揮著越來越重要的作用。它已經(jīng)深入到日常工作和生活的方方面面,比如文字處理、信息管理、輔助設(shè)計、圖形圖像處理、教育培訓(xùn)以及游戲娛樂等。各行各業(yè)的人們無須經(jīng)過特別的訓(xùn)練就能夠使用電腦完成許許多多復(fù)雜的工作。然而,雖然現(xiàn)在世界上已經(jīng)充滿了多如牛毛的各種軟件,但它們依然不能滿足用戶的各種特殊需要,人們還不得不開發(fā)適合自己特殊需求的軟件。以前開發(fā)Windows應(yīng)用軟件是專業(yè)人員的工作,需要掌握許多專業(yè)知識和經(jīng)過特殊的培訓(xùn)才能勝任。現(xiàn)在不同了,即使你沒有接受過嚴(yán)格的程序設(shè)計訓(xùn)練,使用Delphi編程語言也一樣能夠開發(fā)出功能強(qiáng)大、適合自己特殊需求的應(yīng)用程序了。Delphi編程語言繼承了其他語言易學(xué)易用的特點,特別適合于初學(xué)者學(xué)習(xí)Windows系統(tǒng)編程。   辦公自動化系統(tǒng)企事業(yè)單位辦公管理人員日常工作的調(diào)度、安排、計劃。文件撰寫、歸檔、調(diào)用、傳真、打印等提供充足的信息和快捷的查詢手段.其開發(fā)內(nèi)容主要包括后臺數(shù)據(jù)庫的建立和維護(hù)以及前端應(yīng)用程序的開發(fā)兩個方面。貨運(yùn)管理系統(tǒng)是典型的信息管理系統(tǒng)(MIS),其開發(fā)主要包括后臺數(shù)據(jù)庫的建立和維護(hù)以及前端應(yīng)用程序的開發(fā)兩個方面。對于前者要求建立起數(shù)據(jù)一致性和完整性強(qiáng)、數(shù)據(jù)安全性好的庫。而對于后者則要求應(yīng)用程序功能完備,易使用等特點。    經(jīng)過分析,我們使用 Delphi編程語言開發(fā)工具,利用其提供的各種面向?qū)ο蟮拈_發(fā)工具,尤其是數(shù)據(jù)窗口這一能方便而簡潔操縱數(shù)據(jù)庫的智能化對象,首先在短時間內(nèi)建立系統(tǒng)應(yīng)用原型,然后,對初始原型系統(tǒng)進(jìn)行需求迭代,不斷修正和改進(jìn),直到形成用戶滿意的可行系統(tǒng)。
     因為本人能力有限,加上時間緊迫,所以設(shè)計出來的本系統(tǒng)可能功能比較簡單,另外本系統(tǒng)是單機(jī)版,不能實現(xiàn)網(wǎng)絡(luò)互聯(lián)操作,這些都有待于我在以后的工作學(xué)習(xí)中進(jìn)一步改進(jìn)。
     
    Delphi簡介

    1.1  Delphi簡介  
     Delphi是Inprise公司出品的一個優(yōu)秀的可視化程序開發(fā)工具軟件,它短小精悍,但功能卻可以與龐大的visual c++媲美。它易學(xué)易用,如同VB,因而被稱為“第四代編程語言”。
     從1995年推出Delphi1.0至今已經(jīng)經(jīng)歷了7個版本,Delphi7.0運(yùn)行在win9x或winme,win2000,winxp,windowsNT等操作系統(tǒng)下,是一個32位的應(yīng)用程序開發(fā)工具。這里把“VB”比作是傻瓜相機(jī),Delphi是帶有自動功能的專業(yè)相機(jī)。前些年,軟件界流行一句話叫“真正的程序員用VC,聰明的程序員用Delphi”。也有的把Delphi稱作VB殺手。
    1.2  數(shù)據(jù)庫系統(tǒng)簡介

     數(shù)據(jù)庫系統(tǒng)是一個實際可運(yùn)行的存儲、維護(hù)和應(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ù),獨(dú)立于具體的應(yīng)用程序。數(shù)據(jù)庫由數(shù)據(jù)庫管理系統(tǒng)統(tǒng)一管理,數(shù)據(jù)的插入、修改和檢索均要通過數(shù)據(jù)庫管理系統(tǒng)進(jìn)行。數(shù)據(jù)庫管理系統(tǒng)是一種系統(tǒng)軟件,它的主要功能是維護(hù)數(shù)據(jù)庫并有效地訪問數(shù)據(jù)庫中任意部分?jǐn)?shù)據(jù)。對數(shù)據(jù)庫的維護(hù)包括保持?jǐn)?shù)據(jù)的完整性、一致性和安全性。數(shù)據(jù)管理員負(fù)責(zé)創(chuàng)建、監(jiān)控和維護(hù)整個數(shù)據(jù)庫,使數(shù)據(jù)能被任何有權(quán)使用的人有效使用。數(shù)據(jù)庫管理員一般是由業(yè)務(wù)水平較高、資歷較深的人員擔(dān)任。
     數(shù)據(jù)庫系統(tǒng)的個體含義是指一個具體的數(shù)據(jù)庫管理系統(tǒng)軟件和用它建立起來的數(shù)據(jù)庫;它的學(xué)科含義是指研究、開發(fā)、建立、維護(hù)和應(yīng)用數(shù)據(jù)庫系統(tǒng)所涉及的理論、方法、技術(shù)所構(gòu)成的學(xué)科。在這一含義下,數(shù)據(jù)庫系統(tǒng)是軟件研究領(lǐng)域的一個重要分支,常稱為數(shù)據(jù)庫領(lǐng)域。    數(shù)據(jù)庫研究跨越于計算機(jī)應(yīng)用、系統(tǒng)軟件和理論三個領(lǐng)域,其中應(yīng)用促進(jìn)新系統(tǒng)的研制開發(fā),新系統(tǒng)帶來新的理論研究,而理論研究又對前兩個領(lǐng)域起著指導(dǎo)作用。數(shù)據(jù)庫系統(tǒng)的出現(xiàn)是計算機(jī)應(yīng)用的一個里程碑,它使得計算機(jī)應(yīng)用從以科學(xué)計算為主轉(zhuǎn)向以數(shù)據(jù)處理為主,并從而使計算機(jī)得以在各行各業(yè)乃至家庭普遍使用。在它之前的文件系統(tǒng)雖然也能處理持久數(shù)據(jù),但是文件系統(tǒng)不提供對任意部分?jǐn)?shù)據(jù)的快速訪問,而這對數(shù)據(jù)量不斷增大的應(yīng)用來說是至關(guān)重要的。為了實現(xiàn)對任意部分?jǐn)?shù)據(jù)的快速訪問,就要研究許多優(yōu)化技術(shù)。這些優(yōu)化技術(shù)往往很復(fù)雜,是普通用戶難以實現(xiàn)的,所以就由系統(tǒng)軟件(數(shù)據(jù)庫管理系統(tǒng))來完成,而提供給用戶的是簡單易用的數(shù)據(jù)庫語言。由于對數(shù)據(jù)庫的操作都由數(shù)據(jù)庫管理系統(tǒng)完成,所以數(shù)據(jù)庫就可以獨(dú)立于具體的應(yīng)用程序而存在,從而數(shù)據(jù)庫又可以為多個用戶所共享。因此,數(shù)據(jù)的獨(dú)立性和共享性是數(shù)據(jù)庫系統(tǒng)的重要特征。數(shù)據(jù)共享節(jié)省了大量人力物力,為數(shù)據(jù)庫系統(tǒng)的廣泛應(yīng)用奠定了基礎(chǔ)。數(shù)據(jù)庫系統(tǒng)的出現(xiàn)使得普通用戶能夠方便地將日常數(shù)據(jù)存入計算機(jī)并在需要的時候快速訪問它們,從而使的計算機(jī)走出科研機(jī)構(gòu)進(jìn)入各行各業(yè)、進(jìn)入家庭。

    1.3  本應(yīng)用軟件的基本介紹
     本應(yīng)用軟件先是打開一個啟動窗口,就可以進(jìn)入應(yīng)用程序的主窗口了。主界面是一個圖型界面窗口,整個平臺顯示采用人性化方式,可以非常方便的系統(tǒng)管理、字典維護(hù)、抄表,報表管理等基本信息,管理日常經(jīng)營的基本情況,通過各種條件查詢出水電管理的基本信息,以及打印出查詢出的基本信息,總之一切水電管理基本信息都會顯示在系統(tǒng)平臺上,大大提高了管理人員的工作效率。
     
     
    本應(yīng)用程序的構(gòu)成和開發(fā)步驟

     下面從軟件工程的角度介紹本程序的基本開發(fā)步驟。Delphi 應(yīng)用程序一般包含以下三個基本部分:    應(yīng)用程序運(yùn)行的接口:負(fù)責(zé)系統(tǒng)整體環(huán)境的設(shè)置,運(yùn)行狀態(tài)的監(jiān)視,應(yīng)用程序的啟動等。    應(yīng)用程序的主體:主要完成用戶的業(yè)務(wù)邏輯功能,如系統(tǒng)參數(shù)配置,字典維護(hù),抄表,報表生成.等信息.
    應(yīng)用程序的輔助部分:協(xié)助程序主體完成的一些工作。 下面從軟件工程的角度描述本程序的開發(fā)生命周期,開發(fā)過程和組織過程。
    2.1 可行性研究
     任何一個系統(tǒng)或一項工程,在建立之前,必須首選進(jìn)行可行性分析,可行性分析包括兩層含義,一是可能性,二是必要性。可能性指開發(fā)信息系統(tǒng)的條件是否具備,必要性是指客觀上是否真正需要,通過可行性研究,可避免盲目投資,減少政治性要的損失。下面從四方面來討論:
    2.1.1  經(jīng)濟(jì)可行性
     主要是只指算一個新的系統(tǒng)開發(fā)所需要的投資費(fèi)用和運(yùn)算費(fèi)用,并與估計的新系統(tǒng)收益進(jìn)行比較,看是否有利。本系統(tǒng)所需的軟硬件成本比較低,投資小,具有一定的通過性,因此 ,在經(jīng)濟(jì)上是可行的。
    2.1.2  時間可行性
     主要包括系統(tǒng)在目前環(huán)境下能否正常運(yùn)行,運(yùn)行后所引起的各方面,以及這些變化對社會或人的因素所產(chǎn)生的影響。本系統(tǒng)對人事的管理比較全面,可長期使用。
    2.1.3  技術(shù)可行性
     利用現(xiàn)有的設(shè)備,軟件及技術(shù)人員,新系統(tǒng)的目標(biāo)能否達(dá)到,這也是可行性研究中需要考慮的一個問題。關(guān)系型數(shù)據(jù)庫的高速發(fā)展使管理信息系統(tǒng)具備了良好的開發(fā)環(huán)境。本系統(tǒng)使用的Delphi 普及性好,操作簡單,用戶可以很快掌握使用方法,因此,在技術(shù)上是完全可行的。
    2.1.4  社會可行性
     人類社會文明的發(fā)展已進(jìn)入信息化的高速發(fā)展時期,傳統(tǒng)的手工方式支持下的管理模式,已經(jīng)不能滿足各方面的需要。開發(fā)本系統(tǒng)的目標(biāo)不僅是提高工作效率,減輕勞動強(qiáng)度,而且減少出錯率,具有很好的社會意義。
    2.2  數(shù)據(jù)庫的建立和連接
     這個程序采用的數(shù)據(jù)庫是SQL,Delphi作為數(shù)據(jù)庫的前臺開發(fā)工具,必須與后臺數(shù)據(jù)庫進(jìn)行連接,這樣才能控制和進(jìn)行操作數(shù)據(jù)庫,數(shù)據(jù)庫的連接方式有兩種,ODBC和ADO。
     ODBC是數(shù)據(jù)庫的通用接口,其缺點是效率低;專用接口調(diào)用直接速度快,但是通用性差,如果用ODBC連接數(shù)據(jù)庫一般要兩個步驟:1.要創(chuàng)建數(shù)據(jù)源;2.創(chuàng)建描述文件。數(shù)據(jù)庫的建立則時在SQL中建立的,在這里你可以設(shè)置數(shù)據(jù)庫的密碼,對數(shù)據(jù)庫進(jìn)行保護(hù)。在創(chuàng)建數(shù)據(jù)源時可以通過BDE administrator進(jìn)行創(chuàng)建,也可以通過系統(tǒng)控制面板中的ODBC數(shù)據(jù)源進(jìn)行建立。而描述文件則可以在Delphi的主程序中用Database Profile中進(jìn)行建立,之后進(jìn)行數(shù)據(jù)庫的連接。接下來的工作是建表。同樣建表的過程也不是唯一的,但是最終實現(xiàn)的結(jié)果是唯一的。你可以通過Access進(jìn)行建表,也可以通過在 delphi 主程序中建表,也可以通過powerdesigner進(jìn)行可視化的建立,不過用這種方法,在導(dǎo)入的時候要把數(shù)據(jù)庫要先斷開,否則數(shù)據(jù)庫的數(shù)據(jù)容易丟失。建表的過程注意規(guī)范化命名規(guī)則,如表的字段名等等。同時也要注意表的字段長度和可否為空。因為以后要設(shè)計到主鍵,外鍵的問題。如果字段名不同,同一字段長度不同則主鍵和外鍵將會連接不上。可見建表時應(yīng)做好全局的打算。我在程序開發(fā)的初期,同樣犯了這個錯誤,導(dǎo)致數(shù)據(jù)庫出錯,有時還要向表中新加入字段。導(dǎo)致數(shù)據(jù)窗口不好用的連鎖反映。
    2.3  系統(tǒng)的總體設(shè)計
     
     這個管理系統(tǒng)從4月1日開始著手設(shè)計開發(fā),經(jīng)過一段時間的分析,并根據(jù)對水電管理的具體要求及需要本軟件實現(xiàn)的功能,將本軟件分為5個大的模塊,分別是:第一部分:系統(tǒng)管理;第二部分:員工管理;第三部分:客戶管理; 第四部分:業(yè)務(wù)管理;第五部分:賬目管理;第六部分:賬目管理;第七部分:統(tǒng)計分析;
     程序流程圖如下:

     

     3   本程序的技術(shù)實現(xiàn)及具體功能

    登錄的界面與程序設(shè)計實現(xiàn)

    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,'密碼錯誤三次程序?qū)㈥P(guān)閉!','密碼錯誤',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.


    客戶信息界面與代碼設(shè)計實現(xiàn)
    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區(qū)嗎?','系統(tǒng)提示',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區(qū)!');
        self.FormShow(Sender);
        end;
      except
        showmessage('移動到A區(qū)失敗!');
      end;
    end;

    procedure TfrmCustomer.B1Click(Sender: TObject);
    var
      CustomerId :string;
    begin
      CustomerId :=dm.ATCustInfo.FieldValues['CustomerID'];
      try
        if Application.MessageBox('您確實要把此客戶移到B區(qū)嗎?','系統(tǒng)提示',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,'您確定真的要退出系統(tǒng)嗎?','提示',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:='系統(tǒng)時間:'+TimeToStr(Now);
      StatusBar1.Panels[2].Text:='使用時間:'+TimeGetStamp(TimeToStr(LogInTime));
      StatusBar1.Panels[3].Text:='版權(quán)所有:南都信息網(wǎng)';
    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.


     總   結(jié)
     辦公自動化系統(tǒng)是一個典型的信息管理系統(tǒng),其主要通過軟件工程方面的選擇課題、需求分析、總體設(shè)計、選用工具、程序模塊、系統(tǒng)測試等幾個步驟來實現(xiàn)。開發(fā)本系統(tǒng)的過程中,首先要對水電管理進(jìn)行系統(tǒng)調(diào)研,熟悉其中的系統(tǒng)設(shè)置、水電費(fèi)用計算的流程、步驟;其次在系統(tǒng)需求分析過程中,要透過現(xiàn)象看本質(zhì),敏銳觀察到水電管理中存在的各種問題,并在總體設(shè)計把握好對問題的分析、理解,進(jìn)而解決問題;選用開發(fā)工具要選用自己最熟悉、應(yīng)用較多的開發(fā)工具,本系統(tǒng)開發(fā)選用DELPHI 6.0,其具有語言簡單、功能強(qiáng)大、組件眾多的優(yōu)點。程序模塊的編制中,重點把握系統(tǒng)內(nèi)部完整性、功能性、實用性、便捷性,使其能夠協(xié)調(diào)統(tǒng)一、運(yùn)行無誤。
     
     致  謝
     
     我首先感謝我的指導(dǎo)老師呂老師,在他嚴(yán)格的要求下我懂得了開發(fā)軟件要有一種極其認(rèn)真負(fù)責(zé)的態(tài)度。無論做什么事都要大膽的去想去做,這樣會有好的創(chuàng)意,才能更有作為。
    在這里我還要感謝我們宿舍的其它5個同學(xué)。他們和我共同生活了四年,在生活和學(xué)習(xí)上給了我很大的幫助。
     
     
     參 考 文 獻(xiàn)

     1 張春林.Delphi 6程序設(shè)計導(dǎo)學(xué).北京:清華大學(xué)出版社,2002.5
     2 飛思科技. Delphi6開發(fā)者手冊. 北京:電子工業(yè)出版社,2002.3
     3 飛思科技. Delphi6數(shù)據(jù)庫開發(fā). 北京:電子工業(yè)出版社, 2002.1
     4 丁寶康.數(shù)據(jù)庫原理. 北京:經(jīng)濟(jì)科學(xué)出版社,2004.1
     5 何旭洪.Delphi 6.0數(shù)據(jù)庫系統(tǒng)開發(fā)實例導(dǎo)航.北京:人民郵電出版社, 2002.4
     6周璋鵬. 基于B/S結(jié)構(gòu)的學(xué)生信息管理系統(tǒng)垢研究與開發(fā).西北電力技術(shù).2003,31(4):15~17,26
     7 李全彬, 顧明亮. 基于ASP技術(shù)的學(xué)生信息管理系統(tǒng)的研究與開發(fā). 徐州師范大學(xué)學(xué)報(自然科學(xué)版).2001,19(2):25~28
     8 谷軍.用Authorware開發(fā)學(xué)生信息管理系統(tǒng).計算機(jī)與與現(xiàn)代化.2003(7):40~41,44
     9李丹榮,杜維.基于Delphi6.0的實時數(shù)據(jù)采集與分析系統(tǒng) 機(jī)電工程.2003,20(5): 64~67

    【delphi+sql辦公自動化系統(tǒng)+開題報告源程序+論文正文+外文】相關(guān)文章:

    論文開題報告和正文的聯(lián)系03-15

    論文開題報告和正文的格式要求03-15

    論文開題報告及正文寫作方法12-03

    排課系統(tǒng)的實現(xiàn)Delphi+SQL11-23

    家庭理財系統(tǒng)Delphi+SQL11-23

    旅游網(wǎng)站系統(tǒng)的設(shè)計論文開題03-20

    論文正文標(biāo)準(zhǔn)格式08-25

    世界杯投注系統(tǒng)Delphi+SQL03-08

    網(wǎng)站教學(xué)管理系統(tǒng)論文開題報告范文模板03-29

    91久久大香伊蕉在人线_国产综合色产在线观看_欧美亚洲人成网站在线观看_亚洲第一无码精品立川理惠

      香蕉久久高清国产精品观看 | 色青青久久影视 | 日韩AV在线中文字幕高清 | 亚洲精品A人在线观看 | 亚洲精品8MAV在线观看 | 亚洲成a人片在线观看国 |