C語言課程設(shè)計實(shí)驗(yàn)報告-高校在職職工管理軟件_第1頁
C語言課程設(shè)計實(shí)驗(yàn)報告-高校在職職工管理軟件_第2頁
C語言課程設(shè)計實(shí)驗(yàn)報告-高校在職職工管理軟件_第3頁
C語言課程設(shè)計實(shí)驗(yàn)報告-高校在職職工管理軟件_第4頁
C語言課程設(shè)計實(shí)驗(yàn)報告-高校在職職工管理軟件_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

PAGE課程設(shè)計課程名稱程序設(shè)計課程設(shè)計設(shè)計題目高校在職職工管理軟件班級與班級代碼專業(yè)指導(dǎo)教師:學(xué)號:姓名:提交日期:姓名課程設(shè)計成績評語:評價內(nèi)容不及格及格中良優(yōu)表達(dá)精練,格式準(zhǔn)確,基本無錯別字內(nèi)容完整,思路清晰,結(jié)構(gòu)嚴(yán)謹(jǐn),設(shè)計科學(xué),可操作性強(qiáng)程序能完成課程設(shè)計任務(wù)書所規(guī)定的任務(wù),功能完善,獨(dú)立分析和解決問題能力較好。代碼簡潔,算法清晰,可讀性強(qiáng)無抄襲現(xiàn)象且課程設(shè)計報告體會深刻指導(dǎo)教師(簽名)年月日1系統(tǒng)功能要求(需求分析):采用結(jié)構(gòu)體數(shù)組或文件形式存儲職工的信息,每個職工應(yīng)包含如下幾方面的信息:職工號、姓名、性別、所屬二級單位、所學(xué)專業(yè)、職稱、月工資,電話號碼。軟件由主函數(shù)(含歡迎界面)和下列6個功能模塊組成:(1)減少一個職工(需指定要刪除職工的職工號);(2)增加一個職工號(需輸入要增加職工號的所有信息);(3)查找一個職工號的信息(需指定職工號或電話號碼);(4)統(tǒng)計指定二級單位的職工人數(shù)、工資總額;(5)按職工的工資多少對職工排序(6)退出程序的運(yùn)行。(正文宋體4號,行距固定為20英鎊)2系統(tǒng)總體(概要)設(shè)計思想(1)開發(fā)與設(shè)計的總體思想高校在職職工管理軟件設(shè)計算法說明:STEP1預(yù)處理,定義結(jié)構(gòu)體STEP2進(jìn)入歡迎界面STEP3選擇某一種功能STEP4根據(jù)提示輸入一個字母STEP5對于輸入的字母編輯關(guān)于刪除、增加、排序、查找、統(tǒng)計功能的函數(shù)STEP6如果輸入的字母表示退出,退出系統(tǒng)高校在職職工管理軟件系體模塊結(jié)構(gòu)圖高校在職職工管理軟件工資人數(shù)退出程序排序功能統(tǒng)計功能查找功能增加功能刪除功能歡迎界面工資人數(shù)退出程序排序功能統(tǒng)計功能查找功能增加功能刪除功能歡迎界面(3)系統(tǒng)文件及函數(shù)組成、功能(參考P154的表12-1)源文件函數(shù)名及其成分功能workers.cmain總控函數(shù)庫函數(shù)及函數(shù)原型聲明引用庫函數(shù)及函數(shù)常數(shù)提供常數(shù)add_disp.cshowTable輸出表頭display顯示所有職工信息函數(shù)addRecord在當(dāng)前表的末尾增加新的信息handle_menu.chandle_menu菜單處理函數(shù)menu_select.cmenu_select菜單選擇函數(shù)quit結(jié)束運(yùn)行,退出que_remv.cfindRecord查找指定記錄函數(shù)showTable打印查詢到的職工信息removeRecord刪除記錄函數(shù)copyRecord將src指向的一條記錄復(fù)制給dest指向的記錄save_load.csaveRecords文件存儲操作函數(shù)loadRecords文件讀取操作函數(shù)sort_#cTongji統(tǒng)計職工資料showTable打印統(tǒng)計二級單位的職工人數(shù)和工資總額sortInfo職工信息排序函數(shù)workers.h常數(shù)提供常數(shù)結(jié)構(gòu)聲明職工信息結(jié)構(gòu)庫函數(shù)及函數(shù)原型聲明引用庫函數(shù)及函數(shù)3系統(tǒng)詳細(xì)設(shè)計(1)函數(shù)的描述a.本程序總共有8個文件:workers.hworkers.cadd_disp.csav_load.cque_remv.csort_#chandle_menu.cmenu_select.cb.所涉及到的函數(shù)如下:(1).菜單處理函數(shù)函數(shù)原型:voidhandle_menu(void);//菜單處理功能:處理選擇的菜單命令參數(shù):void返回值:void工作方式:根據(jù)命令,調(diào)用相應(yīng)函數(shù)要求:給出結(jié)束信息(2).菜單選擇函數(shù)函數(shù)原型:intmenu_select(void);//菜單選擇功能:接受用戶選擇的命令代碼參數(shù):void返回值:int工作方式:返回命令代碼的整數(shù)值要求:只允許選擇規(guī)定鍵,如果輸入不合要求,則提醒用戶重新輸入(3).刪除記錄函數(shù)函數(shù)原型:voidremoveRecord(void);//刪除指定的記錄功能:刪除內(nèi)存數(shù)組內(nèi)存數(shù)組中的指定記錄參數(shù):void返回值:void工作方式:根據(jù)給定的關(guān)鍵字,查找符合的記錄并刪除之。要求:將后面的記錄前移,同時改變名次并給出相關(guān)信息(4).增加信息函數(shù)函數(shù)原型:voidaddRecord(void);//在表尾追加職工信息功能:增加記錄參數(shù):void返回值:void工作方式:從尾部開始逐個追加記錄要求:將新的記錄追加在記錄尾部,并對記錄進(jìn)行計數(shù)(5).顯示所有學(xué)生信息函數(shù)函數(shù)原型:voiddisplay(void);//顯示信息功能:顯示內(nèi)存里的記錄信息參數(shù):void返回值:void工作方式:從頭部開始逐個顯示記錄內(nèi)容要求:報告是否有記錄及記錄條數(shù)和內(nèi)容(6).查詢指定職工信息函數(shù)函數(shù)原型:voidqueryInfo(void);//查詢指定的職工信息功能:將一個文件的內(nèi)容追加到另一個文件的尾部參數(shù):void返回值:void工作方式:可以按照職工號或電話號碼來查詢要求:打印查詢到的學(xué)生的信息或給出相關(guān)信息。(7).對職工信息進(jìn)行排序函數(shù)原型:voidsort(void);//對職工進(jìn)行排序功能:對職工信息進(jìn)行排序參數(shù):void返回值:void工作方式:按職工工資多少對職工進(jìn)行排序要求:打印排序結(jié)果(8).統(tǒng)計二級單位人數(shù)和工資總額函數(shù)原型:voidtongji(void);//統(tǒng)計函數(shù)功能:統(tǒng)計二級單位人數(shù)和工資總額參數(shù):void返回值:void工作方式:指定二級單位,然后再進(jìn)行統(tǒng)計要求:統(tǒng)計后打印(9).文件存儲操作函數(shù)函數(shù)原型:intsaveRecords(void);//文件存儲功能:將記錄存入默認(rèn)文件wor_info或者指定文件參數(shù):void返回值:成功0,失敗-1工作方式:數(shù)組records被保存至指定文件要求:報告是否有記錄可存,是否能正常建立或打開文件,根據(jù)要求執(zhí)行存入操作并報告存入記錄的條數(shù)(10).文件讀取操作函數(shù)函數(shù)原型:intloadRecords(void);//文件讀取功能:默認(rèn)文件wor_info或者指定文件的記錄取入內(nèi)存參數(shù):void返回值:成功0,失敗-1工作方式:records為從指定文件中讀取出的記錄要求:報告是否有記錄可存,是否能夠正常打開文件,是否覆蓋已有記錄以及讀取記錄的條數(shù)(11).結(jié)束程序運(yùn)行函數(shù)函數(shù)原型:voidquit(void);//結(jié)束運(yùn)行功能:結(jié)束程序運(yùn)行參數(shù):void返回值:void工作方式:根據(jù)要求決定在退出前是否將修改的記錄存入文件要求:結(jié)束運(yùn)行之前,詢問是否對修改的記錄進(jìn)行存儲(12).輸出表頭函數(shù)函數(shù)原型:voidshowTable(void);//輸出表頭功能:輸出表頭信息參數(shù):void返回值:void工作方式:輸出一行表頭信息要求:輸出一行表頭信息(13).查找指定記錄函數(shù)原型函數(shù)原型:intfindRecord(char*target,inttargetType,intfrom);功能:查找指定的記錄參數(shù):char*target欲查找記錄的某一項(xiàng)與target相同;inttargetType通過什么來查找;intfrom從第from個記錄開始查找返回值:int(找到的記錄的序號),若找不到則返回-1工作方式:根據(jù)給定的關(guān)鍵字,查找符合記錄的序號要求:找不到則返回-1(2)主要函數(shù)流程圖(2個以上,可參考材P148的寫法)addRecordquit(3)編碼(附后)4系統(tǒng)測試內(nèi)容包括:程序調(diào)試情況(8幅以上測試結(jié)果截圖);總結(jié):本人C語言程序設(shè)計基礎(chǔ)較差,因此,在寫這個程序的時候遇到了諸多困難,多虧同學(xué)的幫忙我的程序才可以成功地運(yùn)行,真的是自己之前不夠刻苦,用功,寫代碼這種東西還是要多練,多做題才能有收獲,在寫那個登陸賬號和密碼的函數(shù)的時候,我調(diào)試了好久都沒發(fā)現(xiàn)錯誤,最后。在同學(xué)的幫助下,成功發(fā)現(xiàn)是數(shù)組那里除了問題,居然少打了個中括號。所以本人數(shù)組和指針方面的知識點(diǎn)欠缺,還需要多多練習(xí)。雖然這份程序是參考學(xué)生成績那份來找靈感的,還是出現(xiàn)了好多錯誤,最大的收貨就是看到程序成功運(yùn)行的那一刻。6結(jié)束語感謝李惠坤同學(xué)和林柔佳同學(xué)熱心幫助。參考文獻(xiàn)[1]譚浩強(qiáng),C程序設(shè)計(第二版),北京:清華大學(xué)出版社,2001.1(左對齊,宋體,五號)[2]陳朔鷹,C語言程序設(shè)計習(xí)題集,北京:人民郵電出版社,2003.67附錄(代碼)#include<stdio.h>#include<stdlib.h>//#include<iostream>#include<conio.h>//conio是ConsoleInput/Output(控制臺輸入輸出)的簡寫,其中定義了通過控制臺進(jìn)行數(shù)據(jù)輸入和數(shù)據(jù)輸出的函數(shù),主要是一些用戶通過按鍵盤產(chǎn)生的對應(yīng)操作,比如getch()函數(shù)等等。#include<string.h>#defineINITIAL_SIZE100//數(shù)組初始大小#defineINCR_SIZE50//數(shù)組每次增加的大小structworkers_info{//每個職工包含的信息 charnum[10];//職工號 charname[10];//姓名 charsex[3];//性別 charpost[10];//所屬二級單位 charmajor[10];//所學(xué)專業(yè) charjobname[10];//職稱 floatsalary;//月工資 charphonenum[11];//電話號碼}wk[10];typedefstructworkers_infoWrkInfo;externintnumWrks;//記錄職工數(shù)externWrkInfo*records;//記錄職工信息的數(shù)組externcharsavedTag;//信息是否已保存的標(biāo)志,0為已保存,1為未保存externintarraySize;//數(shù)組大小voidhandle_menu(void);//菜單處理intmenu_select(void);//菜單選擇voidremoveRecord(void);//刪除指定的記錄voidaddRecord(void);//在表尾追加職工信息voiddisplay(void);//顯示信息voidqueryInfo(void);//查詢指定的職工信息voidsortInfo(void);//對職工進(jìn)行排序voidTongji(void);//統(tǒng)計函數(shù)intsaveRecords(void);//文件存儲intloadRecords(void);//文件讀取voidquit(void);//結(jié)束運(yùn)行voidshowTable(void);//輸出表頭intfindRecord(char*target,inttargetType,intfrom);//char*target欲查找記錄的某一項(xiàng)與target相同;inttargetType通過什么來查找;intfrom從第from個記錄開始查找#include"workers.h"/**************************初始化*************************/intnumWrks=0;//記錄的職工數(shù)WrkInfo*records=NULL;//記錄職工信息的數(shù)據(jù)charsavedTag=0;//信息是否已保存的標(biāo)志,1為未保存,0為保存intarraySize;//數(shù)組大小/**********************主函數(shù)********************/voidmain(){//初始化數(shù)組 chara[20]=,b[20]="0808",str[20];records=(WrkInfo*)malloc(sizeof(WrkInfo)*INITIAL_SIZE);system("color5A");if(records==NULL){printf("memoryfail!");exit(-1);}arraySize=INITIAL_SIZE;//printf("\n");printf("\t**********************************\n");printf("\t*這是一個*\n");printf("\t*高校在職職工簡單管理程序*\n");printf("\t*可以對職工信息進(jìn)行管理*\n");printf("\t*歡迎使用管理程序*\n");printf("\t**********************************\n");printf("\n");printf("\n");printf("請輸入用戶名<gt;和密碼<0808>");while(1){ scanf("%s",str); if(!strcmp(str,a)){ scanf("%s",str); if(!strcmp(str,b)){ printf("登陸成功"); handle_menu(); } elseprintf("登陸失敗"); }}}voidcopyRecord(WrkInfo*src,WrkInfo*dest);/**********************菜單處理函數(shù)********************/#include"workers.h"voidhandle_menu(void){for(;;){switch(menu_select()){case1:removeRecord();break;case2:addRecord();break;case3:queryInfo();break;case4:Tongji();break;case5:sortInfo();break;case6:display();break;case7:saveRecords();break;case8:loadRecords();break;case9:quit();}}}#include"workers.h"/**********************菜單選擇函數(shù)menu_select********************/intmenu_select(){chars[2];intcn=0;printf("\n");printf("\t1.刪除職工信息\n");printf("\t2.增加職工信息\n");printf("\t3.查詢職工信息\n");printf("\t4.統(tǒng)計職工信息\n");printf("\t5.對職工信息進(jìn)行排序\n");printf("\t6.顯示職工信息\n");printf("\t7.保存學(xué)生信息至記錄文件\n");printf("\t8.從記錄文件讀取學(xué)生信息\n");printf("\t9.結(jié)束運(yùn)行\(zhòng)n");printf("\n\t左邊數(shù)字對應(yīng)功能選擇,請選1-9:\n\n");for(;;){gets(s);cn=atoi(s);if(cn<1||cn>9)printf("\n\t輸入錯誤,重選1-9:\n\n");elsebreak;}returncn;}/**********************結(jié)束運(yùn)行,退出*參數(shù)void********************/voidquit(void){charstr[5];if(savedTag==1){printf("是否保存原來的記錄?(Y/n)");gets(str);if(str[0]!='n'&&str[0]!='N')saveRecords();}free(records);exit(0);}#include"workers.h"/**********************輸出表頭********************/voidshowTable(void){printf("職工號\t姓名\t性別\t所屬二級單位\t所學(xué)專業(yè)\t職稱\t月工資\t電話號碼\n");}/**********************顯示所有職工信息函數(shù)********************/voiddisplay(void){inti;if(numWrks==0){printf("沒有可供顯示的記錄!");return;}showTable();for(i=0;i<numWrks;i++){//打印職工信息printf("%s\t%s\t%s\t%s\t",records[i].num,records[i].name,records[i].sex,records[i].post,records[i].major);printf("%s\t%s\t%f\t%s\t",records[i].jobname,records[i].salary,records[i].phonenum);//打印滿10個記錄后停下來if(i%9==0&&i!=0){printf("輸入任一字符后繼續(xù)...\n");getch();printf("\n\n");showTable();}}}/*****************************************在當(dāng)前表的末尾增加新的信息結(jié)果:*records中將記錄的信息,如果數(shù)組*大小不夠,會重新申請數(shù)組空間****************************************/voidaddRecord(void){ //records=realloc(records,(arraySize+INCR_SIZE)*sizeof(WrkInfo)); charstr[10]; intj; floatmark,sum;if(numWrks==0) printf("原來沒有記錄,現(xiàn)在建立新表\n"); else printf("下面在當(dāng)前表的末尾增加新的信息\n"); while(1)//()中為1表示無條件反復(fù)循環(huán) { printf("您將要添加一組信息,確定嗎?(Y/n)"); gets(str); if(str[0]=='n'||str[0]=='N')//不再添加新的信息 break; if(numWrks>=arraySize)//現(xiàn)在的數(shù)組空間不足,需要重新申請空間 { records=realloc(records,(arraySize+INCR_SIZE)*sizeof(WrkInfo));//新空間大小變?yōu)?arraySize+INCR_SIZE)記錄大小,即在原來基礎(chǔ)上增加INCR_SIZE個記錄大小 if(records==NULL) { printf("memoryfailed!"); exit(-1); } arraySize=arraySize+INCR_SIZE;//arraySize修改為新空間可保存的記錄數(shù) }printf("請輸入職工號:");gets(records[numWrks].num);printf("請輸入姓名:");gets(records[numWrks].name);printf("請輸入性別(0為女,1為男):");gets(str);if(str[0]=='0')strcpy(records[numWrks].sex,"女");elsestrcpy(records[numWrks].sex,"男");printf("請輸入所屬二級單位:");gets(records[numWrks].post);printf("請輸入所學(xué)專業(yè):");gets(records[numWrks].major);printf("請輸入職稱:");gets(records[numWrks].jobname);printf("請輸入月工資:");gets(str);records[numWrks].salary=(float)atof(str);printf("請輸入電話號碼:");gets(records[numWrks].phonenum);numWrks++;}printf("現(xiàn)在一共有%d條信息\n",numWrks);savedTag=1;}#include"workers.h"/**********************************************查找指定記錄函數(shù)*參數(shù):target:欲查找記錄的某一項(xiàng)與target相同*targetType:表明通過那一項(xiàng)來查找,0為學(xué)號,1為姓名,2為名次*from:從第from個記錄開始找*返回:找到的記錄的序號,若找不到則返回-1*********************************************/intfindRecord(char*target,inttargetType,intfrom){inti;for(i=from;i<=numWrks;i++){if((targetType==0&&strcmp(target,records[i].num)==0)||(targetType==1&&strcmp(target,records[i].name)==0)||(targetType==2&&strcmp(target,records[i].post)==0))returni;}return-1;}voidqueryInfo(void){charstr[5];chartarget[20];inttype;intcount;inti;if(numWrks==0){printf("沒有可供查詢的記錄");return;}while(1){printf("請輸入查詢的方式:(直接輸入回車則結(jié)束查詢)\n");printf("1.按職工號\n");printf("2.按電話號碼\n");gets(str);if(strlen(str)==0)break;if(str[0]=='1'){printf("請輸入欲查詢的職工的職工號:");gets(target);type=0;}else{printf("請輸入欲查詢的職工的電話號碼:");gets(target);type=1;}i=findRecord(target,type,0);if(i==1){//打印查詢到的職工信息showTable();}count=0;while(i!=-1){count++;printf("%s\t%s\t%s\t%s\t%s\t%s\t%f\t%s",records[i].num,records[i].name,records[i].sex,records[i].post,records[i].major,records[i].jobname,records[i].salary,records[i].phonenum);i=findRecord(target,type,i+1);}if(count==0)printf("沒有符合條件的職工!\n");elseprintf("一共找到了%d名職工的信息\n\n",count);}}/******************************刪除記錄函數(shù)***************************/voidremoveRecord(void){charstr[5];chartarget[20];inttype;inti,j;if(numWrks==0){printf("沒有可供刪除的記錄\n\n");return;}while(1){printf("直接輸入回車則結(jié)束移除操作)\n");printf("請輸入欲刪除的記錄的職工號:\n");gets(target);type=0;i=findRecord(target,type,0);if(i==-1)printf("沒有符合條件的職工!\n");while(i!=-1){showTable();printf("%s\t%s\t%s\t%s\t%s\t%s\t%f\t%s",records[i].num,records[i].name,records[i].sex,records[i].post,records[i].major,records[i].jobname,records[i].salary,records[i].phonenum);printf("確定要刪除這個職工的信息嗎?(y/N)");gets(str);if(str[0]=='y'||str[0]=='Y'){numWrks--;printf("該職工信息已經(jīng)刪除.\n");return;//將后面的記錄前移for(j=i;j<numWrks;j++){copyRecord(&records[j+1],&records[j]);}}//取下一個符合條件的記錄i=findRecord(target,type,i+1);}}savedTag=1;}/******************************************將src指向的一條記錄復(fù)制給dest指向的記錄*****************************************/voidcopyRecord(WrkInfo*src,WrkInfo*dest){strcpy(dest->num,src->num);strcpy(dest->name,src->name);strcpy(dest->sex,src->sex);strcpy(dest->post,src->post);strcpy(dest->major,src->major);strcpy(dest->jobname,src->jobname);dest->salary=src->salary;strcpy(dest->phonenum,src->phonenum);}#include"workers.h"/**********************************************查找指定記錄函數(shù)*參數(shù):target:欲查找記錄的某一項(xiàng)與target相同*targetType:表明通過那一項(xiàng)來查找,0為學(xué)號,1為姓名,2為名次*from:從第from個記錄開始找*返回:找到的記錄的序號,若找不到則返回-1*********************************************/intfindRecord(char*target,inttargetType,intfrom){inti;for(i=from;i<=numWrks;i++){if((targetType==0&&strcmp(target,records[i].num)==0)||(targetType==1&&strcmp(target,records[i].name)==0)||(targetType==2&&strcmp(target,records[i].post)==0))returni;}return-1;}voidqueryInfo(void){charstr[5];chartarget[20];inttype;intcount;inti;if(numWrks==0){printf("沒有可供查詢的記錄");return;}while(1){printf("請輸入查詢的方式:(直接輸入回車則結(jié)束查詢)\n");printf("1.按職工號\n");printf("2.按電話號碼\n");gets(str);if(strlen(str)==0)break;if(str[0]=='1'){printf("請輸入欲查詢的職工的職工號:");gets(target);type=0;}else{printf("請輸入欲查詢的職工的電話號碼:");gets(target);type=1;}i=findRecord(target,type,0);if(i==1){//打印查詢到的職工信息showTable();}count=0;while(i!=-1){count++;printf("%s\t%s\t%s\t%s\t%s\t%s\t%f\t%s",records[i].num,records[i].name,records[i].sex,records[i].post,records[i].major,records[i].jobname,records[i].salary,records[i].phonenum);i=findRecord(target,type,i+1);}if(count==0)printf("沒有符合條件的職工!\n");elseprintf("一共找到了%d名職工的信息\n\n",count);}}/******************************刪除記錄函數(shù)***************************/voidremoveRecord(void){charstr[5];chartarget[20];inttype;inti,j;if(numWrks==0){printf("沒有可供刪除的記錄\n\n");return;}while(1){printf("直接輸入回車則結(jié)束移除操作)\n");printf("請輸入欲刪除的記錄的職工號:\n");gets(target);type=0;i=findRecord(target,type,0);if(i==-1)printf("沒有符合條件的職工!\n");while(i!=-1){showTable();printf("%s\t%s\t%s\t%s\t%s\t%s\t%f\t%s",records[i].num,records[i].name,records[i].sex,records[i].post,records[i].major,records[i].jobname,records[i].salary,records[i].phonenum);printf("確定要刪除這個職工的信息嗎?(y/N)");gets(str);if(str[0]=='y'||str[0]=='Y'){numWrks--;printf("該職工信息已經(jīng)刪除.\n");return;//將后面的記錄前移for(j=i;j<numWrks;j++){copyRecord(&records[j+1],&records[j]);}}//取下一個符合條件的記錄i=findRecord(target,type,i+1);}}savedTag=1;}/******************************************將src指向的一條記錄復(fù)制給dest指向的記錄*****************************************/voidcopyRecord(WrkInfo*src,WrkInfo*dest){strcpy(dest->num,src->num);strcpy(dest->name,src->name);strcpy(dest->sex,src->sex);strcpy(dest->post,src->post);strcpy(dest->major,src->major);strcpy(dest->jobname,src->jobname);dest->salary=src->salary;strcpy(dest->phonenum,src->phonenum);}#include"workers.h"/***********************************文件存儲操作函數(shù)*結(jié)果:數(shù)組records被保存至指定文件返回:成功0,失敗-1*************************************/intsaveRecords(){FILE*fp;charfname[30];if(numWrks==0){printf("沒有記錄可存!");return-1;}printf("請輸入要存入的文件名(直接回車選擇文件wrk_info):");gets(fname);if(strlen(fname)==0)strcpy(fname,"wrk_info");if((fp=fopen(fname,"wb"))==NULL){printf("不能存入文件!\n");return-1;}printf("\n存文件...\n");fwrite(records,sizeof(WrkInfo)*numWrks,1,fp);fclose(fp);printf("%d條記錄已經(jīng)存入文件,請繼續(xù)操作.\n",numWrks);savedTag=0;//更新是否已保存的標(biāo)記return0;}/*********************************************文件讀取操作函數(shù)*結(jié)果:records為從指定文件中讀取出的記錄*返回:成功0,失敗-1**********************************************/intloadRecords(void){FILE*fp;charfname[30];charstr[5];if(numWrks!=0&&savedTag==0){printf("請選擇您是要覆蓋現(xiàn)有的記錄(Y),還是要將");printf("讀取的記錄添加到現(xiàn)有記錄之后(n)?\n");printf("直接回車則覆蓋現(xiàn)有記錄\n");gets(str);if(str[0]=='n'||str[0]=='N'){//將讀取的記錄添加到現(xiàn)有記錄之后savedTag=1;}else{if(savedTag==1){//覆蓋現(xiàn)有記錄printf("讀取文件將會更改原來的記錄,");printf("是否保存原來的記錄?(Y/n)");gets(str);if(str[0]!='n'&&str[0]!='N')saveRecords();}numWrks=0;}}printf("請輸入要讀取的文件名(直接回車選擇文件wrk_info):");gets(fname);if(strlen(fname)==0)strcpy(fname,"wrk_info");if((fp=fopen(fname,"rb"))==NULL){printf("打不開文件!請重新選擇\n");return-1;}printf("\n取文件...\n");while(!feof(fp)){//現(xiàn)在的數(shù)組空間不足,需要重新申請空間

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論