久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

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

時(shí)間:2019-05-14 14:36:45下載本文作者:會(huì)員上傳
簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《軟件工程課程設(shè)計(jì) (個(gè)人賬本管理系統(tǒng))》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《軟件工程課程設(shè)計(jì) (個(gè)人賬本管理系統(tǒng))》。

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

軟件工程課程設(shè)計(jì)報(bào)告---個(gè)人帳本管理

一、需求分析

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

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

2、軟件主要組成及功能

? 收入模塊

功能:錄入收入

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

1、工資;

2、獎(jiǎng)金;

3、其他收入;);

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

? 支出模塊

功能:支出的記錄

什么時(shí)候

什么類型的支出(1、生活費(fèi);

2、日常用品;

3、休閑娛樂(lè);

4、社交應(yīng)酬;

5、交通費(fèi);

6、通訊費(fèi);

7、醫(yī)療保健;

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

? 查詢模塊 功能:查詢

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

2、收入;

3、全部)

時(shí)間(1、今天;

2、昨天;

3、本周;

4、上周;

5、本月;

6、上月;

7、本年;

8、去年;

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

消費(fèi)的金額在什么范圍之類的記錄 將時(shí)間,類別,金額,備注顯示出來(lái)

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

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

2、收入;)

時(shí)間(1、今天;

2、昨天;

3、本周;

4、上周;

5、本月;

6、上月;

7、本年;

8、去年;

9、全部;)什么類別

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

2、平均值;

3、最大值;

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

? 管理模塊

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

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

? 修改模塊

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

對(duì)記錄進(jìn)行修改 對(duì)記錄刪除。

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

收入 頂層圖:

填寫(xiě)相應(yīng)的信息收入錄入事務(wù)確認(rèn)成功錄入成功

一層圖: 收入錄入事務(wù)填寫(xiě)相應(yīng)的信息返回確認(rèn)信息確認(rèn)成功錄入成功D:添加收入信息

支出 頂層圖:

填寫(xiě)相應(yīng)的信息支出錄入事務(wù)確認(rèn)成功錄入成功

一層圖:

填寫(xiě)相應(yīng)的信息支出錄入事務(wù)返回確認(rèn)信息確認(rèn)成功錄入成功D:添加支出信息

查詢 頂層圖:

填寫(xiě)相應(yīng)的信息查詢命令輸入事務(wù)確認(rèn)成功查詢成功

一層圖: 查詢命令輸入事務(wù)填寫(xiě)相應(yīng)的信息返回確認(rèn)信息確認(rèn)成功顯示查詢結(jié)果D:查詢信息

統(tǒng)計(jì) 頂層圖:

填寫(xiě)相應(yīng)的信息統(tǒng)計(jì)命令輸入事務(wù)確認(rèn)成功顯示統(tǒng)計(jì)結(jié)果

一層圖:

填寫(xiě)相應(yīng)的信息統(tǒng)計(jì)命令輸入事務(wù)返回確認(rèn)信息確認(rèn)成功顯示統(tǒng)計(jì)結(jié)果D:查詢信息

管理 頂層圖:

填寫(xiě)相應(yīng)的信息管理命令輸入事務(wù)確認(rèn)成功管理成功

一層圖: 管理命令輸入事務(wù)填寫(xiě)相應(yīng)的信息返回確認(rèn)信息確認(rèn)成功處理成功D:記錄 查詢

修改 頂層圖:

填寫(xiě)相應(yīng)的信息修改命令輸入事務(wù)確認(rèn)成功修改成功

一層圖:

填寫(xiě)相應(yīng)的信息修改命令輸入事務(wù)返回確認(rèn)信息確認(rèn)成功修改成功D:查詢數(shù)據(jù)庫(kù)

5、外部接口需求

在用戶界面方面要求對(duì)每一個(gè)操作都以主界面為前提彈出相應(yīng)的對(duì)話框,硬軟件接口方面沒(méi)有特別的需求,一般用戶都可以直接使用。

6、性能需求

