診所信息管理系統C課程設計報告_第1頁
診所信息管理系統C課程設計報告_第2頁
診所信息管理系統C課程設計報告_第3頁
診所信息管理系統C課程設計報告_第4頁
已閱讀5頁,還剩49頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、湖南第一師范學院信息科學與工程學院課程設計報告所屬 專 業:計算機科學與技術_課程 名 稱: _ C+課程設計 _課程設計名稱: _ _診所信息管理系統 _學號:姓名: _王曉萍 _指 導教 師: _楊恒伏、伍智平 _2015 年12 月湖南第一師范學院課程設計任務書2015 -2016 學年第1 學期院(部)信息科學與工程學院專業計算機科學與技術班級14計科 1班課程名稱:C+課程設計 _設計題目:診所信息管理系統 _完成期限:自2015 年12月 28日至 2016年 1 月8日共 2周目的及任務起止日期選題,系統背景調查與文獻資料收集,實驗平臺構建 20系統需求分析、系統概要設計、類的設

2、計進度安排 2016系統詳細設計與編碼實現.1.4 2016系統測試與完善、文檔整理與課程設計報告撰寫.1.82(美)梅因等著 , 金名等譯 . 數據結構與面向對象程序設計( C+ 版)(第 4 版) . 清華大學出版社,2012.5主要參考資料3 梅險 , 曲蔚 , 孫建業編 . C/C+ 程序設計案例教程實驗與實訓指導. 高等教育出版社 , 2014.3指導教師(簽字) :教研室主任(簽字) :年月日年月日目錄課程設計任務書1摘要2第一章緒論411 課程設計的目的412 課程設計的背景和意義4121 課程設計的背景4122 課程設計的意義413 課程設計環境4第二章需求分析521 問題描述

3、522 功能要求523 問題的解決方案5第三章系統設計631 數據設計6311 類設計6312 類之間的關系6313 函數設計632 結構設計7321 系統流程圖7322 界面設計7第四章系統實現841 類實現842 函數實現943 主函數實現25第五章系統測試2751 模塊測試2752 課程設計過程中遇到的問題33總結34致謝35參考文獻35附錄36第一章緒論1 1 課程設計的目的(1)要求學生能夠熟練掌握C+語言的基本知識和技能。( 2)基本掌握面向對象程序設計的基本思路和方法。( 3)能夠利用所學的基本知識和技能,解決簡單的面向對象程序設計問題。1 2 課程設計的背景和意義121 課程設

4、計的背景1. 理論研究基礎( 1)分析系統流程,并會畫出流程圖;( 2)熟練掌握 C+ 程序設計語言。2. 技術層面的支持C+ 面向對象程序設計中的類的聲明與對象定義的熟練使用;以及繼承、派生的熟練使用。122 課程設計的意義在經過了一個學期對C+ 程序設計的學習,課程設計可以很好的檢驗所學知識,對自身來說, 是個查漏補缺的好時機,可以將所學知識進行復習與鞏固,將前面所有知識綜合起來,很好的聯系在一起,有機結合,形成知識網絡體系,將知識融會貫通,可以讓自己進一步熟練掌握程序設計語言,并能熟練運用。1 3 課程設計環境軟件: WindosXP 系統, Microsoft Visual C+ 6.

5、0編譯器。硬件:聯想雙核處理器,二G 內存,二G 獨立顯卡, 80G 硬盤。第二章需求分析2 1 問題描述完成小型診所的簡單信息管理程序,掌握類的設計以及繼承和派生的應用。2 2 功能要求設計人類( Person 類)和醫生類( Doctor 類),在此基礎上,通過增加患者和賬單,使它們公用于表示一家診所的信息管理。(1)在一條醫生記錄中,包括醫生的專業說明(specialty),如內科醫生(surgeon )、兒科醫生( pediatrician) 、產科醫生(obstetrician)及全科醫生(general practitioner)。(2) Doctor記錄還含有診費(office_

6、vist_fee)。(3)在一條患者記錄中,包括該患者產生的藥費(drug_fee),患者的診費(即醫生的診費)。( 4)在一條賬單記錄中,包括一條患者對象、該患者對應得主治醫生、該患者產生的診費和藥費。( 5)應用程序能夠顯示出診所中每個患者的信息和對應主治醫生的信息。( 6)能夠統計出所有患者的總費用。2 3 問題的解決方案根據系統功能要求,可以將問題解決分為以下步驟:( 1)應用系統分析,建立該系統的功能模塊框圖以及界面的組織和設計;( 2)分析系統中的各個實體及它們之間的關系;( 3)根據問題描述,設計系統的類層次;( 4)完成類層次中各個類的描述;( 5)完成類中各個成員函數的定義;

