ImageVerifierCode 换一换
格式:DOCX , 页数:70 ,大小:197.71KB ,
资源ID:7655733      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7655733.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(程式设计入门.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

程式设计入门.docx

1、程式设计入门程式設計入門專題報告題目:輻射劑量估算系統組別:第22組9512814 林慕涵 9613515 趙祥萍 9631131 賀安麗 一、系統功能,輸入及輸出資料從事放射性相關的工作人員身上會佩帶一個配章,內部可以記錄人在工作場所所受到的輻射量。此配章可同時紀錄深部劑量,表示體內器官接受之劑量;淺部劑量,表示體表皮膚所接受到之劑量,水晶體劑量,表示水晶體所接受之劑量,以及背景值,表示該場所輻射背景值。為了人員的健康安全,政府針對上述三種部位的劑量分別有其年度劑量限度的規定,若在該年度內員工身上的累積輻射量值經報告分析後超過法定量,必須一段時間不能接觸放射性的工作場所,或採取必須之醫療行動

2、。此劑量配章在每月初發放至各單位,並在每月底送回相關劑量分析機構進行計讀及劑量估算,並檢查每位人員是否已接受超出法規劑量限度。本程式即模擬該劑量分析機構之工作,將回收讀出之人員劑量讀值轉換為絕對劑量,並分別輸出單位人員劑量資料給各工作單位,以及檢查、列出劑量超出法規規定之人員名單給政府機關存查。1.輸入的資料:A當月人員劑量讀值檔(import_idreading.txt)包含下列欄位:公司代碼人員代碼姓名深部讀值淺部讀值水晶體讀值背景讀值例:含有12筆當月劑量的讀入數據檔001 9702 張比利 10 10 10 5001 9703 蔡輸飯 73 290 17 5002 001 洪志紅 25

3、 190 27 10001 9710 林夢蔥 30 400 30 5003 01 陳艾梅 25 100 17 7001 9705 趙小強 25 190 6 5002 002 楊精華 25 450 27 20004 01 方大同 9 70 29 6002 003 游佩結 25 100 17 7001 9701 李小其 0 0 0 0003 02 徐米鹿 25 100 17 7001 9715 許大戶 10 5 5 5B累積劑量資料庫檔(import_database.txt) 包含下列欄位:公司代碼人員代碼姓名深部累積劑量淺部累積劑量水晶體累積劑量紀錄是否超出劑量例:含有9筆累積劑量的資料庫:0

4、01 9702 張比利 70 200 30 001 9703 蔡輸飯 73 290 17 001 9705 趙小強 25 190 6 001 9710 林夢蔥 30 400 30 002 001 洪志紅 25 190 27 002 002 楊精華 25 450 27 002 003 游佩結 25 100 17 003 01 陳艾梅 25 100 17 003 02 徐米鹿 25 100 17 C公司部門資料檔(import_dep_id.txt) 有四個機構,分別以001到004編號排序。包含以下欄位:公司代碼公司名稱例:含有4筆機構資料的機構資料檔001 青樺大學002 長羹醫院003 大千

5、醫院004 同步輻射中心2.輸出的資料1. 儲存新的人員累積劑量資料庫2. 各單位人員累積劑量名單,並以星號(*)註記各人員超出劑量限度的項目3. 呈報政府機關劑量超出法規的所有人員名單二、應用層面說明本程式應用結構陣列資料搜尋/處理以及各式排序法、字串處理以及各式迴圈判斷,這樣的系統除了用在人員輻射劑量佩章管理之外,也可應用財經報表、客戶名單管理、圖書資料管理等等,甚至是研究、實驗數據資料處理亦可應用結構陣列整合參數、實驗敘述以及所得之數據結果。三、全域常數及資料結構說明程式最上方定義了全域常數A. 最大陣列限制:MAX_ARRAY_SIZE 500B. 不同部位之輻射轉換、法規定義之劑量限

6、度設定為全域常數。如下:名稱深部 淺部水晶體輻射轉換因子(ex. cf_deep)1.521法規標準 (ex. Criteria_deep)50500150在程式當中,我們建構並使用了三種資料結構A. 人員當月劑量讀值資料結構(person),用來儲存個人員的資料,包含下列欄位:公司代碼(int depid)人員代碼(int pid)姓名(char name20)(最多20字元)深部讀值(float rdeep)淺部讀值(float rshallow)水晶體讀值(float reye)背景讀值(float bg)圖示概念如下:人員當月劑量讀值(person)欄位意義欄位名稱公司代碼int de

7、pid人員代碼int pid姓名char name20深部讀值float rdeep淺部讀值float rshallow水晶體讀值float reye背景讀值float bgB.累積劑量資料庫結構(database),用來儲存人員之前的各項資料紀錄,包含下列欄位:公司代碼(int depid)人員代碼(int pid)姓名(char name20)深部累積劑量(float yrdeep)淺部累積劑量(float yrshallow)水晶體累積劑量(float yreye)紀錄是否超出劑量(int reference)圖示概念如下:累積劑量資料庫(database)欄位意義欄位名稱公司代碼int

8、 depid人員代碼int pid姓名char name20深部累積劑量float yrdeep淺部累積劑量float yrshallow水晶體累積劑量float yreye用來紀錄是否超出劑量int referenceC.公司部門資料結構(department),儲存公司名稱及編號,包含下列欄位:公司代碼(int depid)公司名稱(char depname20)圖示概念如下:公司部門資料結構(department)欄位意義欄位名稱公司代碼int depid公司名稱char depname20再以三個一维陣列person pdatanum_person、database ydatanum_

9、database及department ddatanum_depart,分別儲存所有資料。每一筆person pdatai(0 i num_person)、database ydatai (0 i num_database)及department ddatai (0 i num_depart)分別代表一個人員的當月劑量讀值、累積劑量資料、一個公司部門。num_person、num_database及num_depart分別指出最多有幾個人員的資料、最多有幾筆累積資料、以及最多有幾間公司部門。圖示概念如下:儲存所有人員當月劑量讀值的一维陣列(person pdatanum_person)陣列索引

10、公司代碼人員代碼姓名深部讀值淺部讀值水晶體讀值背景讀值1第一所公司的代碼第一所公司第一位人員代碼第一所公司第一位人員姓名第一所公司第一位人員深部讀值第一所公司第一位人員淺部讀值第一所公司第一位人員水晶體讀值第一所公司第一位人員背景讀值2第一所公司的代碼第一所公司第二位人員代碼第一所公司第二位人員姓名第一所公司第二位人員深部讀值第一所公司第二位人員淺部讀值第一所公司第二位人員水晶體讀值第一所公司第二位人員背景讀值3第二所公司的代碼第二所公司第一位人員代碼第二所公司第一位人員姓名第二所公司第一位人員深部讀值第二所公司第一位人員淺部讀值第二所公司第一位人員水晶體讀值第二所公司第一位人員背景讀值儲存所

11、有人員累積劑量資料庫的一维陣列(database ddatanum_database)陣列索引公司代碼人員代碼姓名深部累積劑量淺部累積劑量水晶體累積劑量紀錄是否超出劑量1第一所公司的代碼第一所公司第一位人員代碼第一所公司第一位人員姓名第一所公司第一位人員累積深部劑量第一所公司第一位人員累積淺部劑量第一所公司第一位人員累積水晶體劑量2第一所公司的代碼第一所公司第二位人員代碼第一所公司第二位人員姓名第一所公司第二位人員累積深部劑量第一所公司第二位人員累積淺部劑量第一所公司第二位人員累積水晶體劑量3第二所公司的代碼第二所公司第一位人員代碼第二所公司第一位人員姓名第二所公司第一位人員累積深部劑量第二所

12、公司第一位人員累積淺部劑量第二所公司第一位人員累積水晶體劑量例:假設一開始人員當月劑量讀值陣列儲存的內容如下:陣列索引公司代碼人員代碼姓名深部讀值淺部讀值水晶體讀值背景讀值10019702張比利101010520019703蔡輸飯732901753002001洪志紅25190271040019710林夢蔥30400305500301陳艾梅2510017760019705趙小強25190657002002楊精華254502720800401方大同9702969002003游佩結25100177100019701李小其00001100302徐米鹿25100177120019715許大戶10555一

13、開始,人員累積劑量資料庫陣列如下:陣列索引公司代碼人員代碼姓名深部累積劑量淺部累積劑量水晶體累積劑量紀錄是否超出劑量10019702張比利7020030020019703蔡輸飯7329017030019705趙小強251906040019710林夢蔥304003005002001洪志紅251902706002002楊精華254502707002003游佩結25100170800301陳艾梅25100170900302徐米鹿25100170假設經過程式執行後,新的資料庫內容如下所示:陣列索引公司代碼人員代碼姓名深部累積劑量淺部累積劑量水晶體累積劑量紀錄是否超出劑量110019701李小其0000

14、10019702張比利77.521035320019703蔡輸飯17586029430019705趙小強555607540019710林夢蔥67.51190557120019715許大戶7.50005002001洪志紅47.55504486002002楊精華32.513103497002003游佩結522862710800301陳艾梅522862711900302徐米鹿522862701000401方大同4.5128230上圖中有陰影的位置表示曾於程式執行過程中修改過。詳細說明請參閱執行範例。四、程式說明1.主程式main() 說明:根據所讀取的當月劑量與累計劑量加總後運算出數值,並檢查是否超

15、過法定標準,印出劑量超出法規的所有人員名單,以及以各機構為單位的人員所有讀值,若超過標準則在旁另有標註。 輸入參數:無 回傳值:無 流程圖:(見下頁)程式碼:main() /*人員劑量參數*/ FILE *person_data_fp; struct person pdataMAX_ARRAY_SIZE ; int num_person; /*累積劑量資料庫參數*/ FILE *database_data_fp; struct database ydataMAX_ARRAY_SIZE ; int num_database; /*公司部門參數*/ FILE *depart_data_fp; st

16、ruct department ddataMAX_ARRAY_SIZE ; int num_depart; /*串連超出劑量名單之參數*/ int headindex; /*輸出檔案相關參數*/ FILE *database_data2_fp; /*database*/ database_data2_fp = fopen(OUTPUT_NEWDATABASE_FILENAME,a); FILE *to_department_fp; /*各公司部門的記錄檔*/ to_department_fp = fopen(OUTPUT_DEP_FILENAME,a); FILE *to_government

17、_fp; /*超出劑量記錄檔*/ to_government_fp = fopen(OUTPUT_GOV_FILENAME,a); /*檢查檔案是否存在*/ if ( !(person_data_fp = fopen(PERSON_READING_FILENAME,r) printf(personal dose file is not existn); if (!(database_data_fp = fopen(PERSON_DOSE_DATABASE_FILENAME,r) printf(database file is not existn); if (!(depart_data_fp

18、= fopen(DEPARTMENT_FILENAME,r) printf(company/department file is not existn); /*將人員劑量讀值由檔案讀入矩陣*/ num_person=read_person(pdata, person_data_fp); /*人員劑量讀值*/ fclose(person_data_fp); num_database=read_database(ydata, database_data_fp); /*累積劑量資料庫*/ fclose(database_data_fp); num_depart=read_department(dda

19、ta, depart_data_fp); /*公司部門*/ fclose(depart_data_fp); /*轉換劑量*/ dose_convert(pdata, num_person); /*將本月劑量累積加入資料庫併且將新加入的人員插入資料庫*/ num_database=cumulate_dose(pdata,ydata, num_person, num_database); /*利用氣泡排序法將各公司人員依照編號排序*/ sort_personid(ydata, ddata, num_depart, num_database); /*串連超出劑量限度的名單*/ headindex=l

20、ink_overdose(ydata, num_database); /*將新的資料庫存起來*/ write_database(ydata, num_database, database_data2_fp); /*顯示並儲存各公司部門人員之劑量*/ display_write_department(ydata, ddata, num_depart, num_database, to_department_fp); /*顯示並儲存劑量超出法規之人員名單*/ display_write_gov(ydata, ddata, num_depart, headindex, to_government_f

21、p); getch(); 2.副程式2.1 read_person() 說明:讀取檔案內容 輸入參數:人員當月劑量結構矩陣 回傳值:該矩陣資料筆數至主程式 流程圖: 程式碼:int read_person(struct person ptempMAX_ARRAY_SIZE, FILE *fp) int i; i=0; /*資料比數筆數,第i筆,是否小於MAX_ARRAY_SIZE規定*/ while (iMAX_ARRAY_SIZE) /*若是,則將檔案讀入ptemp資料結構陣列中*/ fscanf(fp,%d %d %s %f %f %f %f, &ptempi+1.depid, &ptem

22、pi+1.pid, &ptempi+1.name, &ptempi+1.rdeep, &ptempi+1.rshallow, &ptempi+1.reye, &ptempi+1.bg ); if (!feof(fp) /*是否讀到檔案最末端*/ i+; /*若非最末端則i加1繼續讀取下一筆*/ else return i; /*若為最末端則將i回傳至主程式*/ 2.2 read_database()說明:讀取檔案後,將資料讀入人員累積劑量資料庫 輸入參數:人員累積劑量結構矩陣 回傳值:該矩陣資料筆數至主程式 流程圖:與2.1 read_person()同一模式。 程式碼:int read_da

23、tabase(struct database ytempMAX_ARRAY_SIZE, FILE *fp) int i; i=0; while (iMAX_ARRAY_SIZE) fscanf(fp,%d %d %s %f %f %f, &ytempi+1.depid, &ytempi+1.pid, &ytempi+1.name, &ytempi+1.yrdeep, &ytempi+1.yrshallow, &ytempi+1.yreye); if (!feof(fp) i+; else return i; 2.3 read_department()說明:將資料讀入部門資料結構陣列 輸入參數:

24、公司部門結構矩陣 回傳值:該矩陣資料筆數至主程式 流程圖:與2.1 read_person()同一模式。 程式碼:int read_department(struct department dtempMAX_ARRAY_SIZE, FILE *fp) int i; i=0; while (iMAX_ARRAY_SIZE) fscanf(fp,%d %s, &dtempi+1.depid, &dtempi+1.depname); if (!feof(fp) i+; else return i; 2.4 dose_convert()說明:將人員當月劑量讀值減去背景值並乘上劑量轉換因子,轉換為絕對劑

25、量 輸入參數:人員當月劑量讀值資料結構、人員當月劑量資料筆數 回傳值:無 流程圖: 程式碼:void dose_convert(struct person ptempMAX_ARRAY_SIZE, int num_p) int i; for (i=1; i0),則將當月劑量加入累積劑量中,若無部門編號及員工編號相符者(回傳值=0),則將該筆資料新增至累積劑量資料庫。每新增一筆則在計數器add中加1;呼叫副程式sort_department將新的人員累積劑量資料庫依照公司編號排序。最後,將原有人員累積劑量資料庫筆數(num_d)加上add,回傳新的人員累積劑量資料庫筆數(num_d)輸入參數:人員當月劑量結構矩陣、人員當月劑量資料筆數、人員累積劑量結構矩陣、人員累積劑量資料筆數 回傳值:人員累積劑量資料筆數 流程圖: 程式碼:int cumulate_dose(struct person ptempMAX_ARRAY_SIZE,struct database yt

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1