因?yàn)橄到y(tǒng)本身較小,實(shí)際使用的人群的特點(diǎn),響應(yīng)時(shí)間可能有不同的要求。

7、軟件屬性需求

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

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

所開(kāi)發(fā)出來(lái)的軟件必須是可維護(hù)的,要有可以升級(jí)的空間,要預(yù)留接口,方便后面軟件的升級(jí)。

8、二、項(xiàng)目概要設(shè)計(jì)

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

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

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

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

在第一次運(yùn)行是要首先運(yùn)行此文件對(duì)控件進(jìn)行注冊(cè)。

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

? 收入

? 支出

? 查詢

? 統(tǒng)計(jì)

? 管理

? 退出

三、詳細(xì)設(shè)計(jì)

1、進(jìn)行項(xiàng)目詳細(xì)設(shè)計(jì)工作;

2、寫(xiě)出詳細(xì)設(shè)計(jì)說(shuō)明書(shū)。

四、編 碼

1、此系統(tǒng)用MFC來(lái)編寫(xiě)。

2、編碼分工:

3、各個(gè)模塊核心代碼 查詢模塊:

// 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 時(shí)間,類別,金額,備注from mymoney where 類型= ”+type+“ and 類別= '”+kind+“' and 時(shí)間>= '”+start+“'and 時(shí)間<= '”+end+“' and 金額>= ”+count+“ order by 時(shí)間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(”時(shí)間“)));

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(”無(wú)此記錄“);

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ù)庫(kù)備份 { // TODO: 在此添加控件通知處理程序代碼

m_button1.EnableWindow(false);m_button2.EnableWindow(true);m_static.SetWindowTextW(_T(”請(qǐng)選擇備份目錄:“));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ù)庫(kù)還原 { // TODO: 在此添加控件通知處理程序代碼

m_button2.EnableWindow(false);m_button1.EnableWindow(true);m_static.SetWindowTextW(_T(”請(qǐng)選擇還原文件目錄:“));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(”請(qǐng)選擇目錄“);

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ù)庫(kù)文件|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(”時(shí)間“,(_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(”時(shí)間“)->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)計(jì)模塊:

// CCount 消息處理程序

void CCount::OnBnClickedOk()//確定統(tǒng)計(jì) { // 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 時(shí)間>= '“+start+”'and 時(shí)間<= '“+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(”時(shí)間“,(_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(”時(shí)間“)->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;} }

五、項(xiàng)目測(cè)試1、2、3、4、黑盒測(cè)試用例: 白盒測(cè)試用例: 黑盒測(cè)試記錄: 白盒測(cè)試記錄:

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

銷售管理系統(tǒng)一.項(xiàng)目簡(jiǎn)介

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

二.功能需求

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

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

2.銷售人員對(duì)功能的需求

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

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

3.售后服務(wù)人員對(duì)功能的需求

1>查看售后服務(wù)信息。2>添加售后服務(wù)信息。

三.分析模型時(shí)序圖

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

1.客戶管理

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

2.銷售管理

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

3.售后服務(wù)管理

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

4.客戶登錄動(dòng)態(tài)時(shí)序圖為

四.模塊活動(dòng)圖,登錄流程圖

1.注冊(cè)、登陸模塊

1>模塊功能描述

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

用戶注冊(cè)模塊程序流程圖

登錄模塊程序流程圖

活動(dòng)圖為:

2.客戶管理模塊

1>模塊功能描述

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

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

客戶管理模塊流程圖

活動(dòng)圖為:

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

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

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

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

銷售管理模塊流程圖

活動(dòng)圖為

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

1.客戶信息表

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

2.商品進(jìn)貨表

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

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

六.運(yùn)行界面與代碼

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 ”P(pán)rovider=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 ”非法登錄,密碼錯(cuò)誤!“, 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

`進(jìn)貨管理

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(”確定刪除當(dāng)前記錄,數(shù)據(jù)將不可恢復(fù)?“, vbOKCancel, ”提示“)= vbOK Then Adodc1.Recordset.Delete End If End Select End Sub

Private Sub Form_Load()Adodc1.ConnectionString = ”P(pán)rovider=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(”確定刪除當(dāng)前記錄,數(shù)據(jù)將不可恢復(fù)?“, vbOKCancel, ”提示“)= vbOK Then Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.Open ”P(pán)rovider=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 = ”P(pán)rovider=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 ”P(pán)rovider=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ù)沒(méi)有輸入完整,請(qǐng)重新輸入!“, 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 '在庫(kù)存表中將庫(kù)存數(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 ”P(pán)rovider=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 ”P(pán)rovider=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

第三篇:軟件工程課程設(shè)計(jì)之——學(xué)生成績(jī)管理系統(tǒng)

1.設(shè)計(jì)背景

隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)技術(shù)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識(shí),它已進(jìn)入人類社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來(lái)越重要的作用。現(xiàn)在我國(guó)的教育機(jī)構(gòu)對(duì)學(xué)生成績(jī)管理還普遍停留在紙介質(zhì)的基礎(chǔ)上,這樣的機(jī)制已經(jīng)不能適應(yīng)時(shí)代的發(fā)展,因?yàn)樗速M(fèi)了許多人力和物力,在信息時(shí)代,這種傳統(tǒng)的管理方法必然被計(jì)算機(jī)為基礎(chǔ)的信息管理所取代。

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

2.設(shè)計(jì)方案

2.1總體設(shè)計(jì)

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

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

2.2模塊設(shè)計(jì)

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

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

b .刪除功能:輸入要?jiǎng)h除的學(xué)生的學(xué)號(hào),且必須輸入密碼驗(yàn)證,確定則執(zhí)行該操作修改該學(xué)生信息,取消則放棄該操作。

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

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

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

3.方案實(shí)施

3.1成績(jī)管理各模塊功能介紹

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

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

具體實(shí)現(xiàn)功能如下:添加學(xué)生成績(jī)、刪除學(xué)生成績(jī)、查詢學(xué)生成績(jī)、班級(jí)創(chuàng)建或刪除、科目調(diào)整和刪除等。科目管理中科目添加和科目刪除的部分代碼如下:

科目管理

科目添加

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;

//標(biāo)簽

JTextField tf1,tf2;

//定義文本框

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

ReturnBook()

{

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

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

學(xué)生科目添加

//-----------------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+“歡迎登陸學(xué)生信息系統(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(“學(xué)號(hào)”,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);//注冊(cè)監(jiān)聽(tīng)器

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,”請(qǐng)?zhí)顚?xiě)學(xué)生信息“);return;}

try{

Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);

}catch(ClassNotFoundException e){System.out.println(”加載驅(qū)動(dòng)程序失敗!“);}

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()+”');“;

//查詢輸入的學(xué)號(hào)是否在數(shù)據(jù)庫(kù)中存在 使用當(dāng)前類目錄下的數(shù)據(jù)庫(kù)文件

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

sql=con.createStatement();

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

if(moreRecords)

{

JOptionPane.showMessageDialog(f3,”學(xué)號(hào)已經(jīng)被使用,請(qǐng)重新輸入“);

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

}

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

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

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;

//標(biāo)簽:請(qǐng)輸入姓名學(xué)號(hào) JTextField tf;

//定義文人框

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

Object columnName[]={”學(xué)號(hào)“,”科目“};

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

BorrowBook()

{

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

jpanelWest=new JPanel();

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

jbt2=new JButton(”刪除“);

jbt3=new JButton(”錄入“);

jbt4=new JButton(”關(guān)閉“);

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

size='4'>

請(qǐng)

“,SwingConstants.CENTER);label.setForeground(Color.blue);L=new JLabel(”該學(xué)生共有“+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();//用來(lái)放兩個(gè)表 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);//注冊(cè)監(jiān)聽(tīng)器

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ū)動(dòng)程序失敗!“);}

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

接使用當(dāng)前類目錄下的數(shù)據(jù)庫(kù)文件

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ū)動(dòng)程序失敗!“);}

try{

String url = ”jdbc:odbc:driver={Microsoft Access Driver(*.mdb)};DBQ=Book.mdb“;//直接使用當(dāng)前類目錄下的數(shù)據(jù)庫(kù)文件

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

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

String s=”delete * from grade where 學(xué)號(hào) ='“+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,”請(qǐng)選定要?jiǎng)h除的姓名“,”輸入錯(cuò)誤“, JOptionPane.YES_NO_OPTION);

else{

BorrowIn k=new BorrowIn();

k.setData(ar[index][0].toString(),ar[index][1].toString());

}

}

//**************

//if(cmd.equals(”還書(shū)“))

//new ReturnBook();

if(cmd.equals(”關(guān)閉"))

//

f.setVisible(false);

f.dispose();

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

}

}

BorrowBook a=new BorrowBook();

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

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

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

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

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

(1)對(duì)后臺(tái)數(shù)據(jù)庫(kù)中數(shù)據(jù)的日常維護(hù),包括自動(dòng)清理過(guò)時(shí)數(shù)據(jù);

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

(3)對(duì)補(bǔ)考學(xué)生的處理。

總之此次設(shè)計(jì)使我受益匪淺,雖然過(guò)程中有許多不盡人意的地方,但通過(guò)大家的努力最終還是把問(wèn)題給攻克了。在此次設(shè)計(jì)中學(xué)到的知識(shí)對(duì)我終生受用。

5.收獲與致謝

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

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

最后我要感謝我們組的全體人員,沒(méi)有大家的幫助和鼓勵(lì),我也不可能完成這么多的設(shè)計(jì),也不可能學(xué)到這麼多有用的知識(shí)。

謝謝同學(xué)們對(duì)我的幫助,同時(shí)也謝謝老師對(duì)我們的輔導(dǎo)。沒(méi)有大家的共同努力就沒(méi)有我們今天課程設(shè)計(jì)的圓滿完成。向我摯愛(ài)的王瑞平老師以及可愛(ài)的同學(xué)們送上我最崇高的敬意!謝謝你們!

6.參考文獻(xiàn)

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

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

軟件工程

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

學(xué)生姓名: 武鵬艷 喬海亮

學(xué)生班級(jí): 軟件工程122002班

學(xué)生學(xué)號(hào): 201220040220 201220040213 指導(dǎo)老師: 潘理虎 日 期: 2014.6.20

目錄

一.背景分析...............................................................................................1 二.系統(tǒng)設(shè)計(jì)問(wèn)題定義..............................................................................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)流程圖設(shè)計(jì)................................................................................3 六.系統(tǒng)功能模塊圖設(shè)計(jì)........................................................................4

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

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

一.背景分析

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

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

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

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

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

1、貨幣的時(shí)間價(jià)值

假設(shè)生命周期為t年,編寫(xiě)程序需m元,應(yīng)用程序后,每年可節(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)濟(jì)可行性:獲益是當(dāng)初投資總額的三倍或三倍以上,可以進(jìn)行投資。

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

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

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

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

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

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

c投訴管理

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

七.系統(tǒng)功能模型設(shè)計(jì)

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

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

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

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

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

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

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

描述:水量剩余小于臨界值時(shí)報(bào)告住戶

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

位置:輸出打印機(jī)(2)

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

描述:剩余電量小于臨界值時(shí)報(bào)告住戶

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

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

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

②住戶界面的設(shè)計(jì)

③管理員界面的設(shè)計(jì)

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

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

(3)住戶界面

(4)住戶修改信息

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

(6)住戶反饋

(7)住戶繳費(fèi)

(8)銀行卡登陸

(9)銀行卡登陸成功

(10)銀行卡繳費(fèi)界面

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

(12)管理員登陸

(13)管理員界面

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

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

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

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

(18)管理員接收反饋

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

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

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(“繳費(fèi)”);JMenu back = new JMenu(“反饋”);JMenuItem Item1 = new JMenuItem(“修改住戶信息”);JMenuItem Item2 = new JMenuItem(“查詢物業(yè)信息”);JMenuItem Item3 = new JMenuItem(“發(fā)送反饋”);JMenuItem Item4 = new JMenuItem(“交電費(fèi)”);JMenuItem Item5 = new JMenuItem(“交水費(fèi)”);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(“請(qǐng)輸入門(mén)牌號(hào):”,JLabel.CENTER);JTextField num = new JTextField();JButton serch = new JButton(“查詢”);JButton fangqi = new JButton(“返回”);JLabel label2 = new JLabel(“門(mén)牌號(hào):”,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(“身份證號(hào):”,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.門(mén)牌號(hào) ='” + mp + “' AND inhabitant.門(mén)牌號(hào) = inhabitant.門(mén)牌號(hào)”);

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 { /*查詢學(xué)生信息控件*/ static Serch s;JPanel jpl = new JPanel();JLabel SCH = new JLabel(”物業(yè)信息“,JLabel.CENTER);JLabel label1 = new JLabel(”請(qǐng)輸入門(mén)牌號(hào):“,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 門(mén)牌號(hào) = '“ + 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(”請(qǐng)選擇你要的服務(wù)“));

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

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

p1.add(button1);

this.add(p1);

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

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(”交水費(fèi)“,act);

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

GetBalance gb = new GetBalance(”交電費(fèi)“,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對(duì)象

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

Label.setFont(ft);

Label.setForeground(Color.black);//創(chuàng)建列數(shù)為20的JTextField對(duì)象 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(”門(mén)牌號(hào):“), new JLabel(”姓名:“), new JLabel(”性別:“), new JLabel(”年齡:“), new JLabel(”籍貫:“), new JLabel(”身份證號(hào):“), 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(”確認(rèn)“);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(門(mén)牌號(hào),姓名,性別,年齡,籍貫,身份證號(hào),電話,職 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(”門(mén)牌號(hào):“), new JLabel(”姓名:“), new JLabel(”性別:“), new JLabel(”年齡:“), new JLabel(”籍貫:“), new JLabel(”身份證號(hào):“), 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(”確認(rèn)“);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(門(mén)牌號(hào),姓名,性別,年齡,籍貫,身份證號(hào),電話,職業(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(”門(mén)牌號(hào):“,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注冊(cè)驅(qū)動(dòng)

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

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

//2預(yù)處理

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(”登錄頁(yè)面“);} 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.*;/*登陸頁(yè)面首窗口*/ class WindowBox extends Frame implements ActionListener{ Box baseBox,box1,box2;TextField tf1,tf2;Button button1;Button button2;WindowBox(String s){//構(gòu)造方法

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

box1= Box.createVerticalBox();

box1.add(new Label(”請(qǐng)輸入你的卡號(hào)“));//輸入卡號(hào)

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

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

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)聽(tīng)器*/ 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);//初始化

/*選擇各種服務(wù)*/

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

String number1,number2;//輸入的兩個(gè)卡號(hào)和密碼的變量

number1=tf1.getText();

number2=tf2.getText();

/*判斷兩次輸入的卡號(hào)和密碼是否正確*/

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

{

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

}else{

dispose();

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

}

} 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){//構(gòu)造函數(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(”選擇服務(wù)“,act);//返回選擇服務(wù)

}

} }

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){//構(gòu)造函數(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(”請(qǐng)輸入你想交電費(fèi)的數(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){//判斷余額是否為負(fù)

dispose();

ErrorWarn4 ew4 = new ErrorWarn4();

}

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

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

dispose();

ErrorWarn6 ew6 = new ErrorWarn6();

} 48

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

目 錄

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

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

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

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

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

職工基本狀況:包括職工編號(hào)、職工姓名、性別、年齡、職位等。工資級(jí)別和工資金額:包括工資等級(jí)、工資額。

企業(yè)部門(mén)及工作崗位信息:包括部門(mén)名稱、工作崗位名稱、工作崗位工資等。工資信息:包括職工編號(hào)、職工姓名、職工基本工資、職工崗位工資、職工工齡工資、公司津貼、職工實(shí)發(fā)工資等。工齡和工資金額:包括工齡及對(duì)應(yīng)工資額。

1.4課程設(shè)計(jì)要求

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

1.5預(yù)期目標(biāo)

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

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

1.6.1硬件:個(gè)人PC 1.6.2軟件:

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

第二章 可行性分析

2.1 可行性研究前提

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

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

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

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

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

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

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

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

2.3 技術(shù)可行性

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

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

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

2.4目標(biāo)方案可行性

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

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

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

3.3市場(chǎng)需求分析

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

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

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

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

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

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

c)工資標(biāo)準(zhǔn)的設(shè)定功能,集體包括職務(wù)工資、職稱工資、其他工資標(biāo)準(zhǔn)和福利的設(shè)定。

d)工資信息的瀏覽

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

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

3.5.1 需求分析總體目標(biāo)

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

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

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

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

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

3.6.2 流程圖,模塊圖如下:

流程圖

模塊圖

112

3.9.2活動(dòng)圖:

分析用例中的邏輯流程,描述用例的事件流,進(jìn)而畫(huà)出各用例對(duì)應(yīng)的活動(dòng)圖 用戶登錄活動(dòng)圖:

管理員工信息活動(dòng)圖:

3.9.3 類圖:

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

〔1〕類的識(shí)別

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

3.9.4狀態(tài)圖:

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

3.9.5 時(shí)序圖:

時(shí)序圖用來(lái)描述對(duì)象之間動(dòng)態(tài)的交互關(guān)系,著重體現(xiàn)對(duì)象間消息傳送消息的時(shí)間順序。下面分別給出各個(gè)用例的時(shí)序圖:

用戶登錄時(shí)序圖:

職工時(shí)序圖:

71819

設(shè)計(jì)一般分為三個(gè)步驟:

〔1〕概念模型轉(zhuǎn)換為關(guān)系數(shù)據(jù)模型。〔2〕關(guān)系模型的優(yōu)化。〔3〕設(shè)計(jì)用戶子模式書(shū)號(hào)。

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

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

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

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

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

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

通過(guò)引進(jìn)一個(gè)新表來(lái)表達(dá)兩個(gè)實(shí)體間多對(duì)多的聯(lián)系,新表的主碼由聯(lián)系兩端實(shí)體的主碼組合而成,同時(shí)增加相關(guān)的聯(lián)系屬性。如:部門(mén)與員工的聯(lián)系是n:m 聯(lián)系。

4.4 數(shù)據(jù)庫(kù)設(shè)計(jì)

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

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

·職工表

·用戶表

·工資表

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

工資表:

職工表:

用戶表:

第五章 詳細(xì)設(shè)計(jì)

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

5.1登錄管理

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

5.1.1界面設(shè)計(jì) 登錄界面如下:

5.1.2 代碼

部分核心代碼設(shè)計(jì): void CZHUCE::OnButton1(){

UpdateData(TRUE);if(m_username.IsEmpty()||m_password.IsEmpty()||m_password2.IsEmpty()){AfxMessageBox(“請(qǐng)將資料填寫(xiě)完整!”);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{//捕捉表的主鍵存在重復(fù)值的異常

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

fieldrow=(int)V_I2(&var);

}

catch(...)

{

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

m_username.Empty();

m_password.Empty();

m_password2.Empty();

UpdateData(FALSE);

return;}

AfxMessageBox(“注冊(cè)成功,請(qǐng)返回登錄!”);

m_pConnection->Close();

Clogin clg;

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

m_username.Empty();

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

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

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

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

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用戶管理

用戶管理模塊用于實(shí)現(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

號(hào)='%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(”請(qǐng)選擇刪除的職工!“);return;} OnInitADOConn();CString bstrSQL;bstrSQL.Format(”delete from 職工表 where 職工編號(hào)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(”請(qǐng)選擇查詢的方式!“);return;} if(m_tiaojian.IsEmpty()){AfxMessageBox(”請(qǐng)輸入查詢的職工編號(hào)!“);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(“編號(hào)不允許空值,請(qǐng)重新填寫(xiě)!”);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(”該編號(hào)的職工不存在,請(qǐng)先到職工管理添加職工信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(”請(qǐng)輸入查詢的職工編號(hào)!“);return;} OnInitADOConn();CString sql;sql.Format(”select * from 工資表 where 職工編號(hào)='%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查詢管理

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

5.5.1職工信息查詢:

5.5.2工資信息查詢:

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

if(m_Chaxun.IsEmpty()){AfxMessageBox(”請(qǐng)輸入查詢的職工編號(hào)!“);return;} OnInitADOConn();CString sql;sql.Format(”select * from 工資表 where 職工編號(hào)='%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)建連接對(duì)象實(shí)例

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

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

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

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

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

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

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(“補(bǔ)貼”));m_gzlist.SetItemText(0,6,(char*)(_bstr_t)m_pRecordset->GetCollect(“房貼”));m_gzlist.SetItemText(0,7,(char*)(_bstr_t)m_pRecordset->GetCollect(“交通補(bǔ)貼”));m_gzlist.SetItemText(0,8,(char*)(_bstr_t)m_pRecordset->GetCollect(“應(yīng)發(fā)數(shù)”));m_gzlist.SetItemText(0,9,(char*)(_bstr_t)m_pRecordset->GetCollect(“房租”));m_gzlist.SetItemText(0,10,(char*)(_bstr_t)m_pRecordset->GetCollect(“儲(chǔ)蓄”));m_gzlist.SetItemText(0,11,(char*)(_bstr_t)m_pRecordset->GetCollect(“會(huì)費(fèi)”));m_gzlist.SetItemText(0,12,(char*)(_bstr_t)m_pRecordset->GetCollect(“個(gè)人所得稅”));m_gzlist.SetItemText(0,13,(char*)(_bstr_t)m_pRecordset->GetCollect(“應(yīng)扣數(shù)”));m_gzlist.SetItemText(0,14,(char*)(_bstr_t)m_pRecordset->GetCollect(“實(shí)發(fā)數(shù)”));

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

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

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

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

6.1 測(cè)試方法

(1)測(cè)試人員:

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

(2)機(jī)器測(cè)試:

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

6.2測(cè)試內(nèi)容

1)軟件的正常運(yùn)行、關(guān)閉及退出時(shí)保存記錄的提示。

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

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

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

6)數(shù)據(jù)類型填寫(xiě)錯(cuò)誤時(shí),系統(tǒng)能夠報(bào)錯(cuò)。

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

6.3測(cè)試結(jié)果

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

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

該系統(tǒng)有報(bào)錯(cuò)功能!

查詢職工工資信息:

查詢職工信息成功!

1424344-

牟永敏

清華大學(xué)出版社

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

文檔為doc格式


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

相關(guān)范文推薦

    軟件工程課程設(shè)計(jì)報(bào)告(個(gè)人)2010

    軟件工程課程設(shè)計(jì)報(bào)告(個(gè)人)課程設(shè)計(jì)題目:研究生教務(wù)管理系統(tǒng) 專業(yè):信息與計(jì)算科學(xué)班級(jí): 報(bào)告人姓名:學(xué)號(hào)課程教師:實(shí)驗(yàn)指導(dǎo)教師: 實(shí)驗(yàn)地點(diǎn): 完成起止日期:[正文] 一、課程設(shè)計(jì)概述(目......

    《軟件工程》課程設(shè)計(jì)個(gè)人報(bào)告

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

    軟件工程課程設(shè)計(jì)個(gè)人體會(huì)

    數(shù)學(xué)與信息工程學(xué)院 項(xiàng)目名稱: 實(shí)驗(yàn)室設(shè)備管理系統(tǒng) 專業(yè)班級(jí):11計(jì)教1班學(xué)號(hào):1129020025 姓名:蔣一瑭 承擔(dān)角色:美工,問(wèn)題處理 組號(hào):08 同組組長(zhǎng):鄧?yán)?同組其他成員:王宇翔 馬富偉 江......

    軟件工程課程設(shè)計(jì)

    軟件工程課程設(shè)計(jì)實(shí)驗(yàn)心得經(jīng)過(guò)一個(gè)星期的軟件工程課程設(shè)計(jì),本人在老師的指導(dǎo)下,順利完成該課程設(shè)計(jì)。通過(guò)該課程設(shè)計(jì),收獲頗多。 一、 對(duì)實(shí)驗(yàn)原理有更深的理解 通過(guò)該課程設(shè)計(jì),......

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

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

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

    一、 需求分析 軟件需求是軟件開(kāi)發(fā)的基礎(chǔ),每個(gè)軟件開(kāi)發(fā)過(guò)程都是以獲取需求為目的的活動(dòng):理解客戶的基本需求和目標(biāo)。準(zhǔn)確獲取用戶的需求是項(xiàng)目開(kāi)發(fā)成功的開(kāi)端。然而,軟件工程所......

    軟件工程課程設(shè)計(jì)封面

    淮南師范學(xué)院 計(jì)算機(jī)與信息工程系 《軟件工程》課程設(shè)計(jì) 工資管理項(xiàng)目軟件工程報(bào)告 專業(yè)班級(jí): 計(jì)算機(jī)科學(xué)與技術(shù)08(1)班 項(xiàng)目組號(hào): 組長(zhǎng):程亮 組員:吳騰、徐羅敬 指導(dǎo)老師:孫淮寧(教......

    《軟件工程》課程設(shè)計(jì)要求

    《軟件工程》課程設(shè)計(jì)要求 一、課程設(shè)計(jì)目的 《軟件工程》是一門(mén)實(shí)踐性極強(qiáng)的課程。課程設(shè)計(jì)通過(guò)一個(gè)實(shí)際的項(xiàng)目,培養(yǎng)學(xué)生分析問(wèn)題和解決實(shí)際問(wèn)題的能力,培養(yǎng)學(xué)生綜合應(yīng)用軟件......

主站蜘蛛池模板: 日本老熟妇乱| 国产欧美日韩a片免费软件| 欧美牲交a欧美牲交aⅴ| 天天狠天天添日日拍捆绑调教| 无码不卡av东京热毛片| 亚洲欧洲日产国产 最新| 婷婷亚洲久悠悠色悠在线播放| 不卡无码人妻一区三区音频| 99在线精品国自产拍中文字幕| 无码乱人伦一区二区亚洲| 丰满少妇弄高潮了www| 日本亚欧热亚洲乱色视频| 久久久久人妻精品区一三寸| 中文字幕人妻偷伦在线视频| 亚洲性视频免费视频网站| av免费播放一区二区三区| 入侵人妻反抗中文字幕| 色婷婷六月亚洲婷婷丁香| 日韩 无码 偷拍 中文字幕| 色欲av无码一区二区人妻| 国产精品福利2020久久| 国内精品伊人久久久久777| 少妇愉情理伦片丰满丰满| 精品无码成人网站久久久久久| 亚洲欧美综合一区二区三区| 天天鲁一鲁摸一摸爽一爽| 欧美黑人性暴力猛交喷水黑人巨大| 亚洲国产精品国自产拍电影| 亚洲一区二区三区无码影院| 国产激情久久久久影院老熟女免费| 亚洲中文字幕琪琪在线| 国产免费无遮挡吸奶头视频| 国产色综合久久无码有码| 国产婷婷一区二区三区| 国产特级毛片aaaaaa高潮流水| 久久久精品国产sm最大网站| 26uuu在线亚洲欧美| 亚洲人成黄网站69影院| 免费无码一区无码东京热| 色偷偷88888欧美精品久久久| 国产一区二区三区内射高清|