7、( 6)完成系統的應用模塊;( 7)功能調試;( 8)完成系統總結報告。第三章系統設計3 1 數據設計311 類設計分別定義了person 人類、 doctor 醫生類、 HuanZhe 患者類以及帳單類;在person 人類中,包含了數據成員姓名(name)、性別( sex)、年齡( age)以及診費(office_vist_fee );在 doctor 醫生類中,增加了數據成員醫生的專業說明(drug_fee),包含了成員函數input() 增加醫生信息,zhangdanKind() 按姓名查詢醫生信息; 在 HuanZhe 患者類中,增加了數據成員患者的藥費(drug_fee),包含了成

8、員函數input()增加患者信息,zhangdanKind() 按姓名查詢患者信息;在zhangdan 帳單類中,包含了數據成員姓名( name)、診費( office_vist_fee )、藥費( drug_fee)、總費用( totl_fee ),包含了成員函數totl_pay() 用于把總費用從"D:bb.txt"文件移到"D:cc.txt", pay() 統計該系統中所有患者的總費用,addzhangdan()增加賬單信息,zhangdanKind() 按姓名查詢賬單信息。312 類之間的關系在該系統中醫生與患者都有數據成員姓名( name)、性

9、別( sex)、年齡( age)以及診費( office_vist_fee);所以把這些數據成員定義在基類person 人類中,doctor醫生類與HuanZhe患者類公有繼承于基類person人類。313 函數設計在doctor醫生類中,包含了成員函數input() 增加醫生信息,zhangdanKind() 按姓名查詢醫生信息;在 HuanZhe 患者類中,包含了成員函數input() 增加患者信息,zhangdanKind() 按姓名查詢患者信息;在zhangdan 帳單類中,包含了成員函數totl_pay() 用于把總費用從"D:bb.txt"文件移到"D

10、:cc.txt",pay()統計該系統中所有患者的總費用,addzhangdan()增加賬單信息,zhangdanKind() 按姓名查詢賬單信息。在該系統中,還包含了普通函數addinfor() 增加信息界面實現,select()查詢信息界面實現,zhangdanxinxi()賬單信息界面實現, add_zhuce()實現注冊用戶, welcome() 驗證用戶登陸 ,登陸成功顯示歡迎信息,Please()診所信息管理系統主界面的實現。3 2 結構設計321 系統流程圖診所信息管理系統注登冊錄添加查 詢賬 單退 出信息信息信息系統添 加添加查 詢查 詢添 加查 詢醫 生患者醫 生患

11、 者賬 單賬 單信息信息信息信息信息信息圖3-2-1系統流程圖322界面設計addinfor() 增加信息界面包括了1. 增加醫生信息2. 增加患者信息0. 退出;select()查詢信息界面包括了1. 查詢醫生信息2. 查詢患者信息0. 退出;zhangdanxinxi()賬單信息界面包括了1. 增加賬單信息2. 查詢賬單信息0. 退出;Please()診所信息管理系統主界面包括了1.查詢信息2.賬單信息3.增加信息4.統計總費用0.退出系統;main() 主函數界面包括了1.用戶登錄2.用戶注冊0.退出系統。在這些界面的實現中用switch() 語句做選擇。第四章系統實現4 1 類實現cl

12、ass person/ 人類protected:string name;char sex;int age;double office_vist_fee;public:person() person() ;class doctor : public person/醫生類private:char speicialty15;public:doctor() void input() ; /增加醫生信息void zhangdanKind(); / 按姓名查詢醫生信息doctor() ;class HuanZhe : public person/患者類private:double drug_fee;pub

13、lic:HuanZhe()void input(); /增加患者信息void zhangdanKind() ;/ 按姓名查詢患者信息HuanZhe();class zhangdan/帳單類string name;double drug_fee;double office_vist_fee;double totl_fee;public:zhangdan() void totl_pay(); /用于把總費用從"D:bb.txt"文件移到"D:cc.txt"void pay();/實現統計所有患者總費用void zhangdanKind(); / 按姓名查詢賬

