版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、藥品信息管理系統(tǒng)1 系統(tǒng)分析 1.1需求分析:對(duì)藥品信息管理主要需求就是對(duì)藥品信息進(jìn)行基本的管理,用戶需要及時(shí)準(zhǔn)確地掌握該診所內(nèi)現(xiàn)有的藥品的基本信息(主要包括數(shù)量,單價(jià),是否過期等)。同時(shí),用戶要求操作界面友好,操作簡(jiǎn)便,對(duì)數(shù)據(jù)庫的操作安全可靠,藥品從數(shù)據(jù)庫中修改了,但還沒結(jié)算時(shí)斷電,要求數(shù)據(jù)庫應(yīng)該能恢復(fù)。1.2功能分析: 系統(tǒng)需要實(shí)現(xiàn)的主要功能包括查詢,刪除,增加,修改四部分,各功能具體如下表所示: 表1-1 系統(tǒng)的主要功能分析 2. 系統(tǒng)設(shè)計(jì) 2.1 繪制用例圖設(shè)計(jì)系統(tǒng)功能藥品信息管理系統(tǒng)一共包含3鐘用戶角色,分別是醫(yī)生,售藥員,和管理員,權(quán)限依次提高,醫(yī)生權(quán)限是可以查詢庫存藥品信息,提供
2、基本的用戶管理功能(更改密碼,更換用戶),例圖如下 醫(yī)生用例圖售藥員的權(quán)限在醫(yī)生的基礎(chǔ)上,還具有藥品管理的藥品銷售功能,用例圖如下: 售藥員用例圖管理員具有所有權(quán)限,包括查詢藥品,增加藥品條目,出售藥品,清理藥庫(包括清除數(shù)量為0的藥品,清除過期藥品等)及所有的用戶管理功能,用例圖如下: 管理員用例圖2.2 繪制系統(tǒng)流程圖本系統(tǒng)需要對(duì)用戶身份進(jìn)行驗(yàn)證,驗(yàn)證通過后再判斷用戶是屬于醫(yī)生,售藥員或者是管理員中的哪一個(gè)角色,根據(jù)角色判斷用戶可以使用系統(tǒng)中的相應(yīng)操作功能這里以管理員的身份為例 ,其流程圖如下: 系統(tǒng)流程圖3. 數(shù)據(jù)庫分析與設(shè)計(jì)3.1 數(shù)據(jù)庫概念設(shè)計(jì)本系統(tǒng)一共設(shè)計(jì)規(guī)劃出三個(gè)實(shí)體,分別是用戶
3、信息實(shí)體,藥品信息實(shí)體,藥品銷售實(shí)體。用戶信息實(shí)體用于記錄系統(tǒng)登錄用戶的信息,包括賬號(hào),密碼,權(quán)限等相關(guān)信息其E-R圖如下: 圖3-1 用戶信息實(shí)體藥品信息實(shí)體是數(shù)據(jù)庫的核心,記錄了所存儲(chǔ)的藥品的基本信息,其E-R圖如下:藥品信息實(shí)體E-R圖藥品銷售實(shí)體則記錄了藥品銷售的相關(guān)信息,主要指藥品的出售數(shù)量,出售總價(jià)等,其E-R圖如下: 藥品銷售實(shí)體E-R圖3.2 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)根據(jù)設(shè)計(jì)好的各實(shí)體E-R圖創(chuàng)建數(shù)據(jù)庫的邏輯結(jié)構(gòu),數(shù)據(jù)庫各表的結(jié)構(gòu)如下。共3張表,分別是tb_medicine 和 tb_user,tb_saleTable. 表3-1 tb_medicine(藥品基本信息表) 表3-2
4、tb_user(用戶信息表) 表3-3 tb_saleTable(藥品銷售表)3.3 數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計(jì)3.4 系統(tǒng)類庫設(shè)計(jì)藥品信息管理系統(tǒng)中的類庫主要設(shè)計(jì)如下:藥品管理類 CManageMecdic:用于對(duì)藥庫進(jìn)行管理,主要包括藥品入庫,藥品的出售,藥庫的清理,以及為實(shí)現(xiàn)這些函數(shù)而加的成員函數(shù)。藥品查詢類 CMedicSearch:其成員函數(shù)主要包括一般查詢,查詢庫中數(shù)量為0的藥品,查詢過期藥品等。用戶管理類CUser:主要設(shè)立了為完成以下功能的成員函數(shù),如新增用戶,刪除用戶,查詢用戶信息,修改用戶密碼等。藥品類CMedic:相當(dāng)于一結(jié)構(gòu)體,只是為了給系統(tǒng)提供一個(gè)數(shù)據(jù)類型,以對(duì)藥品進(jìn)行必要的
5、管理,該類沒有成員函數(shù),該類一般作為CManageMedic和CMedicSearch類的一個(gè)成員變量。出售單類CSale:主要是給系統(tǒng)提供一個(gè)數(shù)據(jù)類型,以對(duì)藥品出售進(jìn)行有效的管理,該類也沒有成員函數(shù),該類作為CManageMedic類的一個(gè)成員變量。CMedicSet,CUserSer,CSaleSet類:用于與數(shù)據(jù)庫中的表相連,它們從CRecordSer繼承而來。一些對(duì)話框類:該系統(tǒng)許多地方都用到了對(duì)話框,這類對(duì)話框主要有CLlogInDlg,CChangPasswordDlg,CUserChangDlg,CStoreDlg,CCleanUpDlg,CSaleDlg等系統(tǒng)本身提供的框架類:
6、如CMainFrm,CMedicAdminDoc,CMedicAdminApp,CMedicAdmicView等。3.5 公用模塊設(shè)計(jì)為了節(jié)省系統(tǒng)資源,實(shí)現(xiàn)代碼重用,提高程序運(yùn)行速度,可以將一些公用的數(shù)據(jù)信息放到模塊中。本系統(tǒng)自定義了CManageMdedic,CMedicSearch,CSale,CUser,和CMedic類模塊,而且從CRecordSet繼承了CMedicSet,CUserSet,CSaleSer類,連接數(shù)據(jù)庫中對(duì)應(yīng)的表。a. 藥品類 CMedic該類主要用于記錄藥品信息表中的各字段,主要包含一些成員變量,無成員函數(shù)。class CMedic public:CMedic()
7、;virtual CMedic();public:CStringm_MedicineID;CStringm_MedicineName;CStringm_MedicineClassification;CTimem_ProduceDate;CStringm_Produceplace;intm_MedicineNumber;CStringm_Description;floatm_UnitPrice;intm_QeulityAssurancePeriod;intm_LowestNumber;intm_HighestNumber;CStringm_ProduceCompany;b. 出售單類CSale出
8、售單類記錄saleTable數(shù)據(jù)表中的字段值,主要包含一些成員變量,無成員函數(shù)class CSale public:CSale();virtual CSale();public:CStringm_MedicineID;CStringm_MedicineName;intm_MedicineNumber;floatm_MedicinePrice;c藥品管理類CManageMedic該類主要實(shí)現(xiàn)藥品的操作功能,包括藥品入庫,藥品出售,和藥品處理等,其成員變量和成員函數(shù)的定義如下:class CManageMedic public:void DeleteOverdueMedic();void Dele
9、teAllZeroNumber();CTime GetExpireTime();float CheckOut();BOOL Recover();BOOL DeleteFromSaleTable();BOOL ModifyFromSaleTable();BOOL AddToSaleTable();void SetSaleSet(CSaleSet* theSaleSet);void SetSale(CSale* theSale);void Import();void SetMedicSet(CMedicSet* theMedicSet);void SetMedic(CMedic* theMedic
10、);CManageMedic();virtual CManageMedic();protected:CMedic* m_theMedic;CMedicSet* m_theMedicSet;CSale* m_theSale;CSaleSet* m_theSaleSet;d藥品查詢類CMedicSearch該類實(shí)現(xiàn)藥品的各種查詢功能,其成員變量和成員函數(shù)的定義如下。class CMedicSearch public:void SearchOverdueMedic();void SearchZeroNumber();void SearchAll();void Search(CString str,i
11、nt flag);void SetMedicSet(CMedicSet* theMedicSet);void SetListCtrl(CListCtrl* theListCtrl);CMedicSearch();virtual CMedicSearch();protected:CMedicSet* m_theMedicSet;CListCtrl* m_theListCtrl;e用戶管理類CUser該類實(shí)現(xiàn)用戶的管理功能,包括用戶登錄,注冊(cè)用戶,查詢用戶,更換用戶,修改密碼,其成員變量和才成員函數(shù)的定義如下:class CUser public:void ModifyPassword(CUser
12、Set* theSet);CString GetPassword();CString GetAccount();void SetPassword(CString password);CString GetType();void SeekUserInfo(int typeRadio,CString str,CUserSet* theSet);void SetAccount(CString account);void DeleteUser(CUser* user,CUserSet* userSet);BOOL AddNewUser(CUser* newUser,CUserSet* theSet);
13、void SetAllMember(CString account,CString password,CString type,CString name);BOOL LogIn(CUserSet*);CUser();virtual CUser();protected:CString m_userAccount;CString m_userPassword;CString m_userName;CString m_userType;f記錄集類CMedicSet,CUserSet,CSaleSet這3個(gè)類是以CRecordSet類為基類創(chuàng)建的,分別連接數(shù)據(jù)庫中的medicine表,user表,sa
14、leTable表,通過Visual C+6.0提供的類創(chuàng)建向?qū)?duì)話框,可以實(shí)現(xiàn)這3個(gè)類的創(chuàng)建。以CMedicSet類為例,創(chuàng)建過程如下:在Visual C+6.0中,執(zhí)行“Insert”“New Class“菜單命令,彈出”New Class“對(duì)話框,在其中設(shè)置創(chuàng)建的類CMedicSet和基類CRecordSet 如下圖。同理CUserSet和CSaleSet創(chuàng)建過程也是這樣。3.6 主界面設(shè)計(jì)系統(tǒng)采用標(biāo)準(zhǔn)的單文檔程序界面,并采用窗口分隔技術(shù)將客戶窗口試圖分隔為左右兩部分,分別用于顯示用戶信息和藥品信息。藥品信息視圖類 CMedicListView以CListView類為基類,創(chuàng)建新的列表視圖
15、類CMedicListView,通過列表的形式顯示藥品信息。在CMedicListView類的OnCreate函數(shù)中,創(chuàng)建列表項(xiàng)和表頭,主要代碼如下。int CMedicListView:OnCreate(LPCREATESTRUCT lpCreateStruct) if (CListView:OnCreate(lpCreateStruct) = -1)return -1;/ TODO: Add your specialized creation code heretheListCtrl=&GetListCtrl();ModifyStyle(0,LVS_REPORT);ASSERT(GetSt
16、yle() & LVS_REPORT);CString medicField9=藥品代碼,藥品名稱,藥品類別,庫存數(shù)量,出產(chǎn)公司,產(chǎn)地,出產(chǎn)時(shí)間,保質(zhì)期(月),單價(jià)(元);for(int i=0;iInsertColumn(i,medicFieldi,LVCFMT_LEFT,70);theListCtrl-InsertColumn(8,medicField8,LVCFMT_LEFT,58);return 0;用戶信息視圖類CUserTreeView以CTreeView類為基類,創(chuàng)建新的樹形視圖類CUserTreeview,以樹的形式顯示用戶類別及各類別下注冊(cè)的用戶。在CUserTreeView
17、類的PreCreateWindows函數(shù)中,設(shè)置樹形控件的屬性,主要代碼如下:BOOL CUserTreeView:PreCreateWindow(CREATESTRUCT& cs) / TODO: Add your specialized code here and/or call the base classcs.style |= TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT;return CTreeView:PreCreateWindow(cs);在CUserTreeView類的OnInitialUpdate函數(shù)中,設(shè)置醫(yī)生,售藥員,和管
18、理員三個(gè)樹的根目錄,并讀取數(shù)據(jù)庫中用戶表中的數(shù)據(jù),將相應(yīng)類別的用戶代碼添加的樹到子目錄中。void CUserTreeView:OnInitialUpdate() CTreeView:OnInitialUpdate();/ TODO: Add your specialized code here and/or call the base classm_theTreeCtrl=&GetTreeCtrl();m_theImageList.Create(IDB_TREE_BITMAP,16,1,RGB(0,255,0);m_theTreeCtrl-SetImageList(&m_theImageLi
19、st,TVSIL_NORMAL);CString userTreeHeader3=醫(yī)生,售藥員,管理員;HTREEITEM userItem3;for(int i=0;iInsertItem(userTreeHeaderi,0,0,TVI_ROOT);m_theTreeCtrl-SetItemData(userItemi,(DWORD)i);CMedicAdminDoc* pDoc=(CMedicAdminDoc*)GetDocument();CUserSet* userSet=&pDoc-theUserSet;if(userSet-IsOpen()userSet-Close();userSe
20、t-Open();CLogInDlg logInDlg;logInDlg.DoModal();CUser* theUser=&pDoc-theUser;HTREEITEM thePoint;for(i=0;im_strFilter=UserClassification=+userTreeHeaderi+;userSet-Requery();for(int j=0;j+)if(userSet-IsEOF()break;if(userSet-m_UserAccount=theUser-GetAccount()HTREEITEM userSpecifics=m_theTreeCtrl-InsertI
21、tem(userSet-m_UserAccount+(當(dāng)前用戶),2,2,userItemi);m_theTreeCtrl-SetItemData(userSpecifics,(DWORD)j);thePoint=userSpecifics;elseHTREEITEM userSpecifics=m_theTreeCtrl-InsertItem(userSet-m_UserAccount,3,3,userItemi);m_theTreeCtrl-SetItemData(userSpecifics,(DWORD)j);userSet-MoveNext();m_theTreeCtrl-Select
22、(thePoint,TVGN_CARET);實(shí)現(xiàn)視圖窗口的分隔窗口分隔采用靜態(tài)分隔的方式。在主框架類CMainFrame的OnCreateClient函數(shù)中,通過CSplitterWnd類將客戶窗口分隔為左右兩部分,并分別對(duì)應(yīng)前面創(chuàng)建的兩個(gè)視圖類,主要代碼如下:BOOL CMainFrame:OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) / TODO: Add your specialized code here and/or call the base classm_wndSplitter.CreateStatic
23、(this,1,2);/分割窗口為兩列m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CUserTreeView),CSize(130,600),pContext);m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CMedicListView),CSize(700,600),pContext);return TRUE;/return CFrameWnd:OnCreateClient(lpcs, pContext);其中,m_wndSplitter在頭文件中定義的CSplitterWnd類對(duì)象如下Protected:CSplitterWnd m_wndSplitter;3.7 登錄模塊設(shè)計(jì)當(dāng)程序啟動(dòng)時(shí),在主界面窗口出現(xiàn)之前,首先彈出登錄對(duì)口框,如下圖,用戶需要輸入賬號(hào),密碼等信息,只有通過驗(yàn)證的用戶才能進(jìn)入系統(tǒng),否則系統(tǒng)自動(dòng)退出。登錄對(duì)口框
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度牛奶質(zhì)量安全追溯體系建設(shè)合同4篇
- 2025年度農(nóng)產(chǎn)品質(zhì)量追溯體系建設(shè)合同3篇
- 2025版新能源項(xiàng)目民工權(quán)益保障合同4篇
- 港口小學(xué)2025版炊事員勞動(dòng)合同續(xù)簽及更新協(xié)議3篇
- 2025年度農(nóng)用車租賃與農(nóng)業(yè)技術(shù)研發(fā)合作合同4篇
- 2025年度智能門窗安裝與售后服務(wù)合同4篇
- 2025年度擴(kuò)大勞務(wù)合同范本:核能產(chǎn)業(yè)勞務(wù)輸出協(xié)議3篇
- 2025年度心理咨詢與治療個(gè)人勞務(wù)合同書2篇
- 南昌市二零二五年度租賃合同范本:公寓租賃規(guī)范版2篇
- 2025版企業(yè)年會(huì)場(chǎng)地租賃合同范本8篇
- 湖北省十堰市城區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期期末質(zhì)量檢測(cè)綜合物理試題(含答案)
- 2024企業(yè)答謝晚宴會(huì)務(wù)合同3篇
- 風(fēng)電工程需要編寫的專項(xiàng)施工方案及危大工程目錄
- 商業(yè)計(jì)劃書(BP)財(cái)務(wù)計(jì)劃風(fēng)險(xiǎn)控制資本退出與附錄的撰寫秘籍
- 全國(guó)職工拔河比賽執(zhí)行方案
- 冶金廠、軋鋼廠工藝流程圖
- 七年級(jí)下冊(cè)《Reading 1 A brave young man》優(yōu)質(zhì)課教案牛津譯林版-七年級(jí)英語教案
- 中國(guó)人婚戀狀況調(diào)查報(bào)告公布
- 《木蘭詩》第1第2課時(shí)示范公開課教學(xué)PPT課件【統(tǒng)編人教版七年級(jí)語文下冊(cè)】
- GB/T 11144-2007潤(rùn)滑液極壓性能測(cè)定法梯姆肯法
- 國(guó)家開發(fā)銀行
評(píng)論
0/150
提交評(píng)論