版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 摘 要</b></p><p> 本報告介紹了一個運用C語言開發(fā)的用于職工信息管理系統(tǒng),通過該系統(tǒng)可以對職工的姓名、工號、學(xué)歷、聯(lián)系方式等信息進行系統(tǒng)管理。該系統(tǒng)是在Visual C++集成環(huán)境中進行編譯、連接和運行的。該系統(tǒng)使用了數(shù)組程序設(shè)計技術(shù),以及輸入輸出函數(shù)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、指針、結(jié)構(gòu)體數(shù)據(jù)和文件輸入輸出的知識完成。管理人員只要通過屏幕菜單,就可以
2、實現(xiàn)對系統(tǒng)數(shù)據(jù)的插入、查詢、修改、刪除、瀏覽等工作,該系統(tǒng)的使用,給職工的管理帶來了極大的方便,大大的提高了管理人員的工作效率和工作質(zhì)量。</p><p> 關(guān)鍵詞:C語言,職工,管理系統(tǒng)</p><p><b> 目 錄</b></p><p><b> 1 功能設(shè)計1</b></p><
3、p> 2 總體設(shè)計方案2</p><p> 2.1設(shè)計技術(shù)說明2</p><p> 2.2 函數(shù)關(guān)系示意圖2</p><p> 2.3 結(jié)構(gòu)體設(shè)計及說明2</p><p> 2.4 總體設(shè)計方案及流程圖3</p><p><b> 3 詳細設(shè)計4</b></
4、p><p> 3.1 創(chuàng)建函數(shù)4</p><p><b> 3.2插入函數(shù)4</b></p><p><b> 3.3查詢函數(shù)5</b></p><p> 3.4 修改函數(shù)5</p><p><b> 3.5刪除函數(shù)5</b></p
5、><p><b> 3.6瀏覽函數(shù)5</b></p><p><b> 3.7文件保存5</b></p><p> 3.8總程序代碼及注釋6</p><p><b> 4調(diào)試及測試13</b></p><p> 4.1當(dāng)前代碼運行情況13
6、</p><p> 4.2其他問題14</p><p> 5 系統(tǒng)的操作說明16</p><p><b> 致謝17</b></p><p><b> 附錄18</b></p><p><b> 參考文獻21</b></p>
7、;<p><b> 職工信息管理系統(tǒng)</b></p><p><b> 1 功能設(shè)計</b></p><p> 對于任意大小公司來說,職工管理的好壞會直接關(guān)系到公司的發(fā)展和管理,它是公司經(jīng)營管理中非常重要的環(huán)節(jié)。職工的增加、減少、管理是一個緊密聯(lián)系的有機整體。因此,公司必須要有一個方便管理人員管理職工資料的系統(tǒng),這個系統(tǒng)又能
8、方便管理人員能及時掌握職工的有效信息。</p><p> 本報告設(shè)計的職工信息管理系統(tǒng)主要是管理職工資料的,方便修改、查詢、刪除。</p><p> 隨著公司的經(jīng)營發(fā)展,公司的管理系統(tǒng)很重要,特別是職工的管理,職工的公司最基層的人物,也是為公司提供勞動力的重要部分。本設(shè)計就是為公司職工設(shè)計一個基于C語言、在Visual C++環(huán)境中編譯、連接和運行的職工信息管理系統(tǒng)。</p>
9、;<p> 該系統(tǒng)應(yīng)該具有以下功能:</p><p> 1)能夠建立一個文件夾來儲存職工的信息;</p><p> 2)能夠錄入職工的信息;</p><p> 3) 能夠查詢某一職工的信息;</p><p> 4)能夠修改某一職工的信息;</p><p> 5)能夠刪除某一職工的信息;<
10、/p><p> 6)能夠顯示所有職工的信息;</p><p><b> 7)能夠推出系統(tǒng)。</b></p><p> 系統(tǒng)的功能結(jié)構(gòu)圖如下圖所示:</p><p><b> 2 總體設(shè)計方案</b></p><p><b> 2.1設(shè)計技術(shù)說明</b&
11、gt;</p><p> 該設(shè)計是一個小型的管理系統(tǒng),該系統(tǒng)中的主要數(shù)據(jù)包括客戶姓名、性別、入職日期、學(xué)歷和聯(lián)系電話等等,這些數(shù)據(jù)的類型盡管不同,但他們之間是有內(nèi)在聯(lián)系的,都屬于記錄信息的內(nèi)容,所以在本程序中將他們組合成一個組合數(shù)據(jù),也就是結(jié)構(gòu)體。每個職工信息就是數(shù)據(jù)表中的一項記錄,所有的職工信息構(gòu)成一張總表,在程序設(shè)計時使用結(jié)構(gòu)體數(shù)組存儲這些數(shù)據(jù),每當(dāng)輸入信息完成,可以將這些數(shù)據(jù)保存在磁盤文件中。</p
12、><p> 2.2 函數(shù)關(guān)系示意圖</p><p> 為了便于程序設(shè)計調(diào)試和小組分工合作,該系統(tǒng)程序采用模塊化的設(shè)計方法,將系統(tǒng)的每個功能用一個相對獨立的函數(shù)來完成,該系統(tǒng)程序包含一個主函數(shù),包含一個插入函數(shù)(Insert)、一個查詢函數(shù)(Search)、一個修改函數(shù)(Update)、一個刪除函數(shù)(Delete)、一個瀏覽函數(shù)(Browse)、保存函數(shù)(Save)和一個退出函數(shù)(Exit)
13、。</p><p> 其示意圖如圖2-1所示:</p><p> 圖2-1 函數(shù)結(jié)構(gòu)圖</p><p> 2.3 結(jié)構(gòu)體設(shè)計及說明</p><p> 根據(jù)系統(tǒng)的要求,聲明以下的結(jié)構(gòu)體類型:</p><p> #include<string.h> //聲明字符串</p>
14、<p> #include<stdlib.h> //聲明函數(shù)類型</p><p> struct workers //聲明結(jié)構(gòu)體類型的名稱為 struct workers</p><p> { </p><p> char name[10];
15、 //用字符串存放職工的姓名數(shù)據(jù) </p><p> char sex[8]; //用字符串存放職工的性別數(shù)據(jù) </p><p> char time[20]; //用字符串存放職工的入職時間數(shù)據(jù)</p><p> char phone[20]; //用字符串
16、存放職工的聯(lián)系號碼數(shù)據(jù)</p><p> char education[10]; //用字符串存放職工的學(xué)歷數(shù)據(jù)</p><p> int number; //用字符串存放職工的工號數(shù)據(jù)</p><p> }worker; //用結(jié)構(gòu)體數(shù)組存放職工的所有信息,不限制人數(shù)</p><p&
17、gt; 2.4 總體設(shè)計方案及流程圖</p><p> 系統(tǒng)總體來講采用職工信息管理,操作員根據(jù)職工信息管理系統(tǒng)中的提示項選擇其中一項進行操作,即調(diào)用與菜單項對應(yīng)的子函數(shù),操作員根據(jù)提示進行操作,操作完成后,系統(tǒng)重新顯示菜單,供用戶選擇,直到操作員選擇退出項,程序結(jié)束。</p><p> 其總的流程圖如圖2-2所示:</p><p><b> ]
18、</b></p><p> =0 =1 =2 =3 =4 =5 =6</p><p><b> 3 詳細設(shè)計</b></p><p> 職工信息系統(tǒng)由一個主函數(shù),一個創(chuàng)建函數(shù)(Creat)、一個插入函數(shù)(Insert)、一個查詢函數(shù)(Search)、一個修改函數(shù)(Update)、一
19、個刪除函數(shù)(Delete)、一個瀏覽函數(shù)(Browse)和一個退出函數(shù)(Exit)組成,下面對這些函數(shù)的詳細設(shè)計做一說明。</p><p> 主函數(shù)的結(jié)構(gòu)體變量:</p><p> struct workers //聲明結(jié)構(gòu)體類型 struct workers</p><p> { </p&g
20、t;<p> char name[10]; // 全局變量:姓名 </p><p> char sex[8]; // 全局變量:性別 </p><p> char time[20]; // 全局變量:入職時間</p><p> char
21、phone[20]; // 全局變量:聯(lián)系號碼</p><p> char education[10]; // 全局變量:學(xué)歷</p><p> int number; // 全局變量:工號</p><p><b> }</b></p><p> 從主函數(shù)的代碼中看出,姓名,性
22、別,職工入職日期,學(xué)歷和職工聯(lián)系電話都屬于全局變量。設(shè)置這些變量,使整個職工信息系統(tǒng)的數(shù)據(jù)更具體和清晰。</p><p> 3.1 創(chuàng)建函數(shù) </p><p><b> 1)Creat()</b></p><p><b> 2)功能</b></p><p> 創(chuàng)建函數(shù)便于創(chuàng)建保存數(shù)據(jù)文件
23、的具體路徑。創(chuàng)建文檔文件workers,使fp指向此文件,程序中的w+表示創(chuàng)建一個具有讀寫功能的文檔文件。通過創(chuàng)建函數(shù),可以確定該文件的具體路徑為D磁盤。</p><p><b> 3)相關(guān)變量</b></p><p> 通過程序,可以看出相關(guān)的變量為fp,fp是指向workers文檔文件的變量。</p><p> fp 將fope
24、n函數(shù)的返回值賦值給針變量fp </p><p> 3.2插入函數(shù) </p><p> 1)Insert()</p><p><b> 2)功能</b></p><p> 錄入數(shù)據(jù)函數(shù)具有巨大的功能,是為錄入具體職工信息服務(wù)的。程序中我們依序錄入職工姓名,職工性別,職工入職日期,學(xué)歷,聯(lián)系電話的有關(guān)職工信息。
25、</p><p><b> 3)相關(guān)變量</b></p><p> fp 將fopen函數(shù)的返回值賦值給指針變量fp</p><p> 流程圖(見附錄的圖1)</p><p> 3.3查詢函數(shù) </p><p> 1)Search()</p><p>&
26、lt;b> 2)功能</b></p><p> Seach查詢函數(shù)在職工信息處理系統(tǒng)中起著查詢職工信息的作用。通過調(diào)用查詢函數(shù),我們可以根據(jù)要查詢的職工工號來查詢出職工姓名,性別,入職日期,學(xué)歷和聯(lián)系電話。</p><p><b> 3)相關(guān)變量</b></p><p> fp 將fopen函數(shù)返回值賦值給指針
27、變量fp</p><p> flag 設(shè)定標(biāo)記變量flag來判斷是否存在此職工信息</p><p> 3)流程圖(見附錄的圖2)</p><p> 3.4 修改函數(shù) </p><p> 1)Update()</p><p><b> 2)功能</b></p>&
28、lt;p> 首先輸入你曾經(jīng)錄入的數(shù)據(jù),接著可以按要求去修改之前所錄入的數(shù)據(jù),例如姓名、性別、入職日期、學(xué)歷和聯(lián)系電話,另外,如果之前沒有錄入就查詢,則會出現(xiàn)提示語“沒有查詢到將要修改的職工工號!”</p><p><b> 3)相關(guān)變量</b></p><p> flag 設(shè)定標(biāo)記變量flag來判斷是否存在此職工信息</p>&l
29、t;p> offset 用來存放修改職工資料的一長整型變量</p><p> fread 調(diào)用數(shù)據(jù)工具變量fread</p><p> 流程圖(見附錄的圖3)</p><p> 3.5刪除函數(shù) </p><p> 1)Delete()</p><p><b> 2)功能&
30、lt;/b></p><p> 起到刪除離職職工的信息的功能,并且能將文件指針返回到存儲此職工信息的位置。當(dāng)下次查詢時,沒有此職工的信息內(nèi)容。 </p><p><b> 3)相關(guān)變量</b></p><p> flag 設(shè)定標(biāo)記變量flag來判斷是否有查詢到可以刪除的職工號 </p>
31、<p> fp 將fopen函數(shù)返回值賦值給指針變量fp</p><p> fread 用數(shù)據(jù)工具變量fread</p><p> 流程圖(見附錄的圖4)</p><p> 3.6瀏覽函數(shù) </p><p> 1)Browse()</p><p>&l
32、t;b> 2)功能</b></p><p> 對之前所錄入的一系列數(shù)據(jù)起到比較直觀的瀏覽功能。</p><p><b> 3)相關(guān)變量</b></p><p> int i=0; 定義整型變量i</p><p> 4)流程圖(見附錄的圖5)</p><p><
33、;b> 3.7文件保存</b></p><p> 1)數(shù)據(jù)的輸入和輸出</p><p> fp=fopen("D:\workers.txt","r"); //將fopen函數(shù)的返回值賦值給指針變量fp</p><p> while(!feof(fp))</p><p>
34、<b> {</b></p><p> fread(&worker,sizeof(struct workers),1,fp); //讀取文件</p><p> if(worker.number==number)</p><p> {printf("\n已經(jīng)有相同的職工工號,請選擇其他工號:");</p
35、><p> return; //當(dāng)新輸入的工號和已保存的工號是重復(fù)時提示并返回</p><p><b> } </b></p><p> } </p><p> fclose(fp);
36、 //關(guān)閉文件"D:\workers.txt"</p><p> fp=fopen("D:\workers.txt","r+"); //打開文件</p><p> while(!feof(fp)) //從頭文件讀入字符直到文件結(jié)束</p><p>&
37、lt;b> {</b></p><p> long offset; </p><p> offset=ftell(fp); //將文件指針?biāo)诘奈恢觅x給一長整型變量</p><p> fread(&worker,sizeof(struct workers),1,fp)
38、;</p><p><b> 2)打開方式</b></p><p> void Save( ) //定義Save函數(shù)</p><p><b> { </b></p><p> if((fp=fopen("D:\workers.txt","a"))==
39、NULL) //打開文件workers,使fp指向此文件,判斷此文件是否為空文件</p><p> { printf("cannot open file\n"); //若workers文件為空文件,則輸出“不能打開文件”的提示信息</p><p> return; //返回if語句,繼續(xù)進行判斷文件是否為空文件 <
40、/p><p><b> }</b></p><p> if(fwrite(&worker,sizeof(struct workers),1,fp)!=1) //向workers文件中寫數(shù)據(jù), 用if語句進行判斷寫入數(shù)據(jù)的真假</p><p> { printf("file write error\n"); /
41、/若寫入的數(shù)據(jù)為假的,則輸出“文件寫入錯 誤”的提示信息</p><p> return ; //返回if語句,繼續(xù)進行判斷寫入的數(shù)據(jù)是否為假的</p><p><b> }</b></p><p> fclose(fp); //關(guān)閉文件</p><p><b> }</b&
42、gt;</p><p> 3.8總程序代碼及注釋</p><p> #include<stdio.h></p><p> #include<string.h> //聲明字符串</p><p> #include<stdlib.h> //聲明函數(shù)類型</p><p&
43、gt; struct workers //聲明結(jié)構(gòu)體類型 struct workers</p><p> { </p><p> char name[10]; //定義職工的姓名 </p><p> char sex[8]; //定義職工的性別
44、 </p><p> char time[20]; //定義職工的入職時間</p><p> char phone[20]; //定義職工的聯(lián)系號碼</p><p> char education[10]; //定義職工的學(xué)歷</p><p> int number;
45、 //定義職工的工號</p><p><b> }worker;</b></p><p> void Creat();</p><p> void Insert();</p><p> void Search();</p><p> void Update();<
46、/p><p> void Delete();</p><p> void Browse();</p><p> void Save(); //聲明函數(shù)</p><p> FILE *fp; //定義文件指針</p><p> int number;
47、 //定義全局變量</p><p> int main()</p><p><b> {</b></p><p><b> int i;</b></p><p> printf("\n 您好,這是第六組C語言課程設(shè)計作品\n\n
48、 謝謝欣賞!!\n\n");</p><p> printf("數(shù)據(jù)保存在D盤對應(yīng)的記事本中,若文件不存在請先進行創(chuàng)建,請知悉!\n");</p><p><b> do</b></p><p><b> { </b></p><p&g
49、t; printf("\n>***************** 職工信息管理系統(tǒng) *****************<\n");</p><p> printf("* 0---新建(Creat) *\n");</p><p> p
50、rintf("* 1---錄入(Insert) *\n");</p><p> printf("* 2---查詢(Search) *\n");</p><p> printf(&q
51、uot;* 3---修改(Update) *\n");</p><p> printf("* 4---刪除(Delete) *\n");</p><p> printf("*
52、 5---瀏覽(Browse) *\n");</p><p> printf("* 6---退出(Exit) *\n");</p><p> printf(">********
53、*******************謝謝使用!*************************<\n");</p><p> scanf("%d",&i);</p><p><b> switch(i)</b></p><p><b> {</b></p>
54、<p> case 0:Creat(); //調(diào)用創(chuàng)建運算</p><p><b> break;</b></p><p> case 1:Insert(); //調(diào)用插入運算</p><p><b> break;&
55、lt;/b></p><p> case 2:Search(); //調(diào)用查詢運算</p><p><b> break;</b></p><p> case 3:Update(); //調(diào)用修改運算</p><p>
56、<b> break;</b></p><p> case 4:Delete(); //調(diào)用刪除運算</p><p><b> break;</b></p><p> case 5:Browse(); //調(diào)用瀏覽運算<
57、;/p><p><b> break;</b></p><p> case 6:break; //表示退出的提示</p><p> default:printf("職工管理信息系統(tǒng)操作錯誤!請重新選擇你需要操作的步驟!");break;</p><p&
58、gt; } //輸入非0到6的提示提示輸入錯誤</p><p> }while(i!=6); </p><p> printf("\n謝謝使用此系統(tǒng)!\n"); //當(dāng)輸入為6時退出系統(tǒng)</p><p> return 0;
59、 //主函數(shù)執(zhí)行完畢,返回函數(shù)值0</p><p> } </p><p> void Creat() //定義Creat函數(shù)</p><p><b> {</b></p><
60、;p> fp=fopen("D:\workers.txt","w+"); //創(chuàng)建保存數(shù)據(jù)文件的具體路徑,w+表示</p><p> 建立一個具有讀寫功能的文本文件 </p><p> fclose(fp); //關(guān)閉文件</p><p><b> }&l
61、t;/b></p><p> void Insert() //定義錄入數(shù)據(jù)函數(shù) </p><p><b> {</b></p><p> printf("請輸入職工工號:"); //按要求輸入職工工號</p>
62、<p> scanf("%d",&number); //輸入工號,且其輸入類型為十進制整數(shù)</p><p> fp=fopen("D:\workers.txt","r"); //將fopen函數(shù)的返回值賦值給指針變量fp</p><p> while(!feof(f
63、p))</p><p><b> {</b></p><p> fread(&worker,sizeof(struct workers),1,fp); //讀取文件</p><p> if(worker.number==number)</p><p> {printf("\n已經(jīng)
64、有相同的職工工號,請選擇其他工號:");</p><p> return; //當(dāng)新輸入的工號和已保存的工號是重復(fù)時提示并 </p><p><b> 返回</b></p><p><b> } </b></p><p> }
65、 </p><p> fclose(fp); //關(guān)閉文件"D:\workers.txt"</p><p> worker.number=number; </p><p> printf("請輸入姓名:"
66、); </p><p> scanf("%s",worker.name); </p><p> printf("請輸入性別:"); </p><p> scanf("%s",worker.sex);</p><p> printf("
67、請輸入入職日期:"); </p><p> scanf("%s",worker.time);</p><p> printf("請輸入學(xué)歷:"); </p><p> scanf("%s",worker.education);</p><p> printf(&
68、quot;請輸入聯(lián)系電話:");</p><p> scanf("%s",worker.phone); //根據(jù)提示輸入職工信息</p><p> Save(); } //保存數(shù)據(jù)</p><p> void
69、 Search() //定義Search函數(shù)</p><p> {int flag=0; //設(shè)定標(biāo)記量的初值</p><p> printf("請輸入要查詢的職工工號:"); </p><p>
70、; scanf("%d",&number); //提示輸入要查詢職工的</p><p><b> 工號</b></p><p> fp=fopen("D:\workers.txt","r"); //打開
71、磁盤文件 </p><p> while(!feof(fp))</p><p> {fread(&worker,sizeof(struct workers),1,fp); //讀取數(shù)據(jù)</p><p> if(worker.number==number) //尋找此工號信息的數(shù)據(jù)存儲</p>&
72、lt;p><b> 位置</b></p><p><b> { </b></p><p> printf("姓名:%s\n",worker.name);</p><p> printf("性別:%s\n",worker.sex);</p><p&g
73、t; printf("入職日期:%s\n",worker.time);</p><p> printf("學(xué)歷:%s\n",worker.education);</p><p> printf("聯(lián)系電話:%s\n",worker.phone); //若數(shù)據(jù)存在則輸出此工號</p><p
74、><b> 職工信息</b></p><p> flag=1; //標(biāo)記量變?yōu)?</p><p><b> break;</b></p><p><b> }</b></p><p><b
75、> }</b></p><p> fclose(fp);</p><p> if(flag==0) printf("\n不存在此職工信息!\n"); //標(biāo)記量不變則有提示"不存在此職工信息!"</p><p><b> }</b></p><p>
76、void Update() //定義Update函數(shù)</p><p> {int flag=0; </p><p> printf("請輸入要修改的職工工號:");</p><p> scanf("%d",&nu
77、mber);</p><p> fp=fopen("D:\workers.txt","r+"); //打開文件</p><p> while(!feof(fp)) //從頭文件讀入字符直到文件結(jié)束</p><p><b> {</b
78、></p><p> long offset; </p><p> offset=ftell(fp); //將文件指針?biāo)诘奈恢觅x給一長整型</p><p><b> 變量</b></p><p> fread(&worker,
79、sizeof(struct workers),1,fp);</p><p> if(worker.number==number) //若輸入的職工號與之前錄入的相同則</p><p><b> 可進行修改</b></p><p><b> {</b></p><p> print
80、f("請輸入姓名:");</p><p> scanf("%s",worker.name);</p><p> printf("請輸入性別:");</p><p> scanf("%s",worker.sex);</p><p> printf("
81、;請輸入入職日期:");</p><p> scanf("%s",worker.time);</p><p> printf("請輸入學(xué)歷:");</p><p> scanf("%s",worker.education);</p><p> printf(&quo
82、t;請輸入聯(lián)系電話:");</p><p> scanf("%s",worker.phone); //輸入修改后的職工信息</p><p> fseek(fp,offset,SEEK_SET); //將文件指針返回到存儲此職工
83、 </p><p><b> 信息的位置 </b></p><p> fwrit
84、e(&worker,sizeof(struct workers),1,fp); //保存修改后職工資料</p><p> flag=1; </p><p><b> break;</b></p><p><b> }</b></p><p
85、><b> }</b></p><p> fclose(fp); </p><p> if(flag==0) printf("\n沒有查詢到將要修改的職工工號!\n"); </p><p><b> }</b></p>
86、<p> void Delete() //定義Delete函數(shù)</p><p> {int flag=0; </p><p> printf("請輸入要刪除的職工工號:");</p><p> scanf("%d&qu
87、ot;,&number);</p><p> fp=fopen("D:\workers.txt","r+"); </p><p> while(!feof(fp))</p><p><b> { </b></p><p> long offset;
88、 </p><p> offset=ftell(fp); //將文件指針?biāo)诘奈恢觅x給一長整型變量</p><p> fread(&worker,sizeof(struct workers),1,fp);</p><p> if(worker.number==number) //如果
89、要刪除的工號與錄入保存的相符就執(zhí)行</p><p><b> 下面的語句</b></p><p><b> {</b></p><p> worker.number=0; </p><p> strcpy(worker.name,"");
90、 //將空格復(fù)制到原來的職工資料相對</p><p> 應(yīng)的位置中,即相當(dāng)于刪除</p><p> strcpy(worker.sex,"");</p><p> strcpy(worker.time,"");</p><p> strcpy(worker.education,&
91、quot;");</p><p> strcpy(worker.phone,"");</p><p> fseek(fp,offset,SEEK_SET); //將文件指針返回到存儲此職工信息的位置 </p><p> fwrite(&worker,sizeof(struct workers),1,fp
92、) ; //保存刪除后的職工資料</p><p> flag=1; </p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><
93、p> fclose(fp); </p><p> if(flag==0) printf("\n沒有查詢到可以刪除的職工工號!\n");</p><p><b> }</b></p><p> void Browse() //定義Browse函數(shù)</p>
94、<p><b> {</b></p><p> int i=0; //定義i變量</p><p> fp=fopen("D:\workers.txt","r"); </p><p> while(!feof(fp)) </p><p><b>
95、 {</b></p><p> fread(&worker,sizeof(struct workers),1,fp); //從文件中讀數(shù)據(jù)</p><p> if(worker.number!=0) i++; //用變量i統(tǒng)計職工人數(shù)</p><p><b> }</b><
96、;/p><p> fclose(fp); </p><p> fp=fopen("D:\workers.txt","r"); </p><p> printf(" 工號 姓 名 性別 入職日期 學(xué)歷 聯(lián)系電話 \n"); //輸出結(jié)構(gòu)體類型的文字,使程序排版更美
97、觀</p><p> while(!feof(fp))</p><p><b> {</b></p><p> fread(&worker,sizeof(struct workers),1,fp); //從文件中讀數(shù)據(jù)</p><p> if(worker.number&&(i!=1))
98、</p><p> {printf(" %4d %6s %4s %8s %4s %8s \n",</p><p> worker.number,worker.name,worker.sex,worker.time,worker.education,worker.phone);</p><p> i--; //按
99、順序輸出職工信息的數(shù)據(jù)</p><p><b> }</b></p><p><b> }</b></p><p> printf("\n"); </p><p> fclose(fp); </p><p><b> }&l
100、t;/b></p><p> void Save() //定義Save函數(shù)</p><p><b> { </b></p><p> if((fp=fopen("D:\workers.txt","a"))==NULL) //打開文件workers,使fp指向此</p><
101、;p> 文件,判斷此文件是否為空文件</p><p> { printf("cannot open file\n"); //若workers文件為空文件,則輸出“不能打開 </p><p><b> 文件”的提示信息</b></p><p> return; //返回if語句,繼續(xù)進行判斷文件是否為空文件
102、 </p><p><b> }</b></p><p> if(fwrite(&worker,sizeof(struct workers),1,fp)!=1) //向workers文件中寫數(shù)據(jù), </p><p> 用if語句進行判斷寫入數(shù)</p><p><b> 據(jù)的真假<
103、;/b></p><p> { printf("file write error\n"); //若寫入的數(shù)據(jù)為假的,則輸出“文件寫入錯誤”</p><p><b> 的提示信息</b></p><p> return ; //返回if語句,繼續(xù)進行判斷寫入的數(shù)據(jù)是否為假的</p><p&
104、gt;<b> }</b></p><p> fclose(fp); //關(guān)閉文件</p><p><b> }</b></p><p><b> 4調(diào)試及測試</b></p><p> 4.1當(dāng)前代碼運行情況</p><p> 1)執(zhí)行無
105、誤之后出現(xiàn)的界面如下;</p><p> 2)輸入職工的資料;</p><p> 3)瀏覽職工的資料;</p><p> 4)修改02號職工資料;</p><p> 5)瀏覽修改后的職工資料;</p><p> 6)刪除職工資料后再瀏覽資料;</p><p><b> 7)
106、退出;</b></p><p> 8)自動創(chuàng)建的文件夾及刪除某一職工資料后保存的資料</p><p><b> 4.2其他問題</b></p><p> 在文件保存的過程中遇到的問題是文件內(nèi)容不能順利的保存在它對應(yīng)的磁盤中:</p><p> void load( )</p><p
107、> { FILE*fp;</p><p><b> int i;</b></p><p> if((fp=fopen("workers.dat","wb"))==NULL)</p><p> { printf("cannot open file\n");</p&g
108、t;<p><b> return;</b></p><p><b> }</b></p><p> for(i=0;i<MaxSize;i++)</p><p> if(fwrite(&workers[i],sizeof(struct workers),1,fp)!=1);</p
109、><p> { printf("file write error\n");</p><p><b> return ;</b></p><p><b> }</b></p><p> fclose(fp);</p><p><b> }&
110、lt;/b></p><p> 經(jīng)過我們多次的修改,最終我們完成了對文件的保存:</p><p> void Save( ) //定義Save函數(shù)</p><p><b> { </b></p><p> if((fp=fopen("D:\workers.txt","a&qu
111、ot;))==NULL) //打開文件workers,使fp指向此文件,判斷此文件是否為空文件</p><p> { printf("cannot open file\n"); //若workers文件為空文件,則輸出“不能打開文件”的提示信息</p><p> return; //返回if語句,繼續(xù)進行判斷文件是否為空文件 </p><
112、;p><b> }</b></p><p> if(fwrite(&worker,sizeof(struct workers),1,fp)!=1) //向workers文件中寫數(shù)據(jù),用if語句進行判斷寫入數(shù)據(jù)的真假</p><p> { printf("file write error\n"); //若寫入的數(shù)據(jù)為假的,則
113、輸出“文件寫入錯誤”的提示信息</p><p> return ; //返回if語句,繼續(xù)進行判斷寫入的數(shù)據(jù)是否為假的</p><p><b> }</b></p><p> fclose(fp); //關(guān)閉文件</p><p><b> }</b></p><p
114、> 文件的保存程序的編寫是整個程序中最難的,經(jīng)過我們小組的努力和老師的指導(dǎo),我們最終完成了編寫。</p><p> 在編寫程序過程中,我們還遇到了路徑問題,以下我們對路徑問題進行了具體分析。</p><p> 目前路徑:為了讓老師更直觀地看清晰地到所保存的數(shù)據(jù),我們確定文檔的路徑在D盤的workers文本中,代碼請見3.7總程序代碼及注釋</p><p>
115、; 注:fp=fopen("D:\workers.txt","w+");</p><p> fp=fopen("D:\workers.txt","r");</p><p> fp=fopen("D:\workers.txt","r");</p><
116、;p> fp=fopen("D:\workers.txt","r+");</p><p> fp=fopen("D:\workers.txt","r+");</p><p> fp=fopen("D:\workers.txt","r");</p>
117、<p> if((fp=fopen("D:\workers.txt","a"))==NULL)</p><p> 以前路徑:代碼和現(xiàn)代碼差不多,只是把上面的凡是有"D:\workers.txt"部分修改為"workers.txt",即可保存在所創(chuàng)建的磁盤中。其弊端是難以分清哪個是保存數(shù)據(jù)的文本。</p>
118、<p><b> 5 系統(tǒng)的操作說明</b></p><p> 1、0鍵為新建,運行沒錯誤之后先按0鍵創(chuàng)建一個文件夾來保存輸入的職工資 </p><p><b> 料;</b></p><p> 2、1鍵為錄入,按1鍵再按回車鍵,根據(jù)提示語言錄入職工的資料;</p><p>
119、3、2鍵為查詢,按2鍵再按回車,可以根據(jù)需要輸要查詢職工的工號查詢;</p><p> 4、3鍵為修改,按3鍵可以再輸入需要修改職工資料的工號,根據(jù)提示語言進</p><p><b> 行填寫;</b></p><p> 5、4鍵為刪除,按4鍵再按回車鍵,根據(jù)提示語言輸入需要刪除的職工工號;</p><p> 6
120、、5鍵為瀏覽,按5鍵再按回車鍵,在屏幕上就會顯示出全部職工的資料;</p><p> 7、6鍵為退出,按6鍵再按回車之后可以按任意鍵退出系統(tǒng)。</p><p><b> 致謝</b></p><p> 經(jīng)過我們小組的共同努力,我們最終完成了程序的編寫和報告攢寫,在此我們我們特別感謝xx老師的指導(dǎo),同學(xué)們提供的幫助和寶貴的意見,我們再一次衷
121、心地感謝。</p><p> 我們會在今后的學(xué)習(xí)中加強小組間的交流討論,促進學(xué)習(xí),掌握技能;更加努力、主動的學(xué)習(xí)新知識,加強動手親身實踐與發(fā)散思維的能力。</p><p><b> 附錄</b></p><p> 圖1(錄入函數(shù)的流程圖) </p><p> 圖2(查詢函數(shù)的流程圖)</p>&
122、lt;p> 圖3(修改函數(shù)的流程圖) 圖4(刪除函數(shù)的流程圖)</p><p> 圖5(瀏覽函數(shù)的流程圖)</p><p><b> 參考文獻</b></p><p> [1] 譚浩強.C程序設(shè)計(第四版)[M].北京:清華大學(xué)出版社,2010.6.</p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 職工信息管理系統(tǒng)c語言課程設(shè)計
- c語言課程設(shè)計職工信息管理系統(tǒng)
- c語言課程設(shè)計---職工信息管理系統(tǒng)
- c語言課程設(shè)計——職工信息管理系統(tǒng)
- c語言課程設(shè)計——職工信息管理系統(tǒng)
- c語言課程設(shè)計—職工信息管理系統(tǒng)
- c語言課程設(shè)計--職工信息管理系統(tǒng)
- c語言課程設(shè)計---職工信息管理系統(tǒng)設(shè)計
- c語言課程設(shè)計報告---職工信息管理系統(tǒng)
- c語言課程設(shè)計報告--職工信息管理系統(tǒng)
- c語言課程設(shè)計報告----職工信息管理系統(tǒng)設(shè)計
- c語言程序設(shè)計課程設(shè)計報告--職工信息管理系統(tǒng)
- c++課程設(shè)計--職工信息管理系統(tǒng)
- c-課程設(shè)計--- 職工信息管理系統(tǒng)
- c語言課程設(shè)計--學(xué)生信息管理系統(tǒng)
- c語言課程設(shè)計--- 學(xué)生信息管理系統(tǒng)
- c語言課程設(shè)計--學(xué)生信息管理系統(tǒng)
- c語言課程設(shè)計——學(xué)生信息管理系統(tǒng)
- 教師信息管理系統(tǒng)(c語言課程設(shè)計)
- c語言課程設(shè)計---學(xué)生信息管理系統(tǒng)
評論
0/150
提交評論