14、單信息zhangdan() ;4 2 函數實現class doctor : public person/醫生類private:char speicialty15;public:doctor() void input()/增加醫生信息char t;cout<<"*主治醫生基本信息*"<<endl;fstream outfile("D:aa.txt",ios:out|ios:app); / 以寫方式打開文件 if(! outfile)cout<<" 打開文件失敗!"<<endl;elseco

15、ut<<" 姓名 :"cin>>name; outfile<<name<<""cout<<" 性別 :" cin>>sex;if(sex='m'|sex='M')outfile<<" 男 "<<"else if(sex='f'|sex='F')"outfile<<"女 "<<"&quo

16、t;elsecout<<" 請重新輸入性別:"cin>>sex;if(sex='m'|sex='M')outfile<<" 男"<<""else if(sex='f'|sex='F')outfile<<" 女"<<""cout<<" 年齡 :"cin>>age;outfile<<age<<&qu

17、ot;"cout<<" 診費 :"cin>>office_vist_fee; outfile<<office_vist_fee<<""cout<<" 專業說明 :"cin>>speicialty; outfile<<speicialty<<endl;outfile.close();cout<<" 是否繼續添加醫生信息Y/N.:"<<endl;cin>>t;if(t='

18、y')input();elsereturn;void zhangdanKind()/ 按姓名查詢醫生信息char t;fstream infile2("D:aa.txt",ios:in);/以讀方式打開文件if(! infile2)cout<<" 打開文件失敗!"<<endl;return ;int line=0;string arr100100; /定義一個 string 類型的二維數組 ,用來保存從文本內讀取的信息 memset(arr,0,sizeof(arr); /將數組清空while(!infile2.eof()

19、/文件不為空的條件設置infile2>>arrline0>>arrline1>>arrline2>>arrline3>>arrline4;line+;string na;cout<<" 請輸入要查詢的醫生姓名:"cin>>na;for(int i=0;i<line;i+)if(arri0=na)cout<<" 醫 生 姓 名 :"<<arri0<<""<<" 性 別 :"<

20、<arri1<<""<<" 年齡 :"<<arri2<<""<<" 診費 :"<<arri3<<"元 "<<""<<" 專業 :"<<arri4<<endl;return;cout<<" 記錄中沒有此醫生信息!"<<endl;cout<<" 是否繼續查詢Y

21、/N.:"<<endl;cin>>t;if(t='y')zhangdanKind();elsereturn;doctor() ;class HuanZhe : public person/患者類private:double drug_fee;public:HuanZhe()void input()/增加患者信息char t;cout<<"*患者基本信息*"<<endl;fstream outfile("D:ee.txt",ios:out|ios:app); / 以寫方式打開文件 i

22、f(! outfile)cout<<" 打開文件失敗!"<<endl;elsecout<<" 姓名 :"cin>>name; outfile<<name<<""cout<<" 性別 :" cin>>sex;if(sex='m'|sex='M')outfile<<" 男 "<<"else if(sex='f'|sex=&#

23、39;F')"outfile<<"女 "<<""elsecout<<" 請重新輸入性別:"cin>>sex;if(sex='m'|sex='M')outfile<<" 男"<<""else if(sex='f'|sex='F')outfile<<" 女"<<""cout<&l

24、t;" 年齡 :"cin>>age;outfile<<age<<""cout<<" 診費 :"cin>>office_vist_fee; outfile<<office_vist_fee<<""cout<<" 藥費 :"cin>>drug_fee; outfile<<drug_fee<<endl;outfile.close();cout<<"

25、是否繼續添加患者信息Y/N.:"<<endl;cin>>t;if(t='y')input();elsereturn;void zhangdanKind()/ 按姓名查詢患者信息char t;fstream infile2("D:ee.txt",ios:in);/以讀方式打開文件if(! infile2)cout<<" 打開文件失敗!"<<endl;return ;string arr100100;/ 定義一個stringint line=0;memset(arr,0,sizeof(

