欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      軟件工程課程設計 (個人賬本管理系統(tǒng))

      時間:2019-05-14 14:36:45下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關的《軟件工程課程設計 (個人賬本管理系統(tǒng))》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《軟件工程課程設計 (個人賬本管理系統(tǒng))》。

      第一篇:軟件工程課程設計 (個人賬本管理系統(tǒng))

      軟件工程課程設計報告---個人帳本管理

      一、需求分析

      1、系統(tǒng)開發(fā)背景

      當今社會是一個信息與科技并行的時代,在社會中消費時每個人都有的社會行為,消費與人的日常生活是息息相關的,一個人如果有一個很好的消費觀的話能給自己帶來很到好處。鑒于此目的,編寫了一個小型的個人賬本管理系統(tǒng)。此系統(tǒng)是一個簡單的系統(tǒng),可以管理個人的日常消費,可以為一般人所使用。對于業(yè)務較多的用戶來說此系統(tǒng)就不是一個很好的選擇。

      2、軟件主要組成及功能

      ? 收入模塊

      功能:錄入收入

      任何時間錄入你所得到的收入(共有以下幾種選擇:

      1、工資;

      2、獎金;

      3、其他收入;);

      輸入你所的到的金額; 錄入金額的原因(可選);

      ? 支出模塊

      功能:支出的記錄

      什么時候

      什么類型的支出(1、生活費;

      2、日常用品;

      3、休閑娛樂;

      4、社交應酬;

      5、交通費;

      6、通訊費;

      7、醫(yī)療保??;

      8、其他支出)輸入支出的金額 什么原因的支出

      ? 查詢模塊 功能:查詢

      以選擇查詢的類型(1、支出;

      2、收入;

      3、全部)

      時間(1、今天;

      2、昨天;

      3、本周;

      4、上周;

      5、本月;

      6、上月;

      7、本年;

      8、去年;

      9、全部;)以及什么類別

      消費的金額在什么范圍之類的記錄 將時間,類別,金額,備注顯示出來

      ? 統(tǒng)計模塊 功能:統(tǒng)計

      選擇統(tǒng)計的類型(1、支出;

      2、收入;)

      時間(1、今天;

      2、昨天;

      3、本周;

      4、上周;

      5、本月;

      6、上月;

      7、本年;

      8、去年;

      9、全部;)什么類別

      統(tǒng)計的方式(1、總和;

      2、平均值;

      3、最大值;

      4、最小值;)將時間,類別,方式,數(shù)值顯示出來

      ? 管理模塊

      功能:完成系統(tǒng)相應的管理

      可以對數(shù)據(jù)庫進行備份 數(shù)據(jù)庫的還原 查看日志操作。

      ? 修改模塊

      功能:對已有數(shù)據(jù)進行修改更新操作

      對記錄進行修改 對記錄刪除。

      ? 退出模塊 退出此系統(tǒng)3、4、用戶特點及一般約束 功能需求(DFD圖)

      收入 頂層圖:

      填寫相應的信息收入錄入事務確認成功錄入成功

      一層圖: 收入錄入事務填寫相應的信息返回確認信息確認成功錄入成功D:添加收入信息

      支出 頂層圖:

      填寫相應的信息支出錄入事務確認成功錄入成功

      一層圖:

      填寫相應的信息支出錄入事務返回確認信息確認成功錄入成功D:添加支出信息

      查詢 頂層圖:

      填寫相應的信息查詢命令輸入事務確認成功查詢成功

      一層圖: 查詢命令輸入事務填寫相應的信息返回確認信息確認成功顯示查詢結(jié)果D:查詢信息

      統(tǒng)計 頂層圖:

      填寫相應的信息統(tǒng)計命令輸入事務確認成功顯示統(tǒng)計結(jié)果

      一層圖:

      填寫相應的信息統(tǒng)計命令輸入事務返回確認信息確認成功顯示統(tǒng)計結(jié)果D:查詢信息

      管理 頂層圖:

      填寫相應的信息管理命令輸入事務確認成功管理成功

      一層圖: 管理命令輸入事務填寫相應的信息返回確認信息確認成功處理成功D:記錄 查詢

      修改 頂層圖:

      填寫相應的信息修改命令輸入事務確認成功修改成功

      一層圖:

      填寫相應的信息修改命令輸入事務返回確認信息確認成功修改成功D:查詢數(shù)據(jù)庫

      5、外部接口需求

      在用戶界面方面要求對每一個操作都以主界面為前提彈出相應的對話框,硬軟件接口方面沒有特別的需求,一般用戶都可以直接使用。

      6、性能需求

      因為系統(tǒng)本身較小,實際使用的人群的特點,響應時間可能有不同的要求。

      7、軟件屬性需求

      在數(shù)據(jù)的檢索、數(shù)據(jù)的增刪改方面必須做到絲毫不差,滿足軟件開發(fā)的正確性的要求。必須充分考慮軟件的異常處理機制以及軟件的復用性,以增強軟件的健壯性。

      在軟件的保密性方面可以不用考慮,此軟件主要是面向小型用戶,對系統(tǒng)的保密沒有要求。

      所開發(fā)出來的軟件必須是可維護的,要有可以升級的空間,要預留接口,方便后面軟件的升級。

      8、二、項目概要設計

      1、總體設計(系統(tǒng)總流程圖)

      個人賬本管理系統(tǒng)數(shù)據(jù)需求(ER圖)

      收入管理模塊支出管理模塊查詢功能模塊統(tǒng)計模塊管理模塊修改模塊退出模塊

      2、各個界面的截圖及相應的操作規(guī)則

      在第一次運行是要首先運行此文件對控件進行注冊。

      ? 第一次運行的結(jié)果如圖所示

      ? 收入

      ? 支出

      ? 查詢

      ? 統(tǒng)計

      ? 管理

      ? 退出

      三、詳細設計

      1、進行項目詳細設計工作;

      2、寫出詳細設計說明書。

      四、編 碼

      1、此系統(tǒng)用MFC來編寫。

      2、編碼分工:

      3、各個模塊核心代碼 查詢模塊:

      // CSelect 消息處理程序

      void CSelect::OnBnClickedOk(){ // TODO: 在此添加控件通知處理程序代碼

      UpdateData(true);CString type,date,kind,count,start,end;m_type.GetLBText(m_type.GetCurSel(),type);m_date.GetLBText(m_date.GetCurSel(),date);m_kind.GetLBText(m_kind.GetCurSel(),kind);m_count.GetLBText(m_count.GetCurSel(),count);CTime t = CTime::GetCurrentTime();int tyear,tmonth,tday;CString year,month,day;tyear=t.GetYear();tmonth=t.GetMonth();tday=t.GetDay();if(date==“今天”){

      year.Format(_T(“%d”),tyear);

      if(tmonth<10)

      month.Format(_T(“0%d”),tmonth);

      else

      month.Format(_T(“%d”),tmonth);

      if(tday<10)

      day.Format(_T(“0%d”),tday);

      //確定查詢

      else

      day.Format(_T(“%d”),tday);

      start=year+_T(“-”)+month+_T(“-”)+day;

      end=year+_T(“-”)+month+_T(“-”)+day;}

      CString str,str1,str2,str3,str4;ADOConn m_AdoConn;m_AdoConn.OnInitADOConn();CString sql;

      if(type==_T(“0”)&&kind!=_T(“所有收入”))

      sql.Format(_T(“select 時間,類別,金額,備注from mymoney where 類型= ”+type+“ and 類別= '”+kind+“' and 時間>= '”+start+“'and 時間<= '”+end+“' and 金額>= ”+count+“ order by 時間asc”));

      _RecordsetPtr m_pRecordset;m_pRecordset = m_AdoConn.GetRecordSet((_bstr_t)sql);m_list.DeleteAllItems();while(m_AdoConn.m_pRecordset->adoEOF==0){

      m_list.InsertItem(0,_T(“"));

      m_list.SetItemText(0,0,(_bstr_t)m_pRecordset->GetCollect(_T(”時間“)));

      m_list.SetItemText(0,1,(_bstr_t)m_pRecordset->GetCollect(_T(”類別“)));

      m_list.SetItemText(0,2,(_bstr_t)m_pRecordset->GetCollect(_T(”金額“)));

      m_list.SetItemText(0,3,(_bstr_t)m_pRecordset->GetCollect(_T(”備注“)));

      m_pRecordset->MoveNext();}

      str=m_list.GetItemText(0,0);if(str==_T(”“)){

      m_list.DeleteAllItems();

      m_date.GetLBText(m_date.GetCurSel(),str1);

      m_kind.GetLBText(m_kind.GetCurSel(),str2);

      m_count.GetLBText(m_count.GetCurSel(),str3);

      str4=_T(”無此記錄“);

      m_list.InsertItem(0,_T(”“));

      }

      } m_list.SetItemText(0,0,str1);m_list.SetItemText(0,1,str2);m_list.SetItemText(0,2,str3);m_list.SetItemText(0,3,str4);管理模塊:

      void CManage::OnBnClickedButton1()//數(shù)據(jù)庫備份 { // TODO: 在此添加控件通知處理程序代碼

      m_button1.EnableWindow(false);m_button2.EnableWindow(true);m_static.SetWindowTextW(_T(”請選擇備份目錄:“));m_static.ShowWindow(SW_SHOW);m_button.ShowWindow(SW_SHOW);m_edit.ShowWindow(SW_SHOW);m_edit.SetWindowTextW(_T(”“));flag=1;strname=_T(”“);UpdateData(false);Invalidate(true);}

      void CManage::OnBnClickedButton2()//數(shù)據(jù)庫還原 { // TODO: 在此添加控件通知處理程序代碼

      m_button2.EnableWindow(false);m_button1.EnableWindow(true);m_static.SetWindowTextW(_T(”請選擇還原文件目錄:“));m_static.ShowWindow(SW_SHOW);m_button.ShowWindow(SW_SHOW);m_edit.ShowWindow(SW_SHOW);m_edit.SetWindowTextW(_T(”“));flag=-1;strname=_T(”“);UpdateData(false);Invalidate(true);}

      void CManage::OnBnClickedButton3()//察看日志 { // TODO: 在此添加控件通知處理程序代碼

      CFile file;CTime t=CTime::GetCurrentTime();int tyear,tmonth,tday,thour,tmin,tsec;CString year,month,day,hour,min,sec;tyear=t.GetYear();tmonth=t.GetMonth();tday=t.GetDay();thour=t.GetHour();tmin=t.GetMinute();tsec=t.GetSecond();year.Format(_T(”%d“),tyear);month.Format(_T(”%d“),tmonth);day.Format(_T(”%d“),tday);hour.Format(_T(”%d“),thour);min.Format(_T(”%d“),tmin);sec.Format(_T(”%d“),sec);

      CString str;str=year+_T(”“)+month+_T(”“)+day+_T(” “)+hour+_T(”:“)+min+_T(” 察看日志rnrn“);}

      void CManage::OnBnClickedButton4()//瀏覽 { // TODO: 在此添加控件通知處理程序代碼

      if(flag==1){

      UpdateData(true);

      TCHAR szDir[MAX_PATH];

      BROWSEINFO bi;

      ITEMIDLIST *pidl;

      bi.hwndOwner = this->m_hWnd;

      bi.pidlRoot = NULL;

      bi.pszDisplayName = szDir;

      bi.lpszTitle = _T(”請選擇目錄“);

      bi.ulFlags = BIF_RETURNONLYFSDIRS;

      bi.lpfn = NULL;

      bi.lParam = 0;

      bi.iImage = 0;

      pidl = SHBrowseForFolder(&bi);

      if(pidl == NULL)return;

      if(!SHGetPathFromIDList(pidl, szDir))return;

      else strname=szDir;

      UpdateData(false);} else if(flag==-1){

      CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,_T(”數(shù)據(jù)庫文件|moneyback.db||“));

      if(dlg.DoModal()==IDOK)

      {

      strname=dlg.GetPathName();

      }

      if(strname!=_T(”“))

      {

      UpdateData(false);

      } } }

      收入模塊:

      // CIncome 消息處理程序

      void CIncome::OnBnClickedOk()//確定按鈕 { // TODO: 在此添加控件通知處理程序代碼

      UpdateData(true);if(m_count.IsEmpty()){

      MessageBox(_T(”金額不能為空“));

      return;}

      ADOConn m_AdoConn;m_AdoConn.OnInitADOConn();_bstr_t sql;sql = ”select * from mymoney“;_RecordsetPtr m_pRecordset;m_pRecordset=m_AdoConn.GetRecordSet(sql);CString mydate,mykind;m_date.GetLBText(m_date.GetCurSel(),mydate);m_kind.GetLBText(m_kind.GetCurSel(),mykind);mydate.Remove(' ');try {

      m_pRecordset->AddNew();//添加新行

      m_pRecordset->PutCollect(”類型“,(_bstr_t)_T(”0“));

      m_pRecordset->PutCollect(”時間“,(_bstr_t)mydate);

      m_pRecordset->PutCollect(”類別“,(_bstr_t)mykind);

      m_pRecordset->PutCollect(”金額“,(_bstr_t)m_count);

      m_pRecordset->PutCollect(”備注“,(_bstr_t)m_remark);

      m_pRecordset->GetFields()->GetItem(”類型“)->Value =(_bstr_t)_T(”0“);

      m_pRecordset->GetFields()->GetItem(”時間“)->Value =(_bstr_t)mydate;

      m_pRecordset->GetFields()->GetItem(”類別“)->Value =(_bstr_t)mykind;

      m_pRecordset->GetFields()->GetItem(”金額“)->Value =(_bstr_t)m_count;

      m_pRecordset->GetFields()->GetItem(”備注“)->Value =(_bstr_t)m_remark;

      m_pRecordset->Update();

      m_AdoConn.ExitConnect();} catch(...){

      MessageBox(_T(”操作失敗“));

      return;} }

      統(tǒng)計模塊:

      // CCount 消息處理程序

      void CCount::OnBnClickedOk()//確定統(tǒng)計 { // TODO: 在此添加控件通知處理程序代碼

      UpdateData(true);CString type,date,kind,way,start,end;m_type.GetLBText(m_type.GetCurSel(),type);m_date.GetLBText(m_date.GetCurSel(),date);m_kind.GetLBText(m_kind.GetCurSel(),kind);m_way.GetLBText(m_way.GetCurSel(),way);

      if(type==”支出“)

      type=_T(”1“);else

      type=_T(”0“);

      CTime t = CTime::GetCurrentTime();int tyear,tmonth,tday;CString year,month,day;tyear=t.GetYear();tmonth=t.GetMonth();tday=t.GetDay();

      if(date==”今天“){

      year.Format(_T(”%d“),tyear);

      month.Format(_T(”%d“),tmonth);

      day.Format(_T(”%d“),tday);

      start=year+_T(”-“)+month+_T(”-“)+day;

      end=year+_T(”-“)+month+_T(”-“)+day;} ADOConn m_AdoConn;m_AdoConn.OnInitADOConn();CString sql;

      if(kind!=_T(”所有收入“)&&kind!=_T(”所有支出“)&&way==_T(”總和“))

      sql.Format(_T(”select sum(金額)as my from mymoney where 類型= “+type+” and 類別= '“+kind+”' and 時間>= '“+start+”'and 時間<= '“+end+”' “));

      _RecordsetPtr m_pRecordset;m_pRecordset = m_AdoConn.GetRecordSet((_bstr_t)sql);

      while(m_AdoConn.m_pRecordset->adoEOF==0){

      m_list.InsertItem(0,_T(”“));

      m_list.SetItemText(0,0,date);

      m_list.SetItemText(0,1,kind);

      m_list.SetItemText(0,2,way);

      try

      { m_list.SetItemText(0,3,(_bstr_t)m_pRecordset->GetCollect(_T(”my“)));

      }

      catch(...)

      {

      m_list.SetItemText(0,3,_T(”0“));

      }

      m_pRecordset->MoveNext();} } 支出模塊:

      // COutlay 消息處理程序

      void COutlay::OnBnClickedOk(){ // TODO: 在此添加控件通知處理程序代碼

      UpdateData(true);if(m_count.IsEmpty()){

      MessageBox(_T(”金額不能為空“));

      return;} ADOConn m_AdoConn;m_AdoConn.OnInitADOConn();_bstr_t sql;sql = ”select * from mymoney“;_RecordsetPtr m_pRecordset;m_pRecordset=m_AdoConn.GetRecordSet(sql);CString mydate,mykind;m_date.GetLBText(m_date.GetCurSel(),mydate);m_kind.GetLBText(m_kind.GetCurSel(),mykind);mydate.Remove(' ');

      try {

      m_pRecordset->AddNew();//添加新行

      m_pRecordset->PutCollect(”類型“,(_bstr_t)_T(”1“));

      m_pRecordset->PutCollect(”時間“,(_bstr_t)mydate);

      m_pRecordset->PutCollect(”類別“,(_bstr_t)mykind);

      m_pRecordset->PutCollect(”金額“,(_bstr_t)m_count);

      m_pRecordset->PutCollect(”備注“,(_bstr_t)m_remark);

      m_pRecordset->GetFields()->GetItem(”類型“)->Value =(_bstr_t)_T(”1“);

      m_pRecordset->GetFields()->GetItem(”時間“)->Value =(_bstr_t)mydate;

      m_pRecordset->GetFields()->GetItem(”類別“)->Value =(_bstr_t)mykind;

      m_pRecordset->GetFields()->GetItem(”金額“)->Value =(_bstr_t)m_count;

      m_pRecordset->GetFields()->GetItem(”備注“)->Value =(_bstr_t)m_remark;

      m_pRecordset->Update();

      m_AdoConn.ExitConnect();} catch(...){

      MessageBox(_T(”操作失敗"));

      return;} }

      五、項目測試1、2、3、4、黑盒測試用例: 白盒測試用例: 黑盒測試記錄: 白盒測試記錄:

      第二篇:軟件工程 課程設計 銷售管理系統(tǒng)

      銷售管理系統(tǒng)一.項目簡介

      隨著計算機技術的迅猛發(fā)展,存在于網(wǎng)絡的企業(yè)銷售管理系統(tǒng)將逐步代替?zhèn)鹘y(tǒng)的管理模式進入企業(yè)。為了更高效得完成銷售方面的工作,也可以有更多的時間處理更多的別的事務,企業(yè)也將擺脫原有的管理形勢完全進入信息化管理。銷售管理系統(tǒng)在企業(yè)的管理過程中起著巨大的作用

      二.功能需求

      一個銷售管理系統(tǒng),設計者的目標是滿足公司運營和日常管理的需要,具有對產(chǎn)品,客戶管理的功能??蛻舻卿涗N售管理系統(tǒng)進行售后服務查詢,銷售員可以對銷售的產(chǎn)品進行登記,并將銷售情況反饋給數(shù)據(jù)庫。為管理的方便性和信息傳遞的快速性提供了一個很好的平臺。系統(tǒng)開發(fā)的總體任務是實現(xiàn)售后服務及銷售登記自動化??傊N售管理系統(tǒng)要實現(xiàn)登陸驗證、商品銷售管理、商品銷售報表管理、客戶信息管理四大部分。1.客戶對功能的需求

      1>查看自己的信息,了解自己近期的購買情況。2>查看產(chǎn)品的信息,熟悉產(chǎn)品情況。2>查看售后服務信息。

      2.銷售人員對功能的需求

      1>查看自己的信息,了解自己近期的銷售情況。2>查看產(chǎn)品的信息,熟悉產(chǎn)品情況。3>登記銷售產(chǎn)品。

      4>添加新產(chǎn)品,并填寫產(chǎn)品相關信息。

      3.售后服務人員對功能的需求

      1>查看售后服務信息。2>添加售后服務信息。

      三.分析模型時序圖

      銷售管理系統(tǒng)頂層圖

      1.客戶管理

      第三層DFD圖 客戶管理子系統(tǒng)

      2.銷售管理

      第三層DFD圖 銷售管理子系統(tǒng)

      3.售后服務管理

      第三層DFD圖 售后服務管理子系統(tǒng)

      4.客戶登錄動態(tài)時序圖為

      四.模塊活動圖,登錄流程圖

      1.注冊、登陸模塊

      1>模塊功能描述

      該模塊主要實現(xiàn)對用戶能否進入系統(tǒng)的確認以及對進入系統(tǒng)的用戶權限的設定;因為本系統(tǒng)涉及到三類使用者,不可能每一類用戶都具有相同的操作權限,如前所說,必然會早成系統(tǒng)的混亂和崩潰,嚴重影響其安全性和有效性。所以采取在通常的注冊,登錄模式下加上用戶類型的選擇,非常簡潔地就完成了對用戶類型的區(qū)別及權限的劃分。2>在模塊的詳細設計后,便能得出實現(xiàn)該部分的具體流程,如圖

      用戶注冊模塊程序流程圖

      登錄模塊程序流程圖

      活動圖為:

      2.客戶管理模塊

      1>模塊功能描述

      顯示客戶的基本信息。庫戶可以查看自己的等級和交易次數(shù)。

      2>在模塊的詳細設計后,便能得出實現(xiàn)該部分的具體流程,如圖3-8。

      客戶管理模塊流程圖

      活動圖為:

      3.銷售管理模塊 >模塊功能描述

      在這個模塊可以登記銷售記錄。并且在提交記錄時,更新數(shù)據(jù)庫:

      (1)更新客戶信息。如果是“老客戶”系統(tǒng)會按照客戶等級給出對應的優(yōu)惠價。(2)更新產(chǎn)品信息。主要是更新該產(chǎn)品數(shù)量。

      2>在模塊的詳細設計后,便能得出實現(xiàn)該部分的具體流程,如圖

      銷售管理模塊流程圖

      活動圖為

      五.數(shù)據(jù)庫設計

      1.客戶信息表

      字段khidkhnamegyshjchzhgzhugteladrkhtelfaxbzh數(shù)據(jù)類型IntVarCharVarCharVarCharnCharVarCharncharVarChartext是否是主鍵是否否否否否否否否是否為空否否否是是是否是是說明客戶編號客戶名稱客戶簡稱采購主管采購主管聯(lián)系方式客戶地址客戶電話傳真?zhèn)渥?/p>

      2.商品進貨表

      字段數(shù)據(jù)類型intVarCharCharCharCharnumericnumericint是否是主鍵是否否否否否否否是否為空說明進貨編號商品名稱商品名稱首拼大單位小單位進貨成本jhbhshpmchshpshpddwxdwjhchbxshjgjhshulgyshjhrqbzh否否否否是否否否銷售價格進貨數(shù)量供應商進貨日期備注VarCharsmalldatetimeVarChar否否否是否是 3.商品銷售表

      字段xshbhshpmchshpshpxshjgxshshlxshryxshrqkhbzh數(shù)據(jù)類型IntVarCharVarCharNumericIntVarCharSmalldatetimeVarChartext是否是主鍵是否否否否否否否否是否為空否否否是是是否是是說明銷售編號商品名稱商品名稱首拼銷售價格銷售數(shù)量銷售人員銷售日期客戶簡稱備注

      六.運行界面與代碼

      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

      `進貨管理

      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(”確定刪除當前記錄,數(shù)據(jù)將不可恢復?“, 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(”確定刪除當前記錄,數(shù)據(jù)將不可恢復?“, 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

      第三篇:軟件工程課程設計之——學生成績管理系統(tǒng)

      1.設計背景

      隨著科學技術的不斷提高,計算機科學技術日漸成熟,其強大的功能已為人們深刻認識,它已進入人類社會的各個領域并發(fā)揮著越來越重要的作用?,F(xiàn)在我國的教育機構對學生成績管理還普遍停留在紙介質(zhì)的基礎上,這樣的機制已經(jīng)不能適應時代的發(fā)展,因為它浪費了許多人力和物力,在信息時代,這種傳統(tǒng)的管理方法必然被計算機為基礎的信息管理所取代。

      通過調(diào)查,要求系統(tǒng)具有權限設置功能的登錄模塊,學生可以實現(xiàn)成績信息查詢功能。教務管理人員能夠?qū)崿F(xiàn)注冊新用戶,學生成績信息的查詢、錄入、刪除、修改、瀏覽、統(tǒng)計等。同時學院在教學這一部分主要是由教務處對課程、對學生、對學生成績進行合理地安排以及統(tǒng)籌計劃,以及讓教務處在最短的時間段把學生的成績核算出來,提高教務處的辦事效率。同時,能夠隨時對學生、學生成績進行各種查詢和統(tǒng)計,以及很好地對系統(tǒng)進行維護。此種學生成績管理系統(tǒng)提供了強大的學生成績管理管理功能,方便了系統(tǒng)管理員對學生成績等信息的添加、修改,打印等操作,同時一樣方面的學生可以對自己各科成績查詢,學習的交流,滿足了時代的需要。

      2.設計方案

      2.1總體設計

      本系統(tǒng)是將現(xiàn)代化的計算機技術和傳統(tǒng)的教學、教務工作相結(jié)合,按照學院的工作流程設計完成的。為了使系統(tǒng)在學院的管理中發(fā)揮更大的作用,實現(xiàn)工作過程的計算機化,提高工作效率和工作質(zhì)量,現(xiàn)提出如下的系統(tǒng)開發(fā)目標: 1.系統(tǒng)應具有實用性、可靠性和適用性,同時注意到先進性。2.對各個數(shù)據(jù)庫進行動態(tài)管理,防止混亂。

      3.能夠按照用戶選擇的不同的條件進行簡單查詢和復合查詢。4.能夠?qū)Σ樵兘Y(jié)果進行分類匯總,實現(xiàn)報表打印。5.注意數(shù)據(jù)的安全性,具有數(shù)據(jù)備份和恢復的功能。6.方便用戶的操作,盡量減少用戶的操作。

      2.2模塊設計

      本系統(tǒng)主要實現(xiàn)以下功能:①添加學生成績; ②刪除學生成績; ③查詢學生成績;④班級創(chuàng)建或刪除; ⑤科目調(diào)整和刪除 具體要求為:

      a.添加學生成績:輸入要添加的學生的學號、姓名、課程成績等信息,且學號字段不能為空,確定則錄入取消則放棄該操作。

      b .刪除功能:輸入要刪除的學生的學號,且必須輸入密碼驗證,確定則執(zhí)行該操作修改該學生信息,取消則放棄該操作。

      c.查詢功能: 查詢功能是本系統(tǒng)的一個重要功能,按照科目成績的相關信息可進行查找,應盡量使操作簡化,節(jié)省使用者的時間。

      d.班級創(chuàng)建:選擇要創(chuàng)建的班級名稱,或要刪除班級的名稱,單擊確定創(chuàng)建成功,選擇刪除將刪除該班級信息。

      e.科目調(diào)整:選擇要調(diào)整的科目名稱、班級名稱,或要刪除科目和班級的名稱,單擊增加調(diào)整成功,選擇刪除將刪除該班級的該項科目信息。

      3.方案實施

      3.1成績管理各模塊功能介紹

      添加學生成績,輸入要添加的學生的學號、姓名、課程成績等信息,且學號字段不能為空,確定則錄入取消則放棄該操作。刪除學生成績,輸入要刪除的學生的學號,且必須輸入密碼驗證,確定則執(zhí)行該操作修改該學生信息,取消則放棄該操作。查詢學生成績,查詢功能是本系統(tǒng)的一個重要功能,按照科目成績的相關信息可進行查找,應盡量使操作簡化,節(jié)省使用者的時間。班級創(chuàng)建或刪除,選擇要創(chuàng)建的班級名稱,或要刪除班級的名稱,單擊確定創(chuàng)建成功,選擇刪除將刪除該班級信息??颇空{(diào)整和刪除,選擇要調(diào)整的科目名稱、班級名稱,或要刪除科目和班級的名稱,單擊增加調(diào)整成功,選擇刪除將刪除該班級的該項科目信息。

      3.2成績管理模塊功能具體實現(xiàn)

      具體實現(xiàn)功能如下:添加學生成績、刪除學生成績、查詢學生成績、班級創(chuàng)建或刪除、科目調(diào)整和刪除等??颇抗芾碇锌颇刻砑雍涂颇縿h除的部分代碼如下:

      科目管理

      科目添加

      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;

      //標簽

      JTextField tf1,tf2;

      //定義文本框

      JLabel label1,label2,label3,label4;String stuName;

      ReturnBook()

      {

      f3=new JFrame();cp=f3.getContentPane();// 初始化面板、按鈕、標簽、文本框

      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'>”,SwingConstants.CENTER);label.setForeground(Color.blue);

      學生科目添加

      //-----------------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+“歡迎登陸學生信息系統(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(“學號”,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生信息“);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()+”');“;

      //查詢輸入的學號是否在數(shù)據(jù)庫中存在 使用當前類目錄下的數(shù)據(jù)庫文件

      String query=”select * from course where 學號='“+tf1.getText()+”'“;

      sql=con.createStatement();

      ResultSet rs=sql.executeQuery(query);//返回查詢結(jié)果集 boolean moreRecords=rs.next();//判斷結(jié)果集是否有數(shù)據(jù)

      if(moreRecords)

      {

      JOptionPane.showMessageDialog(f3,”學號已經(jīng)被使用,請重新輸入“);

      con.close();tf1.setText(”“);return;

      }

      int insert=sql.executeUpdate(s);if(insert==1)

      { JOptionPane.showMessageDialog(null,”學生信息錄入成功!“);

      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;

      //標簽:請輸入姓名學號 JTextField tf;

      //定義文人框

      StudentIn a=new StudentIn();JTable table;//用來接收數(shù)據(jù)庫中返回的信息

      Object columnName[]={”學號“,”科目“};

      Object ar[][] =new Object[80][6];String sno;String count=”0“;

      BorrowBook()

      {

      f=new JFrame();cp=f.getContentPane();// 初始化面板、按鈕、標簽、文人框 jpS=new JPanel();

      jpanelWest=new JPanel();

      //-----------------jbt1=new JButton(”查詢“);

      jbt2=new JButton(”刪除“);

      jbt3=new JButton(”錄入“);

      jbt4=new JButton(”關閉“);

      //-----------------label=new JLabel(”

      size='4'>

      “,SwingConstants.CENTER);label.setForeground(Color.blue);L=new JLabel(”該學生共有“+count+”人“);//-----------------

      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);

      接使用當前類目錄下的數(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“;//直接使用當前類目錄下的數(shù)據(jù)庫文件

      Connection con=DriverManager.getConnection(url);Statement sql;

      String ql=(String)(ar[index][0]);

      String s=”delete * from grade where 學號 ='“+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(”關閉"))

      //

      f.setVisible(false);

      f.dispose();

      } public static void main(String []arg){

      }

      }

      BorrowBook a=new BorrowBook();

      4.結(jié)果與結(jié)論

      結(jié)果:本設計完成了一個具有添加學生成績、刪除學生成績、查詢學生成績、班級創(chuàng)建或刪除、科目調(diào)整和刪除等功能的學生成績管理系統(tǒng)。

      結(jié)論:本系統(tǒng)為學生成績管理系統(tǒng),主要提供方便高效的管理功能以及網(wǎng)上的信息查閱平臺,學生可以查閱相關的成績和基本信息,管理員可以管理所有信息。包括瀏覽所有用戶信息以及相關的成績信息,實現(xiàn)添加,查詢,或刪除學生成績和信息,并且能夠?qū)崿F(xiàn)班級創(chuàng)建或刪除和科目調(diào)整和刪除等功能。

      論文首先介紹了本系統(tǒng)開發(fā)的背景研究意義和開發(fā)環(huán)境,在進行了可行性需求分析后對本系統(tǒng)進行了概要設計,最后利用JAVA開發(fā)環(huán)境實現(xiàn)了系統(tǒng)設計時所確定的幾種功能,并進行了調(diào)試和運行,基本符合了學生成績管理系統(tǒng)的要求。

      但是,由于一些技術和設備所限,本系統(tǒng)存在一些不足之處,有待進一步改進和完善,在開發(fā)過程中遇到了以下問題:

      (1)對后臺數(shù)據(jù)庫中數(shù)據(jù)的日常維護,包括自動清理過時數(shù)據(jù);

      (2)程序中錯誤處理和輸入控制不夠全面,可能導致輸入無效引發(fā)錯誤;

      (3)對補考學生的處理。

      總之此次設計使我受益匪淺,雖然過程中有許多不盡人意的地方,但通過大家的努力最終還是把問題給攻克了。在此次設計中學到的知識對我終生受用。

      5.收獲與致謝

      軟件工程設計是軟件工程實踐教學的重要組成部分,合理的組織,精心的準備,加上有序的實施,使我們的實踐能力得到很大的提高,同時培養(yǎng)了我們的團隊合作精神,增強了我們學習的自信心,并為我們畢業(yè)后從事相關工作打下良好基礎。

      在此次的設計中我不僅利用了自己的所學,而且還學到了許多新的知識,不知不覺中我們的設計已經(jīng)接近了尾聲,在這里非常感謝我們的指導老師王瑞平老師,感謝她給我們的設計所提出的很多很多好的建議和意見,讓我從中獲益匪淺,同時也幫助我們圓滿的完成了課程設計。

      最后我要感謝我們組的全體人員,沒有大家的幫助和鼓勵,我也不可能完成這么多的設計,也不可能學到這麼多有用的知識。

      謝謝同學們對我的幫助,同時也謝謝老師對我們的輔導。沒有大家的共同努力就沒有我們今天課程設計的圓滿完成。向我摯愛的王瑞平老師以及可愛的同學們送上我最崇高的敬意!謝謝你們!

      6.參考文獻

      [1]王 晟.《Visual Basic.NET 數(shù)據(jù)庫開發(fā)經(jīng)典案例解析》.清華大學出版社.2005 [2]馬朝暉等.Java教程.(第4版)[M].北京:人民郵電出版社.2006 [3] 張白一,崔尚森.面向?qū)ο蟪绦蛟O計——Java[M].西安:電子科技大學出版社.2004 [4] 袁世鷹.微機教務管理系統(tǒng)的設計與實現(xiàn)[P].北京:開明出版社.2001

      第四篇:軟件工程課程設計——物業(yè)管理系統(tǒng)

      軟件工程

      ——物業(yè)管理系統(tǒng)的開發(fā)

      學生姓名: 武鵬艷 喬海亮

      學生班級: 軟件工程122002班

      學生學號: 201220040220 201220040213 指導老師: 潘理虎 日 期: 2014.6.20

      目錄

      一.背景分析...............................................................................................1 二.系統(tǒng)設計問題定義..............................................................................1 三.系統(tǒng)分析.............................................................................................1

      1、現(xiàn)行系統(tǒng)分析................................................................................1

      2、系統(tǒng)可行性分析............................................................................1 四.系統(tǒng)描述.............................................................................................2

      1、系統(tǒng)需求具體描述........................................................................2

      2、系統(tǒng)功能具體描述........................................................................3 五.系統(tǒng)流程圖設計................................................................................3 六.系統(tǒng)功能模塊圖設計........................................................................4

      1、系統(tǒng)性能需求分析......................................................................4

      2、系統(tǒng)功能需求分析......................................................................5 七.系統(tǒng)功能模型設計............................................................................5 八.系統(tǒng)所涉及的實體聯(lián)系設計............................................................5 九. 系統(tǒng)狀態(tài)圖設計..............................................................................6 十. 系統(tǒng)數(shù)據(jù)流圖設計..........................................................................7 十一.系統(tǒng)人機交互界面的設計............................................................9 十二. 系統(tǒng)設計的實現(xiàn)........................................................................11 十三. 系統(tǒng)設計的代碼附錄................................................................20

      一.背景分析

      隨著市場經(jīng)濟的發(fā)展和人們生活水平的提高,小區(qū)物業(yè)方面繳費方面越來越多,但繳費難的問題繼續(xù)困擾著我們,需要有一個系統(tǒng)來實現(xiàn)銀行卡交水電費,實現(xiàn)小區(qū)管理而且小區(qū)用戶可以更好的維護小區(qū)各項物業(yè)管理業(yè)務,處理工作,實現(xiàn)繳費方便功能,就可以避免應繳費不及時而造成停電停水的情況發(fā)生。二.系統(tǒng)設計問題定義

      1、實現(xiàn)對住戶水電使用信息管理。

      2、實現(xiàn)住戶的信息查詢與更新。三.系統(tǒng)分析(1)現(xiàn)行系統(tǒng)分析

      以往住戶的更替使水電費管理有些混亂,不能順利收取費用?,F(xiàn)在的系統(tǒng)會對小區(qū)水電管理存在的不完善之處做相應的改進,及時提醒住戶繳費,而且對每戶人員及時更新并做詳細記錄,為操作人員做權限設置。

      (2)系統(tǒng)可行性分析 A系統(tǒng)成本效益分析

      1、貨幣的時間價值

      假設生命周期為t年,編寫程序需m元,應用程序后,每年可節(jié)省n元,年利率為p。

      2、純收入

      工程的純收入是:r=n/(1+p)+n/(1+p)2+??+n/(1+p)^n-m

      3、投資回收率

      m=F1/(1+j)+F2/(1+j)2+??+Fn/(1+j)^n(Fi是第i年底效益,j是投資回收率。)B系統(tǒng)可行性綜述

      1、經(jīng)濟可行性:獲益是當初投資總額的三倍或三倍以上,可以進行投資。

      2、技術可行性:該系統(tǒng)簡單、使用,且以現(xiàn)有的技術可以實現(xiàn)系統(tǒng)中的功能。

      3、社會可行性:該系統(tǒng)面向全社會小區(qū)居民的物業(yè)管理,沒有負面影響,并且可以為社會帶來很高的效益。四.系統(tǒng)描述

      (1)系統(tǒng)需求具體描述

      所設計的物業(yè)管理系統(tǒng),它是由住戶信息管理,繳費管理,投訴管理,樓房管理組成的網(wǎng)絡系統(tǒng)。a住戶信息管理

      由住戶注冊,注冊姓名,聯(lián)系方式,住址,郵箱,入住時間。注冊成功后,由系統(tǒng)管理員統(tǒng)一管理,管理員可以進行查詢,修改信息。住戶注冊成功可以進行登錄系統(tǒng)進行查詢,但是不可以修改。進行信息的修改需要投訴給管理員,管理員進行修改。b繳費管理

      由住戶執(zhí)行,住戶可以查詢水電費使用情況,余額不足進行繳費,進入銀行繳費界面,輸入賬號密碼,進行繳費。

      c投訴管理

      由管理員進行查詢,用戶可以對小區(qū)物業(yè)管理水電費物業(yè)部門投訴建議。管理員可以根據(jù)客戶要求,能對住戶水電費信息、修改、查詢和刪除等操作,并且還要實現(xiàn)包括水、電、煤氣費在內(nèi)的各項物業(yè)管理費用的統(tǒng)計、查詢和報表生成。d住戶和管理員

      住戶可以管理自己的信息,可以提交投訴信息,可以瀏覽收費信息和繳費信息。管理員可以對紀錄進行增加、刪除、修改,管理投訴等更新操作。用戶進入系統(tǒng)必須先輸入用戶名和密碼,按“確認”按鈕后,系統(tǒng)辨別用戶身份,對合法用戶根據(jù)用戶的權限賦予相應的使用功能。

      (2)系統(tǒng)功能具體描述

      小區(qū)物業(yè)管理系統(tǒng)具體實現(xiàn)以下功能:

      1.對小區(qū)所有房屋資料的錄入和增,刪,改,查詢等功能的實現(xiàn)。

      2.對本小區(qū)內(nèi)住戶的詳細資料的管理,包括增,刪,改,查詢等功能的實現(xiàn)。

      3.實現(xiàn)物業(yè)設備管理,儀表包括水,電數(shù)據(jù)管理,收費管理。儀表數(shù)據(jù)管理模塊管理每個住戶的水,電的資料,統(tǒng)計住戶每月的用量以及需要交納的費用,收費管理記錄物業(yè)公司對住戶的每一筆收費,包括水,電等使用費用和物業(yè)管理費用,余額不足進行銀行卡充值。五.系統(tǒng)流程圖設計

      六.系統(tǒng)功能模塊圖設計

      1、系統(tǒng)性能需求分析

      所設計的系統(tǒng)主要涉及到四大部分:系統(tǒng)管理,基本信息管理,水電管理,費用查詢。

      (1)系統(tǒng)管理:管理系統(tǒng)操作人員,設置操作人員口令和權限。在滿足不同系統(tǒng)用戶的操作需求的基礎上,提高系統(tǒng)的安全性。(2)基本信息管理:維護小區(qū)基本信息。

      住戶信息管理:入住登記,信息修改,遷出注銷,查詢。房屋信息管理:房屋信息添加,修改,刪除,查詢。戶型信息管理:小區(qū)戶型登記。(3)水電服務管理:完成小區(qū)各種服務,例如物業(yè)費用繳費管理功能。

      (4)查詢統(tǒng)計管理:本系統(tǒng)中各種數(shù)據(jù)的統(tǒng)計與查詢功能。

      2、系統(tǒng)功能需求分析

      小區(qū)物業(yè)管理水電費物業(yè)部門用來對住宅小區(qū)內(nèi)水費,電費,繳費情況信息管理系統(tǒng)。根據(jù)客戶要求,系統(tǒng)要能對住戶水電費信息、修改、查詢和刪除等操作,并且還要實現(xiàn)包括水、電、煤氣費在內(nèi)的各項物業(yè)管理費用的統(tǒng)計、查詢和報表生成。因此,實現(xiàn)該物業(yè)管理系統(tǒng)功能模塊圖如下

      七.系統(tǒng)功能模型設計

      八.系統(tǒng)所涉及的實體聯(lián)系設計

      九.系統(tǒng)狀態(tài)圖設計(1)總狀態(tài)圖設計

      (2)系統(tǒng)銀行卡模塊狀態(tài)設計

      十.系統(tǒng)數(shù)據(jù)流圖設計

      (1)系統(tǒng)數(shù)據(jù)流程圖

      (2)系統(tǒng)數(shù)據(jù)字典(1)

      名字:用水信息記錄表 別名:用水信息

      描述:水量剩余小于臨界值時報告住戶

      定義:用水信息記錄表=戶主信息+水量使用費+收費日期

      位置:輸出打印機(2)

      名字:用電信息表 別名:電量信息

      描述:剩余電量小于臨界值時報告住戶

      定義:用電信息表=戶主信息+電量使用費+收費日期 位置:輸出打印機(3)

      名字:住戶信息表 描述:每戶人員的詳細信息

      定義:住戶信息表=住戶姓名+性別+年齡+聯(lián)系方式+證件號碼 位置:輸出打印機,顯示在屏幕 十一.系統(tǒng)人機交互界面的設計 ①登陸界面的設計

      ②住戶界面的設計

      ③管理員界面的設計

      十二.系統(tǒng)設計的實現(xiàn)(1)數(shù)據(jù)庫載入

      (2).住戶登陸成功界面

      (3)住戶界面

      (4)住戶修改信息

      (5)住戶查詢物業(yè)信息

      (6)住戶反饋

      (7)住戶繳費

      (8)銀行卡登陸

      (9)銀行卡登陸成功

      (10)銀行卡繳費界面

      (11)銀行卡修改密碼界面

      (12)管理員登陸

      (13)管理員界面

      (14)管理員查詢住戶信息界面

      (15)管理員修改住戶信息

      (16)管理員更新物業(yè)信息

      (17)管理員添加管理員信息

      (18)管理員接收反饋

      (19)管理員接收反饋界面

      十三.系統(tǒng)設計的代碼附錄

      package xuesheng;

      import javax.swing.*;import java.awt.event.*;import java.sql.*;

      public class systems extends JFrame implements ActionListener { static systems ss;

      JPanel panel = new JPanel();JLabel label1 = new JLabel(“輸入姓名:”);JTextField name = new JTextField();JLabel label2 = new JLabel(“密 碼:”);JPasswordField pwd = new JPasswordField();JButton Enter = new JButton(“登錄”);JButton Exit = new JButton(“退出”);String url = “F:JAVA背景圖片4.jpg”;ButtonGroup bgp = new ButtonGroup();JRadioButton ihb = new JRadioButton(“住戶”);JRadioButton mg = new JRadioButton(“管理員”);

      public systems(){

      super(“物業(yè)系統(tǒng)登錄”);

      this.setResizable(false);JLabel img = new JLabel(new ImageIcon(url));

      img.setBounds(0,0,500,100);

      panel.add(img);

      ihb.setBounds(165,210,70,20);

      mg.setBounds(265,210,70,20);

      bgp.add(ihb);

      bgp.add(mg);

      panel.add(ihb);

      panel.add(mg);

      Enter.setBounds(150,250,80,20);

      Exit.setBounds(270,250,80,20);

      Enter.addActionListener(this);

      Exit.addActionListener(this);

      panel.add(Enter);

      panel.add(Exit);panel.setLayout(null);

      this.add(panel);20

      label1.setBounds(135,130,100,25);

      panel.add(label1);name.setBounds(265,130,100,25);

      panel.add(name);

      label2.setBounds(135,165,100,25);

      panel.add(label2);pwd.setBounds(265,165,100,25);

      panel.add(pwd);

      this.setBounds(100,100,500,350);

      this.setVisible(true);

      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}

      public void actionPerformed(ActionEvent e){

      if(e.getSource()==Enter)

      {

      String username , password;

      username = name.getText();

      password = pwd.getText();

      try

      {

      Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);

      }

      catch(ClassNotFoundException ce)

      {

      JOptionPane.showMessageDialog(ss,ce.getMessage());

      }

      if(ihb.isSelected())

      {

      try

      {

      //

      Connection con = DriverManager.getConnection(“jdbc:sqlserver://localhost:1433;DatabaseName=物業(yè)管理系統(tǒng)”,“sa”,“11111111”);

      String sql = “select * from inhabitant where 姓名=? and 密碼=?”;

      PreparedStatement pstmt = con.prepareStatement(sql);

      pstmt.setString(1, username);

      pstmt.setString(2, password);

      ResultSet rs = pstmt.executeQuery();

      if(rs!=null)

      {

      JOptionPane.showMessageDialog(ss,“登陸成功”);

      new inhabitants();

      }

      else

      {

      JOptionPane.showMessageDialog(ss,“登錄失敗”);

      }

      rs.close();

      pstmt.close();

      }

      catch(SQLException se)

      {

      JOptionPane.showMessageDialog(ss,se.getMessage());

      }

      }

      else if(mg.isSelected())

      {

      try

      {

      Connection con = DriverManager.getConnection(“jdbc:sqlserver://localhost:1433;DatabaseName=物業(yè)管理系統(tǒng)”,“sa”,“11111111”);

      String sql = “select * from manager where 姓名=? and 密碼=?”;

      PreparedStatement pstmt = con.prepareStatement(sql);

      pstmt.setString(1, username);

      pstmt.setString(2, password);

      ResultSet rs = pstmt.executeQuery();

      if(rs!=null)

      {

      JOptionPane.showMessageDialog(ss,“登陸成功”);

      new managers();

      }

      else

      {

      JOptionPane.showMessageDialog(ss,“登錄失敗”);

      }

      rs.close();

      pstmt.close();22

      }

      catch(SQLException se)

      {

      JOptionPane.showMessageDialog(ss,se.getMessage());

      }

      }

      }

      else

      {

      System.exit(0);

      } }

      public static void main(String[] args){

      new systems();} }

      package xuesheng;

      import java.awt.*;

      import javax.swing.*;

      import java.awt.event.*;

      public class inhabitants extends JFrame implements ActionListener { JPanel panel=new JPanel();JMenuBar jmb = new JMenuBar();JMenu Message = new JMenu(“信息”);JMenu Payment = new JMenu(“繳費”);JMenu back = new JMenu(“反饋”);JMenuItem Item1 = new JMenuItem(“修改住戶信息”);JMenuItem Item2 = new JMenuItem(“查詢物業(yè)信息”);JMenuItem Item3 = new JMenuItem(“發(fā)送反饋”);JMenuItem Item4 = new JMenuItem(“交電費”);JMenuItem Item5 = new JMenuItem(“交水費”);String url = “F:JAVA背景圖片36.jpg”;public inhabitants(){ 23

      super(“住戶界面”);

      this.setSize(500,400);

      this.setVisible(true);JLabel img = new JLabel(new ImageIcon(url));

      img.setBounds(0,0,500,600);

      panel.add(img);

      panel.setLayout(null);

      this.add(panel);

      this.setResizable(false);

      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      this.setJMenuBar(jmb);

      jmb.add(Message);

      jmb.add(back);

      jmb.add(Payment);

      Message.add(Item1);

      Message.add(Item2);

      back.add(Item3);

      Payment.add(Item4);

      Payment.add(Item5);

      Item1.addActionListener(this);

      Item2.addActionListener(this);

      Item3.addActionListener(this);

      Item4.addActionListener(this);

      Item5.addActionListener(this);}

      public void actionPerformed(ActionEvent e){

      if(e.getSource()==Item1)

      {

      AlterInhabitantInformation ai = new AlterInhabitantInformation();

      }

      else if(e.getSource()==Item2)

      {

      Serch ser = new Serch();

      }

      else if(e.getSource()==Item3)

      {

      tickling ib=new tickling();

      }

      else if(e.getSource()==Item4)24

      {

      ATM atm=new ATM();

      }

      else if(e.getSource()==Item5)

      {

      ATM atm=new ATM();

      } }

      public static void main(String[] args){

      inhabitants stu = new inhabitants();} }

      package xuesheng;

      import java.awt.*;

      import javax.swing.*;

      import java.awt.event.*;

      public class managers extends JFrame implements ActionListener { JMenuBar bar = new JMenuBar();JMenu menu1 = new JMenu(“信息”);JMenu menu2 = new JMenu(“反饋”);JMenuItem item1 = new JMenuItem(“查詢住戶信息”);JMenuItem item2 = new JMenuItem(“修改住戶信息”);JMenuItem item3 = new JMenuItem(“更新物業(yè)信息”);JMenuItem item4 = new JMenuItem(“接收反饋”);JMenuItem item5 = new JMenuItem(“添加管理員信息”);String url = “F:JAVA背景圖片36.jpg”;JPanel jpl = new JPanel();

      public managers(){

      super(“管理員界面”);

      this.setSize(500,300);

      this.setResizable(false);25

      } this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setJMenuBar(bar);this.add(jpl);jpl.setLayout(null);bar.add(menu1);bar.add(menu2);menu1.add(item1);menu1.add(item2);menu1.add(item3);menu1.add(item5);menu2.add(item4);item1.addActionListener(this);item2.addActionListener(this);item3.addActionListener(this);item4.addActionListener(this);item5.addActionListener(this);public void actionPerformed(ActionEvent e){ if(e.getSource()==item1){

      ReferMsg rm = new ReferMsg();} if(e.getSource()==item2){

      AlterInhabitantInformations ai = new AlterInhabitantInformations();} else if(e.getSource()==item3){

      AddMsg sc = new AddMsg();} else if(e.getSource()==item4){

      tickling tl=new tickling();} else if(e.getSource()==item5){

      managerinformation mf=new managerinformation();} } 26

      public static void main(String[] args){

      managers mng = new managers();} }

      package xuesheng;

      import java.awt.*;

      import javax.swing.*;

      import java.awt.event.*;import java.awt.font.*;import java.sql.*;

      public class ReferMsg extends JFrame implements ActionListener { static ReferMsg s;JLabel title = new JLabel(“查詢住戶信息”,JLabel.CENTER);Font f = new Font(“楷體”,Font.BOLD+Font.ITALIC,16);JPanel jpl = new JPanel();JLabel label1 = new JLabel(“請輸入門牌號:”,JLabel.CENTER);JTextField num = new JTextField();JButton serch = new JButton(“查詢”);JButton fangqi = new JButton(“返回”);JLabel label2 = new JLabel(“門牌號:”,JLabel.LEFT);JLabel label3 = new JLabel(“姓名:”,JLabel.LEFT);JLabel label4 = new JLabel(“性別:”,JLabel.LEFT);JLabel label5 = new JLabel(“年齡:”,JLabel.LEFT);JLabel label6 = new JLabel(“籍貫:”,JLabel.LEFT);JLabel label7 = new JLabel(“身份證號:”,JLabel.LEFT);JLabel label8 = new JLabel(“電話:”,JLabel.LEFT);JLabel label9 = new JLabel(“職業(yè):”,JLabel.LEFT);

      JTextField[] txt ={ new JTextField(), new JTextField(), new JTextField(), new JTextField(), new JTextField(),new JTextField(), new JTextField(),new JTextField()};static int p = 140;

      public ReferMsg()27

      { super(“查詢住戶信息”);this.setResizable(false);this.setSize(500,550);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);title.setFont(f);this.add(jpl);jpl.setLayout(null);title.setBounds(80,20,300,20);jpl.add(title);label1.setBounds(100,60,90,20);jpl.add(label1);num.setBounds(200,60,140,20);jpl.add(num);serch.setBounds(130,100,90,20);fangqi.setBounds(240,100,90,20);jpl.add(serch);jpl.add(fangqi);serch.addActionListener(this);fangqi.addActionListener(this);label2.setBounds(100,140,140,20);label3.setBounds(100,180,140,20);label4.setBounds(100,220,140,20);label5.setBounds(100,260,140,20);label6.setBounds(100,300,140,20);label7.setBounds(100,340,140,20);label8.setBounds(100,380,140,20);label9.setBounds(100,420,140,20);jpl.add(label2);jpl.add(label3);jpl.add(label4);jpl.add(label5);jpl.add(label6);jpl.add(label7);jpl.add(label8);jpl.add(label9);

      for(int i = 0;i

      txt[i].setBounds(200,p,140,20);

      jpl.add(txt[i]);

      p=p+40;} 28

      }

      public void actionPerformed(ActionEvent e){

      if(e.getSource()==fangqi)

      {

      this.setVisible(false);

      new managers();

      }

      if(e.getSource()==serch)

      {

      String mp = num.getText();

      try

      {

      Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);

      }

      catch(ClassNotFoundException ce)

      {

      JOptionPane.showMessageDialog(s,ce.getMessage());

      }

      try

      {

      Connection con = DriverManager.getConnection(“jdbc:sqlserver://localhost:1433;DatabaseName=物業(yè)管理系統(tǒng)”,“sa”,“11111111”);

      Statement stmt = con.createStatement();

      ResultSet rs = stmt.executeQuery(“select * from inhabitant where inhabitant.門牌號 ='” + mp + “' AND inhabitant.門牌號 = inhabitant.門牌號”);

      while(rs.next())

      {

      for(int i = 0;i

      {

      txt[i].setText(rs.getString(i+1));

      }

      }

      }

      catch(SQLException se)

      {

      JOptionPane.showMessageDialog(s,se.getMessage());

      }

      }

      else

      {

      for(int i = 0;i

      {

      txt[i].setText(“");

      }

      num.setText(”“);

      } }

      public static void main(String[] args){

      ReferMsg s = new ReferMsg();} }

      package xuesheng;

      import java.awt.*;

      import javax.swing.*;

      import java.awt.event.*;import java.sql.*;

      public class Serch extends JFrame implements ActionListener { /*查詢學生信息控件*/ static Serch s;JPanel jpl = new JPanel();JLabel SCH = new JLabel(”物業(yè)信息“,JLabel.CENTER);JLabel label1 = new JLabel(”請輸入門牌號:“,JLabel.CENTER);JButton serch = new JButton(”查詢“);JLabel label2 = new JLabel(”姓名:“,JLabel.CENTER);JLabel label3 = new JLabel(”電量:“,JLabel.CENTER);JLabel label4 = new JLabel(”水量:“,JLabel.CENTER);JLabel label5 = new JLabel(”性別:“,JLabel.CENTER);ButtonGroup bgp = new ButtonGroup();JRadioButton man = new JRadioButton(”男“);JRadioButton women = new JRadioButton(”女“);JTextField num = new JTextField();JTextField nam = new JTextField();JTextField ele = new JTextField();30

      JTextField wat = new JTextField();JButton fangqi = new JButton(”返回“);public Serch(){ this.setSize(500,400);this.setVisible(true);this.setResizable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.add(jpl);jpl.setLayout(null);serch.addActionListener(this);fangqi.addActionListener(this);/*查詢面板*/ SCH.setBounds(100,20,300,20);jpl.add(SCH);label1.setBounds(100,60,100,20);jpl.add(label1);num.setBounds(220,60,140,20);jpl.add(num);serch.setBounds(120,100,90,20);fangqi.setBounds(260,100,90,20);jpl.add(serch);jpl.add(fangqi);label2.setBounds(100,140,70,20);jpl.add(label2);nam.setBounds(190,140,140,20);jpl.add(nam);label5.setBounds(100,180,70,20);jpl.add(label5);man.setBounds(205,180,60,20);women.setBounds(285,180,60,20);bgp.add(man);bgp.add(women);jpl.add(man);jpl.add(women);label3.setBounds(100,220,70,20);jpl.add(label3);ele.setBounds(190,220,140,20);jpl.add(ele);label4.setBounds(100,260,70,20);jpl.add(label4);wat.setBounds(190,260,140,20);jpl.add(wat);31

      }

      public void actionPerformed(ActionEvent e){

      if(e.getSource()==fangqi)

      {

      this.setVisible(false);

      new inhabitants();

      }

      String mp = num.getText();

      if(e.getSource()==serch)

      {

      try

      {

      Class.forName(”com.microsoft.sqlserver.jdbc.SQLServerDriver“);

      }

      catch(ClassNotFoundException ce)

      {

      JOptionPane.showMessageDialog(s,ce.getMessage());

      }

      try

      {

      Connection con = DriverManager.getConnection(”jdbc:sqlserver://localhost:1433;DatabaseName=物業(yè)管理系統(tǒng)“,”sa“,”11111111“);

      Statement stmt = con.createStatement();

      ResultSet rs = stmt.executeQuery(”select * from PropertyInformation where 門牌號 = '“ + mp + ”'“);

      while(rs.next())

      {

      nam.setText(rs.getString(”姓名“));

      if(rs.getString(”性別“).equals(”男“))

      {

      man.setSelected(true);

      }

      else

      {

      women.setSelected(true);

      }

      ele.setText(rs.getString(”電量“));

      wat.setText(rs.getString(”水量“));

      }

      }

      catch(SQLException se)32

      {

      JOptionPane.showMessageDialog(s,se.getMessage());

      }

      } }

      public static void main(String[] args){

      Serch sch = new Serch();} }

      package xuesheng;import java.awt.*;import java.awt.event.*;class Selection extends Frame implements ActionListener{ Button button1,button2,button3,button4,button5;Panel p1 = new Panel();Panel p2 = new Panel();Panel p3 = new Panel();Panel p4 = new Panel();Panel p5 = new Panel();Panel p = new Panel();Account act;

      public Selection(){} Selection(String s,Account act){

      super(s);

      this.act=act;

      this.setLayout(null);

      this.setLayout(new GridLayout(6,1));

      p.add(new Label(”請選擇你要的服務“));

      this.add(p);/*各種服務功能*/

      button1 = new Button(”繳水費“);

      p1.add(button1);

      this.add(p1);

      button2 = new Button(”交電費“);

      p2.add(button2);

      this.add(p2);

      button3 = new Button(”查詢“);33

      p3.add(button3);this.add(p3);button4 = new Button(”退出“);p4.add(button4);this.add(p4);button5 = new Button(”修改密碼“);p5.add(button5);this.add(p5);this.addWindowListener(new WindowAdapter(){

      public void windowClosing(WindowEvent e){

      System.exit(0);

      }

      });button1.addActionListener(this);button2.addActionListener(this);button3.addActionListener(this);button4.addActionListener(this);button5.addActionListener(this);setBounds(150,150,225,275);setVisible(true);validate();} public void actionPerformed(ActionEvent e){ if(e.getSource()==button1){//取款

      GetWater gw = new GetWater(”交水費“,act);

      } if(e.getSource()==button2){//取款

      GetBalance gb = new GetBalance(”交電費“,act);

      } if(e.getSource()==button3){//查詢余額

      Query q =new Query(”查詢余額“,act);} else if(e.getSource()==button4){//退出

      System.exit(0);

      dispose();} else if(e.getSource()==button5){//修改密碼

      Account 修改密碼;

      ChangePassword cp = new ChangePassword(”修改密碼“,act);34

      dispose();

      } } }

      package xuesheng;import java.awt.Color;import java.awt.Font;

      import javax.swing.*;public class tickling { public tickling(){ //創(chuàng)建JFrame對象

      JFrame f=new JFrame(”反饋“);//創(chuàng)建具有指定文本的JLbabel對象 JLabel Label=new JLabel(”反饋:“);Font ft = new Font(”黑體“ , Font.BOLD , 24);

      Label.setFont(ft);

      Label.setForeground(Color.black);//創(chuàng)建列數(shù)為20的JTextField對象 JTextField t=new JTextField(20);JPanel panel=new JPanel();

      panel.add(Label);t.setBounds(70,100,300,120);panel.add(t);Font fo = new Font(”黑體“ , Font.BOLD , 24);t.setFont(fo);Label.add(t);f.setVisible(true);

      //將JLabel組件添加到JFrame窗體上 f.getContentPane().add(Label);f.getContentPane().add(Label);f.setSize(400,350);f.setVisible(true);} public static void main(String[] args){ 35

      tickling tl = new tickling();}

      }

      package xuesheng;

      import java.awt.*;

      import javax.swing.*;

      import java.awt.event.*;import java.sql.*;

      public class AlterInhabitantInformation extends JFrame implements ActionListener { static AlterInhabitantInformation ss;JLabel[] label = {new JLabel(”門牌號:“), new JLabel(”姓名:“), new JLabel(”性別:“), new JLabel(”年齡:“), new JLabel(”籍貫:“), new JLabel(”身份證號:“), new JLabel(”電話:“), new JLabel(”職業(yè):“)};JTextField[] txt = {new JTextField(), new JTextField(), new JTextField(), new JTextField(), new JTextField(),new JTextField(), new JTextField(),new JTextField()};JButton add = new JButton(”確認“);JButton fangqi = new JButton(”返回“);JPanel jpl = new JPanel();JLabel title = new JLabel(”修改住戶信息“ , JLabel.CENTER);Font f = new Font(”黑體“ , Font.BOLD , 16);int s = 100;

      public AlterInhabitantInformation(){

      super(”修改住戶信息“);

      this.setResizable(false);

      this.setSize(500,600);

      this.setDefaultCloseOperation(EXIT_ON_CLOSE);

      this.setVisible(true);

      this.add(jpl);

      add.addActionListener(this);

      fangqi.addActionListener(this);

      jpl.setLayout(null);36

      title.setBounds(150,40,200,20);

      title.setFont(f);

      title.setForeground(Color.red);

      jpl.setBackground(Color.LIGHT_GRAY);

      jpl.add(title);

      for(int i = 0;i

      {

      label[i].setBounds(100,s,140,20);

      jpl.add(label[i]);

      txt[i].setBounds(260,s,140,20);

      jpl.add(txt[i]);

      s=s+40;

      }

      add.setBounds(150,s,80,20);

      fangqi.setBounds(250,s,80,20);

      jpl.add(add);

      jpl.add(fangqi);}

      public void actionPerformed(ActionEvent e){

      if(e.getSource()==fangqi)

      {

      this.setVisible(false);

      new inhabitants();

      }

      if(e.getSource()==add)

      {

      try

      {

      Class.forName(”com.microsoft.sqlserver.jdbc.SQLServerDriver“);

      }

      catch(ClassNotFoundException ce)

      {

      JOptionPane.showMessageDialog(ss,ce.getMessage());

      }

      try

      {

      Connection con = DriverManager.getConnection(”jdbc:sqlserver://localhost:1433;DatabaseName=物業(yè)管理系統(tǒng)“,”sa“,”11111111“);

      Statement stmt = con.createStatement();

      int a = stmt.executeUpdate(”insert into inhabitant(門牌號,姓名,性別,年齡,籍貫,身份證號,電話,職 37

      業(yè))values('“+txt[0].getText()+”','“+txt[1].getText()+”','“+txt[2].getText()+”','“+txt[3].getText()+”','“+txt[4].getText()+”','“+txt[5].getText()+”','“+txt[6].getText()+”','“+txt[7].getText()+”')“);

      if(a==1)

      {

      JOptionPane.showMessageDialog(ss,”添加成功“);

      }

      else

      {

      JOptionPane.showMessageDialog(ss,”添加失敗“);

      }

      }

      catch(SQLException se)

      {

      JOptionPane.showMessageDialog(ss,se.getMessage());

      }

      }

      else

      {

      for(int i = 0;i

      {

      txt[i].setText(”“);

      txt[0].requestFocus();

      }

      } }

      public static void main(String[] args){

      AlterInhabitantInformation as = new AlterInhabitantInformation();} }

      package xuesheng;

      import java.awt.*;

      import javax.swing.*;

      import java.awt.event.*;import java.sql.*;38

      public class AlterInhabitantInformations extends JFrame implements ActionListener { static AlterInhabitantInformation ss;JLabel[] label = {new JLabel(”門牌號:“), new JLabel(”姓名:“), new JLabel(”性別:“), new JLabel(”年齡:“), new JLabel(”籍貫:“), new JLabel(”身份證號:“), new JLabel(”電話:“), new JLabel(”職業(yè):“)};JTextField[] txt = {new JTextField(), new JTextField(), new JTextField(), new JTextField(), new JTextField(),new JTextField(), new JTextField(),new JTextField()};JButton add = new JButton(”確認“);JButton fangqi = new JButton(”返回“);JPanel jpl = new JPanel();JLabel title = new JLabel(”修改住戶信息“ , JLabel.CENTER);Font f = new Font(”黑體“ , Font.BOLD , 16);int s = 100;

      public AlterInhabitantInformations(){

      super(”修改住戶信息“);

      this.setResizable(false);

      this.setSize(500,600);

      this.setDefaultCloseOperation(EXIT_ON_CLOSE);

      this.setVisible(true);

      this.add(jpl);

      add.addActionListener(this);

      fangqi.addActionListener(this);

      jpl.setLayout(null);

      title.setBounds(150,40,200,20);

      title.setFont(f);

      title.setForeground(Color.red);

      jpl.setBackground(Color.LIGHT_GRAY);

      jpl.add(title);

      for(int i = 0;i

      {

      label[i].setBounds(100,s,140,20);

      jpl.add(label[i]);

      txt[i].setBounds(260,s,140,20);

      jpl.add(txt[i]);

      s=s+40;

      }

      add.setBounds(150,s,80,20);

      fangqi.setBounds(250,s,80,20);

      jpl.add(add);39

      jpl.add(fangqi);}

      public void actionPerformed(ActionEvent e){

      if(e.getSource()==fangqi)

      {

      this.setVisible(false);

      new managers();

      }

      if(e.getSource()==add)

      {

      try

      {

      Class.forName(”com.microsoft.sqlserver.jdbc.SQLServerDriver“);

      }

      catch(ClassNotFoundException ce)

      {

      JOptionPane.showMessageDialog(ss,ce.getMessage());

      }

      try

      {

      Connection con = DriverManager.getConnection(”jdbc:sqlserver://localhost:1433;DatabaseName=物業(yè)管理系統(tǒng)“,”sa“,”11111111“);

      Statement stmt = con.createStatement();

      int a = stmt.executeUpdate(”insert into inhabitant(門牌號,姓名,性別,年齡,籍貫,身份證號,電話,職業(yè))values('“+txt[0].getText()+”','“+txt[1].getText()+”','“+txt[2].getText()+”','“+txt[3].getText()+”','“+txt[4].getText()+”','“+txt[5].getText()+”','“+txt[6].getText()+”','“+txt[7].getText()+”')“);

      if(a==1)

      {

      JOptionPane.showMessageDialog(ss,”添加成功“);

      }

      else

      {

      JOptionPane.showMessageDialog(ss,”添加失敗“);

      }

      }

      catch(SQLException se)

      {

      JOptionPane.showMessageDialog(ss,se.getMessage());

      } 40

      }

      else

      {

      for(int i = 0;i

      {

      txt[i].setText(”“);

      txt[0].requestFocus();

      }

      } } }

      package xuesheng;

      import javax.swing.*;

      import java.awt.event.*;import java.sql.*;

      public class AddMsg extends JFrame implements ActionListener { static AddMsg s;/*添加住戶信息控件*/ JPanel jpl = new JPanel();JLabel label1 = new JLabel(”更新物業(yè)信息“,JLabel.CENTER);JLabel label2 = new JLabel(”門牌號:“,JLabel.CENTER);JLabel label3 = new JLabel(”姓名:“,JLabel.CENTER);JLabel label4 = new JLabel(”性別:“,JLabel.CENTER);JLabel label5 = new JLabel(”電量:“,JLabel.CENTER);JLabel label6 = new JLabel(”水量:“,JLabel.CENTER);JTextField num = new JTextField(2);JTextField nam = new JTextField(4);ButtonGroup bgp = new ButtonGroup();JRadioButton man = new JRadioButton(”男“);JRadioButton women = new JRadioButton(”女“);JTextField ele = new JTextField();JTextField wat = new JTextField();JButton fangqi = new JButton(”返回“);JButton addmsg = new JButton(”添加“);

      public AddMsg()41

      {

      } super(”更新物業(yè)信息“);this.setResizable(false);this.setSize(500,400);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.add(jpl);jpl.setLayout(null);addmsg.addActionListener(this);fangqi.addActionListener(this);/*插入面板*/ label2.setBounds(100,50,70,20);jpl.add(label2);num.setBounds(190,50,140,20);jpl.add(num);

      label3.setBounds(100,90,70,20);jpl.add(label3);nam.setBounds(190,90,140,20);jpl.add(nam);

      label4.setBounds(100,130,70,20);jpl.add(label4);man.setBounds(190,130,60,20);women.setBounds(270,130,60,20);jpl.add(man);jpl.add(women);bgp.add(man);bgp.add(women);label5.setBounds(100,170,70,20);jpl.add(label5);ele.setBounds(190,170,140,20);jpl.add(ele);label6.setBounds(100,210,70,20);jpl.add(label6);wat.setBounds(190,210,140,20);jpl.add(wat);fangqi.setBounds(120,250,90,20);addmsg.setBounds(240,250,90,20);jpl.add(fangqi);jpl.add(addmsg);42

      public void actionPerformed(ActionEvent e){

      if(e.getSource()==fangqi)

      {

      this.setVisible(false);

      new managers();

      }

      if(e.getSource()==addmsg)

      {

      String sex;

      if(man.isSelected())

      {

      sex=”男“;

      }

      else

      {

      sex=”女“;

      }

      try

      {

      Class.forName(”com.microsoft.sqlserver.jdbc.SQLServerDriver“);

      }

      catch(ClassNotFoundException ce)

      {

      JOptionPane.showMessageDialog(s,ce.getMessage());

      }

      try

      {

      String number = num.getText();

      String name = nam.getText();

      String electyic = ele.getText();

      String water = wat.getText();

      //1注冊驅(qū)動

      Connection con = DriverManager.getConnection(”jdbc:sqlserver://localhost:1433;DatabaseName=物業(yè)管理系統(tǒng)“,”sa“,”11111111“);

      String sql = ”insert into PropertyInformation(門牌號 ,姓名, 性別 , 電量 , 水量)values(?,?,?,?,?)“;

      //2預處理

      PreparedStatement pstmt = con.prepareStatement(sql);

      pstmt.setString(1, number);

      pstmt.setString(2, name);

      pstmt.setString(3, sex);

      pstmt.setString(4, electyic);43

      pstmt.setString(5, water);

      //3執(zhí)行

      int a = pstmt.executeUpdate();

      if(a==1)

      {

      JOptionPane.showMessageDialog(s,”已成功添加“);

      }

      else

      {

      JOptionPane.showMessageDialog(s,”添加失敗“);

      }

      pstmt.close();

      }

      catch(SQLException se)

      {

      System.out.println(1);

      JOptionPane.showMessageDialog(s,se.getMessage());

      }

      }

      else

      {

      num.setText(”“);

      nam.setText(”“);

      ele.setText(”“);

      wat.setText(”“);

      num.requestFocus();

      } }

      public static void main(String[] args){

      new AddMsg();} }

      package xuesheng;public class ATM{ public ATM(){

      new WindowBox(”登錄頁面“);} public static void main(String [] args){ ATM atm=new ATM();} 44

      }

      package xuesheng;import javax.swing.*;import java.awt.*;import javax.swing.border.*;import java.awt.event.*;import java.io.*;/*登陸頁面首窗口*/ class WindowBox extends Frame implements ActionListener{ Box baseBox,box1,box2;TextField tf1,tf2;Button button1;Button button2;WindowBox(String s){//構造方法

      super(s);tf1 = new TextField(6);tf2 = new TextField(6);

      box1= Box.createVerticalBox();

      box1.add(new Label(”請輸入你的卡號“));//輸入卡號

      box1.add(Box.createVerticalStrut(8));

      box1.add(new Label(”請輸入你的支付密碼“));//輸入密碼

      box2=Box.createVerticalBox();

      box2.add(tf1);

      //box2.add(new TextField(16));

      box2.add(Box.createVerticalStrut(8));

      box2.add(tf2);

      //box2.add(new TextField(16));

      baseBox=Box.createHorizontalBox();

      baseBox.add(box1);

      baseBox.add(Box.createHorizontalStrut(10));

      baseBox.add(box2);

      add(baseBox);

      button1= new Button(”確定“);//加入按鈕

      button1.addActionListener(this);

      add(button1);

      button2 = new Button(”退卡“);//退卡按鈕

      button2.addActionListener(this);

      add(button2);

      setLayout(new FlowLayout());

      /*監(jiān)聽器*/ 45

      this.addWindowListener(new WindowAdapter(){

      public void windowClosing(WindowEvent e){

      System.exit(0);

      }

      });

      setBounds(220,225,225,275);

      setVisible(true);} public void actionPerformed(ActionEvent e){

      Account act;

      String card;String pwd;

      act=new Account(”12“,”Devil“,”12“,50000);//初始化

      /*選擇各種服務*/

      if(e.getSource()== button1){

      String number1,number2;//輸入的兩個卡號和密碼的變量

      number1=tf1.getText();

      number2=tf2.getText();

      /*判斷兩次輸入的卡號和密碼是否正確*/

      if((”123“.equals(number1))&&(”123“.equals(number2)))

      {

      Selection s = new Selection(”選擇服務“,act);

      }else{

      dispose();

      ErrorWarn ew = new ErrorWarn();//報輸入密碼或卡號不正確

      }

      } if(e.getSource()==button2){

      System.exit(0);

      dispose();//退出

      } } }

      package xuesheng;import javax.swing.*;import java.awt.*;import javax.swing.border.*;import java.awt.event.*;class Query extends Frame implements ActionListener{ 46

      //Account act;Button button;Account act;Query(String s,Account act){//構造函數(shù)

      super(s);

      this.act = act;

      button=new Button(”確定“);

      //TextField tf = new TextField(6);

      Panel panel1 = new Panel();

      Panel panel = new Panel();

      panel1.add(new Label(”你的余額為: “ + act.get_Money()));//查詢余額的方法

      //panel1.add(tf);

      button.addActionListener(this);

      panel.add(button);

      this.add(panel);

      this.add(panel1);

      this.setLayout(new GridLayout(2,1));

      this.addWindowListener(new WindowAdapter(){

      public void windowClosing(WindowEvent e){

      System.exit(0);

      }

      });

      setBounds(200,200,150,150);

      setVisible(true);} public void actionPerformed(ActionEvent e){

      if(e.getSource()==button){

      dispose();

      Selection s = new Selection(”選擇服務“,act);//返回選擇服務

      }

      } }

      package xuesheng;import javax.swing.*;import java.awt.*;import javax.swing.border.*;import java.awt.event.*;47

      class GetBalance extends Frame implements ActionListener{ Box baseBox, box1,box2;Button button;TextField tf;Account act;GetBalance(String s,Account act){//構造函數(shù)

      super(s);

      this.act=act;

      button=new Button(”確定“);

      Panel panel = new Panel();

      Panel panel1 = new Panel();

      tf = new TextField(6);

      this.setLayout(new GridLayout(2,1));

      panel1.add(new Label(”請輸入你想交電費的數(shù)目"));

      panel1.add(tf);

      panel.add(button);

      this.add(panel1);

      this.add(panel);

      button.addActionListener(this);

      this.addWindowListener(new WindowAdapter(){

      public void windowClosing(WindowEvent e){

      System.exit(0);

      }

      });

      setBounds(200,200,150,150);

      this.setVisible(true);}

      public void actionPerformed(ActionEvent e){

      //System.out.println(e.getActionCommand());

      double money;

      money = Double.parseDouble(tf.getText().trim());

      if(e.getSource()==button){

      if(act.get_Money()<0){//判斷余額是否為負

      dispose();

      ErrorWarn4 ew4 = new ErrorWarn4();

      }

      else if(money<=act.get_Money()){//交費的數(shù)額不大于余額

      if((money%100!=0)||(money>=5000)){

      dispose();

      ErrorWarn6 ew6 = new ErrorWarn6();

      } 48

      第五篇:工資管理系統(tǒng)--軟件工程課程設計2

      目 錄

      目錄...............................................................................................................第一章 緒

      論.................................................................................................1.1 開發(fā)背景說明....................................................................................1.2課程設計目的.....................................................................................1.3課程題目及內(nèi)容.................................................................................1.4課程設計要求.....................................................................................1.5預期目標.............................................................................................1.6 系統(tǒng)環(huán)境............................................................................................第二章 可行性分析.........................................................................................2.1 可行性研究前提................................................................................2.2 經(jīng)濟上可行性....................................................................................2.3 技術可行性........................................................................................2.4目標方案可行性.................................................................................2.5操作可行性.........................................................................................第三章 需求分析.............................................................................................3.1引言.....................................................................................................3.2任務陳述.............................................................................................3.3市場需求分析.....................................................................................3.4系統(tǒng)功能需求分析.............................................................................3.5系統(tǒng)性能需求分析.............................................................................3.6 系統(tǒng)業(yè)務數(shù)據(jù)流...................................................錯誤!未定義書簽。3.7用例分析...........................................................................................3.8用例列表...........................................................................................3.9繪制系統(tǒng)模型圖...............................................................................第四章 系統(tǒng)概要設計...................................................................................4.1模塊分析和概要設計.......................................................................4.2 系統(tǒng)數(shù)據(jù)庫邏輯結(jié)構設計..............................................................4.3概念模型轉(zhuǎn)換為關系數(shù)據(jù)模型.......................................................4.4 數(shù)據(jù)庫設計......................................................................................第五章 詳細設計...........................................................................................5.1登錄管理...........................................................................................-***39424243443

      入帳目時的錯誤,可以根據(jù)職工的考勤、職務、部門、各種稅費等等,自動求出工資。為了便于企業(yè)領導掌握本企業(yè)的工資信息在系統(tǒng)中應加入各種查詢功能,包括個人信息、職工工資、本企業(yè)內(nèi)某一個月或某一部門的工資情況查詢。系統(tǒng)應能輸出各類統(tǒng)計報表。

      本系統(tǒng)需要完成的功能主要有:系統(tǒng)數(shù)據(jù)初始化;職工基本信息數(shù)據(jù)的輸入、修改、刪除;企業(yè)工資的基本設定;職工工資的瀏覽;職工個人工資表的查詢;職工工資的計算;工資報表打印。

      數(shù)據(jù)流:

      職工基本狀況:包括職工編號、職工姓名、性別、年齡、職位等。工資級別和工資金額:包括工資等級、工資額。

      企業(yè)部門及工作崗位信息:包括部門名稱、工作崗位名稱、工作崗位工資等。工資信息:包括職工編號、職工姓名、職工基本工資、職工崗位工資、職工工齡工資、公司津貼、職工實發(fā)工資等。工齡和工資金額:包括工齡及對應工資額。

      1.4課程設計要求

      堅持“規(guī)格嚴格,功夫到家”的優(yōu)良傳統(tǒng),加強基本功訓練,做到理論與實際相結(jié)合,繼承與創(chuàng)新相結(jié)合,充分發(fā)揮學生的主觀能動性與教師因材施教、嚴格要求相結(jié)合,抓智力因素教育與非智力因素教育相結(jié)合,教書育人。所設計的工資管理系統(tǒng)應包含輸入輸出、修改、刪除、查詢等基本功能。根據(jù)題目的基本需求,畫出流程圖、用例圖、類圖等,編寫程序,并寫出詳細的設計說明書。課程設計過程中,要嚴格遵守課程設計的時間安排,聽從指導教師的指導。正確地完成上述內(nèi)容,規(guī)范完整地撰寫出課程設計報告。

      1.5預期目標

      計劃設計:對于企、事業(yè)單位的工資發(fā)放來說,不需要太大型的數(shù)據(jù)庫系統(tǒng),只需要一個操作方便,功能實用,能滿足財務部門對工資及時的發(fā)放。本工資管理系統(tǒng)預期目標就是實現(xiàn)如下的一些功能:查詢?yōu)g覽記錄功能,增加記錄功能、修改記錄功能、刪除記錄功能、刷新記錄功能、最后實現(xiàn)統(tǒng)計計算功能。

      1.6 系統(tǒng)環(huán)境

      1.6.1硬件:個人PC 1.6.2軟件:

      Windows XP、Microsoft Visual C++6.0、Rational Rose。

      第二章 可行性分析

      2.1 可行性研究前提

      要求:滿足對工資管理的基本要求及功能,并對職工信息收集、處理、保存。目標:實現(xiàn)無紙化辦公,節(jié)省成本,提高工作效率。

      條件、假定、限制:當企業(yè)工資管理的信息量和復雜程度達到某一限度時,即管理人員的勞動強度超過其承受能力時,就必須采用新的管理手段,如用計算機技術對信息的收集、加工、傳遞和存貯等,這樣,一個工資管理系統(tǒng)就可以對企業(yè)職工工資進行高效、合理、恰當?shù)毓芾怼?/p>

      2.2 經(jīng)濟上可行性

      開發(fā)成本要低廉。

      效益:大幅度地提高工資管理信息系統(tǒng)的工作質(zhì)量和效率,讓企業(yè)掌握整個工資管理系統(tǒng)的全面情況,為管理人員提供了準確的工資管理信息,促進工資管理工作的規(guī)范化及各項管理制度與指標體系的建立和健全;提供各種加工處理了的工資管理信息,以滿足工資管理的特殊要求,適應新形勢對職工隊伍提出的新要求。

      效益/投資比:暫時無法估算。投資回收期內(nèi):

      (1)企業(yè)有能力承擔系統(tǒng)開發(fā)費用。

      (2)新系統(tǒng)將為企業(yè)帶來經(jīng)濟效益。管理系統(tǒng)是一個信息化、智能化和先進。理理念的集合體。而管理是一個動態(tài)過程,在其運行過程中要采取多項措施。其最主要的表現(xiàn)就是減少了企業(yè)管理費用和人力開支。

      2.3 技術可行性

      (1)軟件需求:操作系統(tǒng)WINDOWS 2000 Advance Server以上。

      硬件需求:賽揚1.7G CPU、512M內(nèi)存 80G硬盤的計算機。(2)本系統(tǒng)采用VC++實現(xiàn),依靠其強大的面向?qū)ο笙到y(tǒng),與數(shù)據(jù)庫管理系統(tǒng)相結(jié)合。

      (3)要求掌握計算機技術,熟悉系統(tǒng)的功能和使用方法使系統(tǒng)能夠順利運行。

      2.4目標方案可行性

      計算機設備處理繁雜的工資增減問題,大幅度減少人力、物力,極大地提高企業(yè)的管理水平和管理效率。

      管理水平和管理效率的提高能直接產(chǎn)生經(jīng)濟效益。

      格,如完成任務表、考勤表、考核表、職工當月的扣款情況(包括水電費、病事假扣款等)等計算職工變動工資、個人所得稅和應發(fā)放工資等,編制工資單。按類進行匯總,編制工資匯總表。將實發(fā)工資轉(zhuǎn)入代發(fā)銀行,由銀行代發(fā)工資,并進行賬務處理。工資結(jié)算過程主要設計如下會計賬戶:現(xiàn)金、銀行存款、應付工資、其他應付款、其他應收款等。

      3.3市場需求分析

      工資管理系統(tǒng)是一個企業(yè)單位不可或缺的部分,他能為用戶提供充足的信息和快捷的查詢手段。一個工資管理系統(tǒng)可以高效能、大容量的收集、處理、存儲工資管理信息,大幅度的工資管理信息系統(tǒng)的工作質(zhì)量和效率。

      能夠為企業(yè)管理人員及時掌握整個工資管理系統(tǒng)的全面情況,提供系統(tǒng)的準確的工資管理信息,可以促進工資管理工作的規(guī)范化及各項管理制度與指標體系的建立和健全。為企業(yè)提供各種加工管理了工資管理信息,以滿足工資管理的特殊要求,適應新形勢對職工隊伍建設提出的新要求,幫助管理人員選擇方案,實現(xiàn)優(yōu)化決策。雖然當前,不少單位的工資管理部門對于計算機應用還僅限于簡單的單機應用,隨著時間的推移、任務的復雜、用戶的需求,其應用還會擴大。

      3.4系統(tǒng)功能需求分析

      工資管理系統(tǒng)涉及到員工基本信息的錄入、修改和刪除,工資標準的設定、查詢和結(jié)算等。

      典型的工資管理系統(tǒng)主要有以下基本功能: a)系統(tǒng)數(shù)據(jù)初始化

      b)員工基本信息的錄入、修改、刪除等功能

      c)工資標準的設定功能,集體包括職務工資、職稱工資、其他工資標準和福利的設定。

      d)工資信息的瀏覽

      e)員工工資信息表的創(chuàng)建及查詢 f)工資調(diào)整管理 g)工資計算 h)工資報表打印

      3.5系統(tǒng)性能需求分析

      3.5.1 需求分析總體目標

      需求分析的目的在于與開發(fā)人員與用戶之間達成系統(tǒng)開發(fā)的共識,使開發(fā)人員所考慮的系統(tǒng)在功能(系統(tǒng)能做什么)、簡單操作,良好界面,個人信息保密性,系統(tǒng)安全與穩(wěn)定,良好帳戶管理,友好信息返回模式(如報表及打印功能)。

      時,防止數(shù)據(jù)被不法分析任意的修改和破壞,對所有的敏感數(shù)據(jù)均進行基于SSL協(xié)議 的加密操作,只有對信息解密的人員才能最終讀取數(shù)據(jù)信息。這樣,能 最大程度的防止數(shù)據(jù)在傳輸過程的安全保密性。

      3.6 系統(tǒng)業(yè)務數(shù)據(jù)流

      3.6.1 數(shù)據(jù)流分析

      數(shù)據(jù)流程圖是一種能全面描述信息系統(tǒng)邏輯模型的主要工具,也是系統(tǒng)分析人員與用戶進行交流的有效手段。本系統(tǒng)的數(shù)據(jù)流程圖把握住對系統(tǒng)總體目標與總體功能的要求,基于上述的業(yè)務流程圖,從科學性,合理性和可行性入手,采用自頂向下,逐層分解的方法建立本管理信息系統(tǒng)的邏輯模型,綜合地反映出信息在本系統(tǒng)中的流動,處理和存儲,具有抽象性和概括性.通過進行用戶調(diào)查收集用戶需求后,就要對用戶需求進行分析,并表達用戶的需求。采用結(jié)構化分析方法,主要采用數(shù)據(jù)流圖對用戶需求進行分析,用數(shù)字字典和加工說明對數(shù)據(jù)流圖進行補充和說明。數(shù)據(jù)流圖用于描述系統(tǒng)中數(shù)據(jù)流動的過程,反映的是加工處理的對象。

      3.6.2 流程圖,模塊圖如下:

      流程圖

      模塊圖

      112

      3.9.2活動圖:

      分析用例中的邏輯流程,描述用例的事件流,進而畫出各用例對應的活動圖 用戶登錄活動圖:

      管理員工信息活動圖:

      3.9.3 類圖:

      類圖是面向?qū)ο蟮能浖_發(fā)中的一個核心概念。Rose中的類圖用于描述軟件系統(tǒng)中涉及到的類的相關信息,以及類與類之間的相互關系。

      〔1〕類的識別

      類的識別通常由分析員在分析問題域的基礎上來完成。常用的方法有: ? a.名詞識別法。? b.系統(tǒng)識別法。? c.從用例中識別類。? d.利用分解與抽象技術。〔2〕系統(tǒng)類圖

      3.9.4狀態(tài)圖:

      狀態(tài)圖(State Diagram)用來描述一個特定對象的所有可能狀態(tài)及其引起狀態(tài)轉(zhuǎn)移的事件。

      3.9.5 時序圖:

      時序圖用來描述對象之間動態(tài)的交互關系,著重體現(xiàn)對象間消息傳送消息的時間順序。下面分別給出各個用例的時序圖:

      用戶登錄時序圖:

      職工時序圖:

      71819

      設計一般分為三個步驟:

      〔1〕概念模型轉(zhuǎn)換為關系數(shù)據(jù)模型?!?〕關系模型的優(yōu)化。〔3〕設計用戶子模式書號。

      4.3概念模型轉(zhuǎn)換為關系數(shù)據(jù)模型

      一般轉(zhuǎn)換原則如下:

      〔1〕一個實體轉(zhuǎn)換為一個表(Table),則實體的屬性轉(zhuǎn)換為表的列(Column),實體的碼轉(zhuǎn)換為表的主鍵(Primary Key)。

      〔2〕實體間的聯(lián)系根據(jù)聯(lián)系的類型,轉(zhuǎn)換如下: ① 1:n 的聯(lián)系:

      1:n 的聯(lián)系是比較普遍的聯(lián)系,其轉(zhuǎn)換比較直觀。轉(zhuǎn)換規(guī)律是在n 端的實體對應的表中增加屬性,該屬性是1 端實體對應表的主碼。如:崗位和員工的關系是1:n 的聯(lián)系。

      ② m:n 的聯(lián)系:

      通過引進一個新表來表達兩個實體間多對多的聯(lián)系,新表的主碼由聯(lián)系兩端實體的主碼組合而成,同時增加相關的聯(lián)系屬性。如:部門與員工的聯(lián)系是n:m 聯(lián)系。

      4.4 數(shù)據(jù)庫設計

      數(shù)據(jù)庫的物理結(jié)構設計是指為邏輯數(shù)據(jù)模型選取一個最適合應用環(huán)境的物理結(jié)構(包括存儲結(jié)構和存取方法),它完全取決于給定的計算機系統(tǒng)。物理結(jié)構可分兩步進行。第一步是分析所得到的各種數(shù)據(jù)模型,依據(jù)在實際執(zhí)行時可能產(chǎn)生的數(shù)據(jù)容量以及各種數(shù)據(jù)模型之間的相互依賴程度等,確定數(shù)據(jù)庫的物理結(jié)構;第二步則要根據(jù)某種方法對所設計的物理結(jié)構進行評價,評價重點是時間和空間的效率。數(shù)據(jù)庫實施是指建立數(shù)據(jù)庫,編制與調(diào)試應用程序,組織數(shù)據(jù)入庫,并進行試運行。

      根據(jù)人員規(guī)模,我們只建立起一個數(shù)據(jù)庫,在此數(shù)據(jù)庫基礎上建立起如下表:

      ·職工表

      ·用戶表

      ·工資表

      下面說明各表的字段名稱和數(shù)據(jù)類型:

      工資表:

      職工表:

      用戶表:

      第五章 詳細設計

      詳細設計階段主要是將系統(tǒng)中的每個模塊完成的功能進行具體描述。

      5.1登錄管理

      根據(jù)系統(tǒng)總體結(jié)構可以得出登錄管理模塊實現(xiàn)用戶登錄、密碼修改和退出系統(tǒng)三個功能。其中,退出系統(tǒng)實現(xiàn)流程很容易,只需要一行代碼即可;用戶登錄的實現(xiàn)流程是用戶在登錄窗口輸入用戶名稱和密碼,如果沒有用戶名和密碼可以進行注冊后再登錄,選擇了用戶角色后,單擊【登錄】按鈕進行提交,系統(tǒng)開始驗證用戶提交的登錄信息是否正確。如果正確,則打開工資管理系統(tǒng),并根據(jù)用戶角色賦于相應的操作權限;否則給出錯誤信息。

      5.1.1界面設計 登錄界面如下:

      5.1.2 代碼

      部分核心代碼設計: void CZHUCE::OnButton1(){

      UpdateData(TRUE);if(m_username.IsEmpty()||m_password.IsEmpty()||m_password2.IsEmpty()){AfxMessageBox(“請將資料填寫完整!”);m_password2.Empty();

      m_password.Empty();

      UpdateData(FALSE);

      return;} OnInitADOConn();if(m_password2==m_password){

      CString str;

      str.Format(“insert into 用戶表(用戶名,密碼)('%s','%s')”,m_username,m_password);

      _variant_t var;

      int fieldrow;

      try{//捕捉表的主鍵存在重復值的異常

      m_pConnection->Execute((_bstr_t)str,&var,adCmdText);

      fieldrow=(int)V_I2(&var);

      }

      catch(...)

      {

      AfxMessageBox(“用戶名已存在,注冊失敗”);

      m_username.Empty();

      m_password.Empty();

      m_password2.Empty();

      UpdateData(FALSE);

      return;}

      AfxMessageBox(“注冊成功,請返回登錄!”);

      m_pConnection->Close();

      Clogin clg;

      clg.DoModal();} else{AfxMessageBox(“兩次密碼輸入不一樣,注冊失敗!”);

      m_username.Empty();

      m_password.Empty();m_password2.Empty();

      }} UpdateData(FALSE);return;void CZHUCE::OnInitADOConn()try {//創(chuàng)建連接對象實例

      } catch(_com_error e){ AfxMessageBox(e.Description());m_pConnection.CreateInstance(“ADODB.Connection”);//設置連接字符串 Cstring

      strConnect=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=salary.mdb;Persist Security Info=False;”;//使用Open方法連接數(shù)據(jù)庫

      m_pConnection->Open((_bstr_t)strConnect,“",”“,adModeUnknown);

      }

      try{if(m_pConnection==NULL){OnInitADOConn();} m_pRecordset.CreateInstance(__uuidof(Recordset));m_pRecordset->Open(sqlstr,m_pConnection.GetInterfacePtr(),adOpenDyna

      } catch(_com_error e){ e.Description();} return m_pRecordset;

      mic,adLockOptimistic,adCmdText);

      5.1.3修改密碼模塊:

      成功登錄主界面:

      5.2用戶管理

      用戶管理模塊用于實現(xiàn)用戶的添加、刪除、更新功能。5.2.1新增用戶模塊:

      627UpdateData(TRUE);if(m_Bianhao.IsEmpty()||m_Name.IsEmpty()){AfxMessageBox(”not null“);return;} OnInitADOConn();CString str;str.Format(”update 職工表 set 性別='%s',年齡=%d,電話='%s',住址='%s',位='%s',備

      ='%s'

      where

      號='%s'“,m_Sex,m_Age,m_Telphone,m_Address,m_Zhiwei,m_Beizhu,m_Bianhao);m_pConnection->Execute((_bstr_t)str,NULL,adCmdText);m_pConnection->Close();m_zhglist.DeleteAllItems();AddToGrid();ClearAll();UpdateData(FALSE);

      {// TODO: Add your control notification handler code here

      } void CGXZHG::OnButton4(){

      UpdateData(TRUE);if(m_tiaojian.IsEmpty()){AfxMessageBox(”請選擇刪除的職工!“);return;} OnInitADOConn();CString bstrSQL;bstrSQL.Format(”delete from 職工表 where 職工編號CMAKESURE cmake;if(cmake.DoModal()!=IDOK){ }

      m_pConnection->Execute((_bstr_t)bstrSQL,NULL,adCmdText);m_pConnection->Close();m_zhglist.DeleteAllItems();AddToGrid();ClearAll();AfxMessageBox(“刪除成功!”);UpdateData(FALSE);return;='%s'“,m_tiaojian);UpdateData(TRUE);m_type.GetWindowText(m_Type);if(m_Type.IsEmpty()){AfxMessageBox(”請選擇查詢的方式!“);return;} if(m_tiaojian.IsEmpty()){AfxMessageBox(”請輸入查詢的職工編號!“);return;} OnInitADOConn();CString sql;

      部分核心代碼如下: void CTXGZ::OnButton2()

      {// TODO: Add your control notification handler code here

      息!”);

      if(m_Bianhao.IsEmpty()||m_Jibengz==NULL||m_Yuefen.IsEmpty()){AfxMessageBox(“編號不允許空值,請重新填寫!”);ClearALL();return;} OnInitADOConn();float CString cstr1;cstr1.Format(“%.2f”,f1);m_yfsh.SetWindowText(cstr1);float f2=m_Fangzu+m_Chuxu+m_Huifei;CString cstr2;cstr2.Format(“%.2f”,f2);m_yksh.SetWindowText(cstr2);float f4;f4=calculator(f1-f2);float f3=f1-f2-f4;CString cstr3;cstr3.Format(“%.2f”,f3);m_shfsh.SetWindowText(cstr3);CString cstr4;cstr4.Format(“%.2f”,f4);m_grsdsh.SetWindowText(cstr4);CString str;str.Format(“insert

      into

      values UpdateData(TRUE);m_yuefen.SetCurSel(0);// AfxMessageBox(”該編號的職工不存在,請先到職工管理添加職工信f1=m_Jibengz+m_Jintie+m_Gangtie+m_Butie+m_Fangtie+m_Jiaotongbt;('%s','%s',%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f)“,m_

      } void CTXGZ::ClearALL(){

      } void CTXGZ::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult){// TODO: Add your control notification handler code here

      m_pConnection->Close();m_gzlist.DeleteAllItems();AddToGrid();m_yuefen.SetCurSel(0);ClearALL();m_Jibengz=NULL;m_Jintie=NULL;

      m_Shfsh.Empty();m_Yfsh.Empty();m_Yksh.Empty();m_Yuefen.Empty();m_Chaxun.Empty();m_Jiaotongbt=NULL;m_Huifei=NULL;m_Grsdsh.Empty();m_Fangzu=NULL;m_Fangtie=NULL;m_Chuxu=NULL;m_Bianhao=”“;m_Gangtie=NULL;UpdateData(FALSE);int position=m_gzlist.GetSelectionMark();m_Bianhao=m_gzlist.GetItemText(position,0);m_Chaxun=m_gzlist.GetItemText(position,0);m_Yuefen=m_gzlist.GetItemText(position,1);m_Jibengz=atof(m_gzlist.GetItemText(position,2));m_Jintie=atof(m_gzlist.GetItemText(position,3));m_Gangtie=atof(m_gzlist.GetItemText(position,4));

      3return;} void CTXGZ::OnButton5(){

      } float CTXGZ::calculator(float a){float b=a-2000;

      } if(b<0){b=0;} if(0=500&&b<2000){return b=b*10/100-25;} if(b>=2000&&b<5000){return b=b*15/100-125;} if(b>=5000&&b<20000){return b=b*20/100-375;} if(b>=20000&&b<40000){return b=b*25/100-1375;} if(b>=40000&&b<60000){return b=b*30/100-3375;} if(b>=60000&&b<80000){return b=b*35/100-6375;} if(b>=80000&&b<100000){return b=b*40/100-10375;} if(b>=100000){ return b=b*45/100-15375;} UpdateData(TRUE);if(m_Chaxun.IsEmpty()){AfxMessageBox(”請輸入查詢的職工編號!“);return;} OnInitADOConn();CString sql;sql.Format(”select * from 工資表 where 職工編號='%s'“,m_Chaxun);m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText);m_pConnection->Close();m_gzlist.DeleteAllItems();ClearALL();m_Chaxun=m_Chaxun;m_yuefen.SetCurSel(0);UpdateData(FALSE);5.5查詢管理

      該模塊實現(xiàn)功能是職工查詢工資的詳細信息,查詢個人詳細信息的功能。

      5.5.1職工信息查詢:

      5.5.2工資信息查詢:

      部分核心代碼如下: void CGXGZ::OnButton1(){ UpdateData(TRUE);

      if(m_Chaxun.IsEmpty()){AfxMessageBox(”請輸入查詢的職工編號!“);return;} OnInitADOConn();CString sql;sql.Format(”select * from 工資表 where 職工編號='%s'“,m_Chaxun);m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText);m_pConnection->Close();m_gzlist.DeleteAllItems();UpdateGrid();m_Chaxun.Empty();

      6UpdateData(FALSE);{//創(chuàng)建連接對象實例

      } catch(_com_error e){ AfxMessageBox(e.Description());m_pConnection.CreateInstance(”ADODB.Connection“);//設置連接字符串 CString

      strConnect=”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=salary.mdb;Persist Security Info=False;“;//使用Open方法連接數(shù)據(jù)庫

      m_pConnection->Open((_bstr_t)strConnect,”“,”“,adModeUnknown);

      } OnInitADOConn();//設置查詢字符串 CString bstrSQL;bstrSQL.Format(”select * from 工資表 where 職工編號='%s' order by 職//創(chuàng)建記錄集指針對象實例

      m_pRecordset.CreateInstance(__uuidof(Recordset));//打開記錄集

      m_pRecordset->Open((_bstr_t)bstrSQL,m_pConnection.GetInterfacePtr(),ad adLockOptimistic,adCmdText);工編號 desc “,m_Chaxun);OpenDynamic, while(!m_pRecordset->adoEOF){ m_gzlist.InsertItem(0,”“);m_gzlist.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->GetCollect(”職工編號

      m_gzlist.SetItemText(0,1,(char*)(_bstr_t)m_pRecordset->GetCollect(“月份”));m_gzlist.SetItemText(0,2,(char*)(_bstr_t)m_pRecordset->GetCollect(“基本工資”));m_gzlist.SetItemText(0,3,(char*)(_bstr_t)m_pRecordset->GetCollect(“津貼”));m_gzlist.SetItemText(0,4,(char*)(_bstr_t)m_pRecordset->GetCollect(“崗貼”));m_gzlist.SetItemText(0,5,(char*)(_bstr_t)m_pRecordset->GetCollect(“補貼”));m_gzlist.SetItemText(0,6,(char*)(_bstr_t)m_pRecordset->GetCollect(“房貼”));m_gzlist.SetItemText(0,7,(char*)(_bstr_t)m_pRecordset->GetCollect(“交通補貼”));m_gzlist.SetItemText(0,8,(char*)(_bstr_t)m_pRecordset->GetCollect(“應發(fā)數(shù)”));m_gzlist.SetItemText(0,9,(char*)(_bstr_t)m_pRecordset->GetCollect(“房租”));m_gzlist.SetItemText(0,10,(char*)(_bstr_t)m_pRecordset->GetCollect(“儲蓄”));m_gzlist.SetItemText(0,11,(char*)(_bstr_t)m_pRecordset->GetCollect(“會費”));m_gzlist.SetItemText(0,12,(char*)(_bstr_t)m_pRecordset->GetCollect(“個人所得稅”));m_gzlist.SetItemText(0,13,(char*)(_bstr_t)m_pRecordset->GetCollect(“應扣數(shù)”));m_gzlist.SetItemText(0,14,(char*)(_bstr_t)m_pRecordset->GetCollect(“實發(fā)數(shù)”));

      } void CGXGZ::ExitConnect(){if(m_pRecordset!=NULL)

      } m_pRecordset->Close();m_pConnection->Close();//將記錄集指針移動到下一條記錄

      } //AfxMessageBox(“123”);//斷開數(shù)據(jù)庫連接 ExitConnect();m_pRecordset->MoveNext();

      第六章 系統(tǒng)測試

      6.1 測試方法

      (1)測試人員:

      測試隊伍由兩位成員組成。軟件的設計者在測試整個過程中負責整體測試方案的制定和測試進度的掌握以及白盒測試的測試者。第二位成員由未參加軟件制作者擔任,主要責任是進行軟件的黑盒測試以及軟件環(huán)境,硬件要求和極限測試工作。

      (2)機器測試:

      通過在計算機上直接運行被測程序,來發(fā)現(xiàn)程序中的錯誤。機器測試包括黑盒測試盒白盒測試。黑盒測試也稱功能測試,將軟件看作黑盒子,在完全不考慮程序的內(nèi)部結(jié)構和特性的情況下,研究軟件的外部特性。根據(jù)軟件的需求規(guī)格說明書測試用例,從程序的輸入和輸出特性上測試是否滿足設定的功能。白盒測試也稱結(jié)構測試,將軟件看作一個透明的白盒子,按照程序的內(nèi)部結(jié)構和處理邏輯來選定測試用例,對軟件的邏輯路徑及過程進行測試,檢查與測試是否相符。

      6.2測試內(nèi)容

      1)軟件的正常運行、關閉及退出時保存記錄的提示。

      2)用戶登錄界面友好,可操作性及安全性能較好,能對不同管理級別者進行限制,以保證數(shù)據(jù)庫的安全。

      3)數(shù)據(jù)庫的可維護性好,數(shù)據(jù)的錄入、刪除及更改均能順利完成,并能實現(xiàn)動態(tài)更新。

      4)數(shù)據(jù)查詢便捷,能對各種不同的查詢條件搜索,以找到最合適的答案。5)數(shù)據(jù)溢出、越界均能進行非法提示,以警告用戶正確使用。對用戶的正常操作方式也提出警告。

      6)數(shù)據(jù)類型填寫錯誤時,系統(tǒng)能夠報錯。

      7)軟件對操作系統(tǒng)的兼容性良好,可移植性完好。

      6.3測試結(jié)果

      本系統(tǒng)有提示消息!

      錄入相同編號的數(shù)據(jù):

      該系統(tǒng)有報錯功能!

      查詢職工工資信息:

      查詢職工信息成功!

      1424344-

      牟永敏

      清華大學出版社

      下載軟件工程課程設計 (個人賬本管理系統(tǒng))word格式文檔
      下載軟件工程課程設計 (個人賬本管理系統(tǒng)).doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發(fā)現(xiàn)有涉嫌版權的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權內(nèi)容。

      相關范文推薦

        軟件工程課程設計報告(個人)2010

        軟件工程課程設計報告(個人)課程設計題目:研究生教務管理系統(tǒng) 專業(yè):信息與計算科學班級: 報告人姓名:學號課程教師:實驗指導教師: 實驗地點: 完成起止日期:[正文] 一、課程設計概述(目......

        《軟件工程》課程設計個人報告

        軟件工程課程設計報告 海天一色網(wǎng)上書店 《軟件工程》課程設計個人報告 題 目 網(wǎng)上書店 學 院 名稱 :信息科學與工程學院 專 業(yè) 班級 :計算機09-2 班報 告 人姓名 : 梁宏報......

        軟件工程課程設計個人體會

        數(shù)學與信息工程學院 項目名稱: 實驗室設備管理系統(tǒng) 專業(yè)班級:11計教1班學號:1129020025 姓名:蔣一瑭 承擔角色:美工,問題處理 組號:08 同組組長:鄧磊 同組其他成員:王宇翔 馬富偉 江......

        軟件工程課程設計

        軟件工程課程設計實驗心得經(jīng)過一個星期的軟件工程課程設計,本人在老師的指導下,順利完成該課程設計。通過該課程設計,收獲頗多。 一、 對實驗原理有更深的理解 通過該課程設計,......

        軟件工程--圖書管理系統(tǒng)--個人總結(jié)

        軟件工程--圖書管理系統(tǒng) 個人總結(jié)報告 設計題目:圖書管理系統(tǒng) 總結(jié)匯報: 指導老師: 2013年6月15日 1.引言 1.1編寫目的 現(xiàn)代軟件工程中圖書館管理系統(tǒng)的開發(fā)與匯報已結(jié)束,關于......

        軟件工程 學生宿舍管理系統(tǒng)

        一、 需求分析 軟件需求是軟件開發(fā)的基礎,每個軟件開發(fā)過程都是以獲取需求為目的的活動:理解客戶的基本需求和目標。準確獲取用戶的需求是項目開發(fā)成功的開端。然而,軟件工程所......

        軟件工程課程設計封面

        淮南師范學院 計算機與信息工程系 《軟件工程》課程設計 工資管理項目軟件工程報告 專業(yè)班級: 計算機科學與技術08(1)班 項目組號: 組長:程亮 組員:吳騰、徐羅敬 指導老師:孫淮寧(教......

        《軟件工程》課程設計要求

        《軟件工程》課程設計要求 一、課程設計目的 《軟件工程》是一門實踐性極強的課程。課程設計通過一個實際的項目,培養(yǎng)學生分析問題和解決實際問題的能力,培養(yǎng)學生綜合應用軟件......