26、arr);/ 將數組清空類型的二維數組,用來保存從文本內讀取的信息while(!infile2.eof()/文件不為空的條件設置infile2>>arrline0>>arrline1>>arrline2>>arrline3>>arrline4; /文件流讀取數據line+;string na;cout<<" 請輸入要查詢的患者姓名:"cin>>na;for(int i=0;i<line;i+)if(arri0=na)cout<<" 患 者 姓 名 :"&

27、lt;<arri0<<""<<" 性 別 :"<<arri1<<""<<" 年齡 :"<<arri2<<""<<" 診費 :"<<arri3<<"元 "<<""<<" 藥費 :"<<arri4<<"元 "<<end

28、l;return;cout<<" 記錄中沒有此患者的信息!"<<endl;cout<<" 是否繼續查詢Y/N.:"<<endl;cin>>t;if(t='y')zhangdanKind();elsereturn;HuanZhe();class zhangdan/帳單類string name;double drug_fee;double office_vist_fee;double totl_fee;public:zhangdan() void totl_pay()/用于把總費用從

29、"D:bb.txt"文件移到"D:cc.txt"string a;fstream infile1("D:bb.txt",ios:in); /以讀方式打開文件if(! infile1)cout<<" 打開文件失敗!"<<endl;return ;string arr100100; / 定義一個 string 類型的二維數組 ,用來保存從文本內讀取的信息 int line=0;memset(arr,0,sizeof(arr);/ 將數組清空while(!infile1.eof()/文件不為空的條

30、件設置infile1>>arrline0>>arrline1>>arrline2>>arrline3>>arrline4;/ 文件流讀取數據line+;for(int i=0;i<line;i+)fstream outfile4("D:cc.txt",ios:out|ios:app); / 以寫方式打開文件 if(! outfile4)cout<<" 打開文件失敗!"<<endl;elsea=arri4;outfile4<<a<<endl;o

31、utfile4.close();infile1.close();void pay()/實現統計所有患者總費用double a;double z=0.0;fstream infile4("D:cc.txt",ios:in); /以讀方式打開文件if(! infile4)cout<<" 打開文件失敗!"<<endl;return ;double s100;int line=0;while(!infile4.eof()/文件不為空的條件設置infile4>>sline;/ 文件流讀取數據line+;for(int i=0;i

32、<line-1;i+)a=si;z=z+a;cout<<" 所有患者的總費用為:"<<z<<" 元"<<endl;infile4.close();void addzhangdan() / 增加賬單信息fstream outfile3("D:bb.txt",ios:out|ios:app); /以寫方式打開文件 if(! outfile3)cout<<" 打開文件失敗!"<<endl;elsecout<<" 患者姓名

33、:"cin>>name;outfile3<<name<<""cout<<" 主治醫生 :"cin>>name;outfile3<<name<<""cout<<" 診費 :"cin>>office_vist_fee; outfile3<<office_vist_fee<<""cout<<" 藥費 :"cin>>dr

34、ug_fee; outfile3<<drug_fee<<""cout<<" 總費用 :"cin>>totl_fee; outfile3<<totl_fee<<endl;outfile3.close();char t;cout<<" 是否繼續添加賬單信息Y/N.:"<<endl;cin>>t;if(t='y')addzhangdan();elsereturn;void zhangdanKind()/按姓名查詢賬單信

35、息char t;fstream infile1("D:bb.txt",ios:in);/以讀方式打開文件if(! infile1)cout<<" 打開文件失敗!"<<endl;return ;string arr100100; /定義一個 string 類型的二維數組 ,用來保存從文本內讀取的信息 int line=0;memset(arr,0,sizeof(arr);/ 將數組清空while(!infile1.eof()/文件不為空的條件設置infile1>>arrline0>>arrline1>&

36、gt;arrline2>>arrline3>>arrline4;/ 文件流讀取數據line+;string na;cout<<" 請輸入要查詢的患者姓名:"cin>>na;for(int i=0;i<line;i+)if(arri0=na)string xm;xm=arri1;cout <<" 患者姓名:"<<arri0<<""<<" 醫生姓名:"<<arri1<<""&

37、lt;<" 診費 :"<<arri2<<"元 "<<""<<" 藥費 :"<<arri3<<"元 "<<""<<" 總費用:"<<arri4<<"元"<<endl;fstream infile2("D:aa.txt",ios:in);/以讀方式打開文件if(! infile2)co

38、ut<<" 打開文件失敗!"<<endl;return ;int l=0;memset(arr,0,sizeof(arr);/將數組清空while(!infile2.eof()/文件不為空的條件設置infile2>>arrl0>>arrl1>>arrl2>>arrl3>>arrl4;/ 文件流讀取數據l+;for(int j=0;j<l;j+)if(arrj0=xm)cout <<" 醫生姓名 :"<<arrj0<<"&

39、quot;<<" 性別 :"<<arrj1<<"" <<" 年齡 :"<<arrj2<<""<<" 診費 :"<<arrj3<<""<<" 專業 :"<<arrj4<<endl;fstream infile3("D:ee.txt",ios:in);/以讀方式打開文件if(! infile3)co

40、ut<<" 打開文件失敗!"<<endl;return ;int lin=0;memset(arr,0,sizeof(arr);/將數組清空while(!infile3.eof()/文件不為空的條件設置infile3>>arrlin0>>arrlin1>>arrlin2>>arrlin3>>arrlin4;/文件流讀取數據lin+;for(int z=0;z<lin-1;z+)if(arri0=na)cout <<" 患者姓名 :"<<arr

41、z0 <<""<<" 性別 :"<<arrz1<<"" <<" 年齡 :"<<arrz2<<""<<" 診費 :"<<arrz3<<""<<"藥費 :"<<arrz4<<endl;return;cout<<" 記錄中沒有此患者的帳單信息!"<&l

42、t;endl;cout<<" 是否繼續查詢Y/N.:"<<endl;cin>>t;if(t='y')zhangdanKind();elsereturn;zhangdan() ;void add_zhuce()/實現注冊用戶string name,code,code1;fstream outfile5("D:dd.txt",ios:out|ios:app); / 以寫方式打開文件 if(! outfile5)cout<<" 打開文件失敗!"<<endl;else

43、cout<<" *請注冊用戶* n"cout<<" 請輸入您的用戶名:"cin>>name;fstream infile6("D:dd.txt",ios:in);/以讀方式打開文件if(! infile6)cout<<" 打開文件失敗!"<<endl;return;string a1002; / 定義一個 string 類型的二維數組 ,用來保存從文本內讀取的信息 int line=0;memset(a,0,sizeof(a);/將數組清空while(!i

44、nfile6.eof()/文件不為空的條件設置infile6>>aline0>>aline1;/ 文件流讀取數據line+;for(int i=0;i<line;i+)if(ai0=name)cout<<" 此用戶已存在! 謝謝使用本系統注冊用戶界面!歡迎下次使用!"<<endl;exit(0);outfile5<<name<<""cout<<" 請輸入您的密碼:"cin>>code;cout<<" 請再次輸入您

45、的密碼:"cin>>code1;if(code!=code1)cout<<" 您兩次輸入的密碼不一致! 謝謝使用本系統注冊用戶界面! 歡迎下次使用 !"<<endl;exit(0);elseoutfile5<<code1<<endl;cout<<" 謝謝使用本系統注冊用戶界面 ! 您已注冊成功 !"<<endl; outfile5.close();void welcome()/驗證用戶登陸,登陸成功顯示歡迎信息string name,code;int mark=

46、0;fstream infile("D:dd.txt",ios:in);if(!infile)cerr<<" 打開文件錯誤"<<endl;return;int line=0;string a100100;memset(a,0,sizeof(a);/ 將數組清空while(!infile.eof()/文件不為空的條件設置infile>>aline0>>aline1;/文件流讀取數據line+;cout<<"tt *用戶名 * :"cin>>name;int m=-1

47、;for(int i=0;i<line;i+)if(ai0=name)m=i;mark=i;break;if(m=-1)cout<<"tt *該用戶不存在,請注冊用戶* "<<endl;add_zhuce();cout<<"tt *密碼 * :"cin>>code;for(int j=0;j<2;j+)if(amark1=code)cout<<" 成功登入 * "<<endl;break;elsecout<<" 密碼錯誤,請重新輸

48、入cout<<"tt *密碼cin>>code;* * "<<endl; :"void addinfor() / 增加信息界面實現int a;doctor d;HuanZhe w;cout<<endl;cout<<endl;cout<<"tt *增加信息界面 * "<<endl;cout<<"n"cout<<"tt * * * n"cout<<"tt n"cout&l

49、t;<"tt1.增加醫生信息 n"cout<<"tt2.增加患者信息 n"cout<<"tt0.退出 n"cout<<"tt n"cout<<"tt * * * n"cout<<" 請輸入您選擇的數字<0-2>:"cin>>a;switch(a)case 1: d.input(); break;case 2: w.input(); break;case 0: break;default:

50、 cout<<" 輸入數字錯誤!"<<endl;void select() / 查詢信息界面實現int b;doctor d;HuanZhe w;cout<<endl;cout<<endl;cout<<"tt *查詢信息界面 * "<<endl;cout<<"n"cout<<"tt * * * n"cout<<"tt n"cout<<"tt1.查詢醫生信息 n"cout<<"tt2.查詢患者信息 n"cout<<"tt0.退出 n"cout<<"tt n"cout<<"tt * * * n"cout<<"

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論