版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> C語言課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告</p><p> 目的(本次 課程設(shè)計(jì) 所涉及并要求掌握的知識(shí)點(diǎn)。)</p><p> 本次課程設(shè)計(jì)主要涉及c語言的基礎(chǔ)語法,以及指針、文件函數(shù)、結(jié)構(gòu)體、函數(shù)調(diào)用等知識(shí)點(diǎn)。</p><p> 二、使用環(huán)境 (本次上機(jī)實(shí)踐所使用的平臺(tái)和相關(guān)軟件。 )</p><p> 主要采用windows
2、 xp系統(tǒng)環(huán)境+visual c++6.0編譯環(huán)境</p><p> 三、內(nèi)容與設(shè)計(jì)思想 </p><p> ?。? .設(shè)計(jì)思路 2 .主要數(shù)據(jù)結(jié)構(gòu) 3 .主要代碼結(jié)構(gòu) 4 .主要代碼段分析 。 )</p><p><b> 設(shè)計(jì)思路</b></p><p><b> 1、需求分析</b>&l
3、t;/p><p> 人事檔案信息采用文件存儲(chǔ),因而要提供文件的輸入輸出操作;根據(jù)學(xué)院人事的變動(dòng)情況,添加刪除記錄,因而要提供文件的添加刪除操作;根據(jù)編號和姓名進(jìn)項(xiàng)查詢,所以要提供文件的查找操作;高級編輯功能,就是提供文件的修改操作;統(tǒng)計(jì)功能要提供統(tǒng)計(jì)操作;排序功能要提供用排序算法對文件記錄的排序;另外還要提供鍵盤式選擇菜單以實(shí)現(xiàn)功能選擇。</p><p><b> 2、總體設(shè)計(jì)&
4、lt;/b></p><p> 整體設(shè)計(jì)為數(shù)據(jù)輸入模塊、數(shù)據(jù)添加模塊、數(shù)據(jù)刪除模塊、數(shù)據(jù)查詢模塊、數(shù)據(jù)修改模塊、數(shù)據(jù)統(tǒng)計(jì)模塊、數(shù)據(jù)排序模塊。</p><p><b> 主要數(shù)據(jù)結(jié)構(gòu)</b></p><p> 數(shù)據(jù)結(jié)構(gòu)采用結(jié)構(gòu)體:</p><p> Struct personnelArchiveInfo<
5、;/p><p><b> {</b></p><p> Char No[10]; //編號</p><p> Char name[10]; //姓名</p><p> Int sex; //性別</p><p> Int age;
6、//年齡</p><p> Char job[10]; //職務(wù)</p><p> Char post[10]; //職稱</p><p> Char politic[10]; //政治面貌</p><p> Char edu_level[10]; //最高學(xué)歷</p><p> C
7、har period[10]; //任職時(shí)間</p><p> Char start_time[10]; //來院時(shí)間</p><p> Char type[10]; //人員類別</p><p><b> }PAInfo;</b></p><p><b> 主要代碼結(jié)構(gòu)</b
8、></p><p><b> 1.主函數(shù)</b></p><p> 為使系統(tǒng)執(zhí)行完每部分功能后能夠方便的回到系統(tǒng)主界面,main()函數(shù)設(shè)計(jì)的較簡單,只包含一個(gè)menu()函數(shù),其余的全部功能都通過menu()函數(shù)調(diào)用來實(shí)現(xiàn),并通過menu()函數(shù)的遞歸調(diào)用實(shí)現(xiàn)返回主界面的功能。</p><p> void main()</p
9、><p><b> { </b></p><p> int flag=0;</p><p> int choose=0;</p><p> FILE *fp=NULL;</p><p> char yesorno;</p><p> system("col
10、or B9");</p><p> if((fp=fopen("employee1.txt","rb+"))==NULL)</p><p><b> {</b></p><p> printf("\n=========>提示:文件不存在,是否要?jiǎng)?chuàng)建一個(gè)?(y)\n"
11、;);</p><p> scanf("%c",&yesorno);</p><p> if(yesorno=='y'||yesorno=='Y')</p><p><b> { </b></p><p> //這里僅為了建立文件</p>
12、<p> fp=fopen("employee1.txt","wb+");</p><p> fclose(fp); //關(guān)閉fp所指的文件,釋放文件緩沖區(qū)</p><p><b> }</b></p><p><b> else</b></p>&l
13、t;p><b> exit(0);</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> Number=read_file(PAInfo); //要
14、是文件已經(jīng)有數(shù)據(jù) 將數(shù)據(jù)初始化到數(shù)組中</p><p><b> }</b></p><p> system("cls"); </p><p> system("color B9");</p><p><b> while(1) </b></p
15、><p><b> { </b></p><p><b> menu();</b></p><p> system("color 20");</p><p> printf("\t====>請選擇:");</p><p>
16、scanf("%d",&choose);</p><p> system("cls");</p><p> switch(choose)</p><p><b> {</b></p><p><b> case 0: </b></p&g
17、t;<p> exit(0); //退出 </p><p><b> break; </b></p><p><b> case 1: </b></p><p><b> input();</b></p><p>
18、 fh();//增加職工信息</p><p><b> break; </b></p><p><b> case 2:</b></p><p><b> add();</b></p><p> fh();//查看職工信息</p><p>
19、; break; </p><p><b> case 3: </b></p><p> zc_query();</p><p> fh();// 查找 </p><p><b> break;</b></p><p><b>
20、 case 4:</b></p><p> num_del(); </p><p> fh();//刪除 </p><p><b> break;</b></p><p><b> case 5:</b></p><p><b>
21、 tongji();</b></p><p><b> fh();//統(tǒng)計(jì)</b></p><p><b> break;</b></p><p><b> case 6: </b></p><p><b> sort();</b>
22、</p><p> fh();//排序 </p><p><b> break;</b></p><p><b> case 7: </b></p><p> num_modify();</p><p> fh();//修改后返回</p><p
23、><b> break; </b></p><p><b> case 8:</b></p><p><b> save();</b></p><p> fh();//保存 </p><p><b> break;</b></p
24、><p><b> case 9:</b></p><p><b> disp();</b></p><p><b> fh();</b></p><p> break;//顯示</p><p><b> default:</b&g
25、t;</p><p><b> break;</b></p><p><b> }</b></p><p> fflush(stdin);</p><p> getchar();</p><p> system("cls");</p>
26、<p><b> }</b></p><p><b> }</b></p><p><b> 2.各功能模塊設(shè)計(jì)</b></p><p><b> ?。?)數(shù)據(jù)輸入模塊</b></p><p> 看各個(gè)數(shù)據(jù)信息,編號、姓名、性別、年齡
27、、職務(wù)、職稱、政治面貌、最高學(xué)歷、任職時(shí)間、來院時(shí)間、人員類別,在文件中以文本形式存放,每條記錄對應(yīng)一個(gè)人員的信息,可以方便信息的管理;而數(shù)據(jù)讀進(jìn)內(nèi)存中時(shí),可以以結(jié)構(gòu)體的形式,每一個(gè)結(jié)構(gòu)體包含了一個(gè)人員的全部信息,多的人員的信息組成了一個(gè)結(jié)構(gòu)體數(shù)組。定義如下:</p><p> char NO[10];</p><p> char name[15];</p><p&
28、gt; char sex[5];</p><p><b> int age;</b></p><p> char job[20];</p><p> char post[20];</p><p> char edu_level[10];</p><p> char politic[20
29、]; //政治面貌</p><p> char period[10]; //任職時(shí)間</p><p> char start_time[10]; //來院時(shí)間</p><p> char type[10]; //人員類別</p><p><b> ?。?)數(shù)據(jù)添加模塊</b></p&
30、gt;<p> 該模塊的功能是擁護(hù)需要增加新的員工記錄,從鍵盤輸入并逐條寫入到原來的文件中去,其中輸入號碼是要防止號碼重復(fù),重復(fù)時(shí)報(bào)告錯(cuò)誤,重新輸入。為方便用戶管理和查看,該模塊采用的方式是用先把原來文件中的數(shù)據(jù)讀入內(nèi)存,保存在內(nèi)存中,然后在內(nèi)存中的數(shù)據(jù)后面增加新的數(shù)據(jù),操作完成后用寫的方式打開文件,用覆蓋的方式寫入。</p><p> void add()//增加職工 </p>
31、<p><b> {</b></p><p> int numberTemp=0;</p><p><b> int i=0;</b></p><p> struct personnelArchiveInfo temp; //臨時(shí)保存信息</p><p> printf(&quo
32、t;請輸入要增加人事信息的個(gè)數(shù):");</p><p> scanf("%d",&numberTemp);</p><p> for(i=0;i<numberTemp;i++)</p><p><b> {</b></p><p> printf("輸入第%d
33、個(gè)人事信息\n",i+1);</p><p> printf("編號:");</p><p> scanf("%s",temp.NO);</p><p> printf("姓名:");</p><p> scanf("%s",temp.name)
34、;</p><p> printf("性別:");</p><p> scanf("%s",temp.sex);</p><p> printf("年齡:");</p><p> scanf("%d",&temp.age);</p>
35、<p> printf("部門:");</p><p> scanf("%s",temp.job);</p><p> printf("職稱:");</p><p> scanf("%s",temp.post);</p><p> printf
36、("學(xué)歷:");</p><p> scanf("%s",temp.edu_level);</p><p> printf("政治面貌:");</p><p> scanf("%s",&temp.politic);</p><p> printf(
37、"任職時(shí)間:");</p><p> scanf("%s",&temp.period);</p><p> printf("來院時(shí)間:");</p><p> scanf("%s",&temp.start_time);</p><p> p
38、rintf("人員類別:");</p><p> scanf("%s",&temp. type);</p><p> PAInfo[Number++]=temp; //將剛添加的寫入到數(shù)組</p><p> write_file(&temp); //將剛添加的寫入到文件</p><p&
39、gt;<b> }</b></p><p> printf("添加成功\n");</p><p><b> }</b></p><p><b> ?。?)數(shù)據(jù)刪除模塊</b></p><p> 該模塊的運(yùn)行方式與修改模塊類似,首先分屏顯示所有人員的記
40、錄,顯示完所有的記錄后,由用戶輸入要?jiǎng)h除的人員的號碼,根據(jù)號碼查找相應(yīng)的記錄并將結(jié)果顯示出來,經(jīng)用戶確認(rèn)后刪除,刪除的方法是將文件中的數(shù)據(jù)讀入內(nèi)存,賦給相應(yīng)的結(jié)構(gòu)體,并將結(jié)構(gòu)體數(shù)組中將刪除的后面的數(shù)據(jù)賦給前一個(gè)結(jié)構(gòu)體,然后將相應(yīng)數(shù)據(jù)寫入文件并保存;</p><p> void num_del()//按編號刪除 </p><p><b> {</b></p&g
41、t;<p> FILE *fp=NULL;</p><p> char gh[60];</p><p><b> int i=0;</b></p><p><b> int j=0;</b></p><p> printf("請輸入要?jiǎng)h除的人事編號:");
42、</p><p> scanf("%s",gh);</p><p> for(i=0;i<Number;i++)</p><p><b> {</b></p><p> if (strcmp(gh,PAInfo[i].NO)==0) //如果查找到就刪除</p><p
43、><b> {</b></p><p> for (j=i;j<Number-1;j++)</p><p><b> {</b></p><p> PAInfo[j]=PAInfo[j+1];</p><p><b> }</b></p>&
44、lt;p><b> Number--;</b></p><p><b> }</b></p><p><b> }</b></p><p> //將剩余數(shù)據(jù)寫入文件 重新一寫的方式打開文件 把以前的數(shù)據(jù)擦除了</p><p> fp=fopen("e
45、mployee1.dat","wb");</p><p> for (i=0;i<Number;i++)</p><p><b> {</b></p><p> fwrite(&PAInfo[i],sizeof(struct personnelArchiveInfo),1,fp);</p&
46、gt;<p><b> }</b></p><p> fclose(fp);</p><p> printf("刪除成功;\n");</p><p><b> }</b></p><p><b> ?。?)數(shù)據(jù)查詢模塊</b></
47、p><p> void zc_query()//按職稱查找 </p><p><b> { </b></p><p> char post[20];</p><p><b> int i=0;</b></p><p> printf("請輸入要查找人事職
48、稱:");</p><p> scanf("%s",post);</p><p> system("cls");</p><p> printf("\t編號\t姓名\t性別\t年齡\t部門\t職稱\t學(xué)歷\t政治面貌\t任職時(shí)間\t來院時(shí)間\t人員類別\n");</p><
49、;p> for (i=0;i<Number;i++)</p><p><b> {</b></p><p> if (strcmp(post,PAInfo[i].post)==0)</p><p><b> {</b></p><p> printf("\t%s\t%
50、s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",PAInfo[i].NO,PAInfo[i].name,PAInfo[i].sex,PAInfo[i].age,PAInfo[i].job,PAInfo[i].post,PAInfo[i].edu_level,PAInfo[i].politic,PAInfo[i].period,PAInfo[i].start_time,PAInfo[i].t
51、ype);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> ?。?)數(shù)據(jù)修改模塊</b></p><p> 該模塊的功能是顯示所有信
52、息,考慮到記錄較多,采用分屏顯示,顯示完所有的記錄后,由用戶輸入需要修改的人員的號碼,查找成功后,顯示查找結(jié)果,并詢問擁護(hù)修改人員的哪部分記錄,根據(jù)用戶選擇修改相應(yīng)的信息,然后保存修改后的結(jié)果:</p><p> void num_modify() //修改職工信息</p><p><b> {</b></p><p> FILE *fp
53、=NULL;</p><p> char gh[60];</p><p><b> int i=0;</b></p><p> int changeIndex=0; //changeIndex 改變標(biāo)記</p><p> int index=0;</p><p> printf(&quo
54、t;請輸入要修改的人事編號:");</p><p> scanf("%s",gh);</p><p> for (i=0;i<Number;i++)</p><p><b> {</b></p><p> if (strcmp(gh,PAInfo[i].NO)==0) //比
55、較輸入編號和數(shù)組中已有編號</p><p><b> {</b></p><p> changeIndex=i; //保存要修改的人的下標(biāo)</p><p><b> break;</b></p><p><b> }</b></p><p>&
56、lt;b> }</b></p><p> printf("\t編號\t姓名\t性別\t年齡\t部門\t職稱\t學(xué)歷\t政治面貌\t任職時(shí)間\t來院時(shí)間\t人員類別\n");</p><p> printf("\n\n");</p><p> printf("\t%s\t%s\t%s\t%d\
57、t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",PAInfo[changeIndex].NO,PAInfo[changeIndex].name,PAInfo[changeIndex].sex,PAInfo[changeIndex].age,PAInfo[changeIndex].job,PAInfo[changeIndex].post,PAInfo[changeIndex].edu_level,PAInfo[
58、changeIndex].politic,PAInfo[changeIndex].period,PAInfo[changeIndex].start_time,PAInfo[changeIndex].type);</p><p> printf("請重新輸入該人事信息");</p><p> printf("編號:");</p>&l
59、t;p> scanf("%s",PAInfo[changeIndex].NO);</p><p> printf("姓名:");</p><p> scanf("%s",PAInfo[changeIndex].name);</p><p> printf("性別:");&l
60、t;/p><p> scanf("%s",PAInfo[changeIndex].sex);</p><p> printf("年齡: ");</p><p> scanf("%d",&PAInfo[changeIndex].age); </p><p> printf(
61、"部門:");</p><p> scanf("%d",PAInfo[changeIndex].job);</p><p> printf("職稱:");</p><p> scanf("%s",PAInfo[changeIndex].post);</p><p
62、> printf("學(xué)歷:");</p><p> scanf("%s",PAInfo[changeIndex].edu_level);</p><p> printf("政治面貌:");</p><p> scanf("%s",&PAInfo[changeInde
63、x].politic);</p><p> printf("任職時(shí)間:");</p><p> scanf("%s",&PAInfo[changeIndex].period);</p><p> printf("來院時(shí)間:");</p><p> scanf(&quo
64、t;%s",&PAInfo[changeIndex].start_time);</p><p> printf("人員類別:");</p><p> scanf("%s",&PAInfo[changeIndex]. type);</p><p> //信息修改后重新更新文件里面的數(shù)據(jù) 以保持?jǐn)?shù)據(jù)
65、一致性</p><p> fp=fopen("employee1.txt","wb+");</p><p> for (i=0;i<Number;i++)</p><p><b> {</b></p><p> fwrite(&PAInfo[i],sizeof
66、(struct personnelArchiveInfo),1,fp); //把ptr所指向n*size個(gè)字節(jié)輸入到fp所指向的文件中</p><p><b> }</b></p><p> fclose(fp);</p><p> printf("\t=======>修改成功\n");</p>
67、<p><b> }</b></p><p><b> ?。?)數(shù)據(jù)統(tǒng)計(jì)模塊</b></p><p> 該模塊的功能是按照用戶的要求統(tǒng)計(jì)出滿足符合條件的所有記錄的個(gè)數(shù),并將滿足條件的記錄顯示出來。該模塊沒有涉及到文件的保存,所以將文件用只讀的方式打開,可以防止操作過程中數(shù)據(jù)的丟失:</p><p> v
68、oid tongji()//統(tǒng)計(jì) </p><p><b> {</b></p><p> int i,m,k,max,min;</p><p> double sum=0.0;</p><p> for(i=0;i<Number;i++)</p><p><b> {&
69、lt;/b></p><p> sum=sum+PAInfo[i].age;</p><p><b> }</b></p><p> printf("全體人事總年齡為:%f\n",sum);</p><p> printf("平均年齡為:%f\n",sum/Numbe
70、r); </p><p> i=0;m=0;max=0;</p><p> max=PAInfo[m].age;</p><p> for(i=1;i<Number;i++)</p><p><b> {</b></p><p> if (PAInfo[i].age>max
71、)</p><p><b> m=i;</b></p><p> max=PAInfo[m].age;</p><p><b> } </b></p><p> printf("最高年齡為:%d\n",max);</p><p> printf(
72、"\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",PAInfo[m].NO,PAInfo[m].name,PAInfo[m].sex,PAInfo[m].age,PAInfo[m].job,PAInfo[m].post,PAInfo[m].edu_level,PAInfo[m].politic,PAInfo[m].period,PAInfo[m].start_tim
73、e,PAInfo[m].type); </p><p> i=0;k=0;min=0;</p><p> min=PAInfo[0].age;</p><p> for(i=1;i<Number;i++)</p><p><b> {</b></p><p> if (PAInfo
74、[i].age<min)</p><p><b> k=i;</b></p><p> min=PAInfo[k].age;</p><p><b> }</b></p><p> printf("最低年齡:%d\n",min);</p><p&
75、gt; printf("\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",PAInfo[k].NO,PAInfo[k].name,PAInfo[k].sex,PAInfo[k].age,PAInfo[k].job,PAInfo[k].post,PAInfo[k].edu_level,PAInfo[m].politic,PAInfo[m].period,PAInfo[
76、m].start_time,PAInfo[m].type); </p><p><b> }</b></p><p><b> ?。?)數(shù)據(jù)排序模塊</b></p><p> 該模塊的功能是要求將記錄按照年齡或者來院時(shí)間進(jìn)行排序,總體結(jié)構(gòu)是先用sort()函數(shù)將文件中的數(shù)據(jù)調(diào)入內(nèi)存,然后按照選擇法排序,并將結(jié)果顯示出來
77、,然后將排序后的結(jié)果保存:</p><p> void sort()//排序 </p><p><b> {</b></p><p> struct personnelArchiveInfo t;</p><p> int wantNUmber=0;</p><p><b>
78、int i=0;</b></p><p><b> int j=0;</b></p><p><b> int k=0;</b></p><p> for(i=0;i<Number-1;i++)</p><p><b> {k=i;</b></p
79、><p> for(j=i+1;j<Number;j++)</p><p><b> {</b></p><p> if(PAInfo[j].age>PAInfo[k].age)</p><p><b> k=j;</b></p><p><b>
80、 }</b></p><p><b> if(k!=i)</b></p><p><b> {</b></p><p> t=PAInfo[i];</p><p> PAInfo[i]=PAInfo[k];</p><p> PAInfo[k]=t;&l
81、t;/p><p><b> }</b></p><p><b> }</b></p><p> printf("你想輸出前幾名人事信息:");</p><p> scanf("%d",&wantNUmber);</p><p&g
82、t; if (wantNUmber>Number)</p><p><b> {</b></p><p> wantNUmber=Number;</p><p><b> }</b></p><p> printf("\t編號\t姓名\t性別\t年齡\t部門\t職稱\t學(xué)歷
83、\t政治面貌\t任職時(shí)間\t來院時(shí)間\t人員類別\n");</p><p> for(i=0;i<wantNUmber;i++)</p><p><b> {</b></p><p> printf("\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",P
84、AInfo[i].NO,PAInfo[i].name,PAInfo[i].sex,PAInfo[i].age,PAInfo[i].job,PAInfo[i].post,PAInfo[i].edu_level,PAInfo[i].politic,PAInfo[i].period,PAInfo[i].start_time,PAInfo[i].type); </p><p><b> } </b>
85、;</p><p><b> }</b></p><p> 四、調(diào)試過程 (1 .測試數(shù)據(jù)設(shè)計(jì) 2 .測試結(jié)果分析 )</p><p><b> 主界面:</b></p><p><b> 選擇1:</b></p><p><b>
86、選擇2:</b></p><p><b> 選擇3:</b></p><p><b> 選擇6:</b></p><p><b> 選擇4:</b></p><p><b> 選擇9:</b></p><p>&
87、lt;b> 五、總結(jié) </b></p><p> ?。O(shè)計(jì)中遇到的問題及解決過程 </p><p> 在向文件中添加數(shù)據(jù)的時(shí)候,要在打開文件的時(shí)候指定正確的文件操作方式,一開始指定文件的操作方式是w,w 只寫方式,若文件存在,則原有內(nèi)容會(huì)被清除;若文件不存在,則會(huì)建立文件,所以每次添加完一條數(shù)據(jù)后再次插入一條數(shù)據(jù)前一條數(shù)據(jù)會(huì)自動(dòng)清空,這樣文件中保存的始終是最后輸入的一
88、條數(shù)據(jù),這不是理想的結(jié)果,后來經(jīng)過查閱技術(shù)文檔,發(fā)現(xiàn)還有另外文件操作方式即追加a,a:追加方式打開只寫文件,只允許進(jìn)行寫操作,若文件存在,則添加的內(nèi)容放在文件末尾;若不存在,則建立文件。通過這種方式操作文件,每添加的一條數(shù)據(jù)都會(huì)自動(dòng)追加到前一條數(shù)據(jù)的后面,這種的處理方式是題目所要求的,實(shí)現(xiàn)了多條數(shù)據(jù)的存儲(chǔ)。</p><p> .設(shè)計(jì)中產(chǎn)生的錯(cuò)誤及原因分析 </p><p> 經(jīng)過這一次
89、系統(tǒng)設(shè)計(jì)編碼的過程,我覺得我C語言的文件這一知識(shí)點(diǎn)掌握的極為薄弱,導(dǎo)致不能很好的利用一些函數(shù)處理問題。而且,有些時(shí)候,腦袋中對問題有求解的思路,但是無法一旦著手寫代碼的時(shí)候卻寫不出來,我覺得這是我對C語言一些關(guān)鍵知識(shí)點(diǎn)的理解不夠透徹,還有就是,平時(shí)編寫C語言的代碼量很少,以至于編碼的時(shí)候不能順手拈來。</p><p> 3 .設(shè)計(jì)體會(huì)和收獲。</p><p> 三周的C語言課程設(shè)計(jì)結(jié)
90、束了,在這八天的時(shí)間里,我自己獨(dú)立完成了一個(gè)程序從構(gòu)思結(jié)構(gòu),到編寫代碼,然后上機(jī)調(diào)試運(yùn)行的過程,感覺自己收獲很大。通過解決一個(gè)又一個(gè)的問題,熟悉了C語言的應(yīng)用,對計(jì)算機(jī)語言應(yīng)用的理解又深了一層,在老師的指導(dǎo)下,學(xué)會(huì)了模塊設(shè)計(jì)的方法,用流程圖表示算法,掌握了用C語言進(jìn)行程序設(shè)計(jì)的能力。</p><p> 在設(shè)計(jì)過程中,我理解了對于一個(gè)較大的程序,不可能一次編寫出一個(gè)較大的系統(tǒng),通常要采取自頂向下的設(shè)計(jì)思想,先設(shè)計(jì)
91、主函數(shù),再通過完善一個(gè)個(gè)的功能模塊來完成程序的設(shè)計(jì)過程,在設(shè)計(jì)過程中要充分理解整個(gè)程序的設(shè)計(jì)思路,采用逐步細(xì)化的方式來完成整個(gè)程序。</p><p><b> 六、附錄 </b></p><p><b> 1、原代碼 </b></p><p> #include <stdio.h></p>
92、<p> #include <stdlib.h></p><p> #include <string.h></p><p> struct personnelArchiveInfo</p><p><b> {</b></p><p> char NO[10];</p&
93、gt;<p> char name[15];</p><p> char sex[5];</p><p><b> int age;</b></p><p> char job[20];</p><p> char post[20];</p><p> char edu_
94、level[10];</p><p> char politic[20]; //政治面貌</p><p> char period[10]; //任職時(shí)間</p><p> char start_time[10]; //來院時(shí)間</p><p> char type[10]; //人員類別</p>
95、<p><b> };</b></p><p> int read_file(struct personnelArchiveInfo PAInfo[]);</p><p> void menu();</p><p> void write_file(struct personnelArchiveInfo PAInfo[])
96、;</p><p> void add(); </p><p> void input();</p><p> void zc_query(); //按職稱查詢</p><p> void num_del(); //按編號刪除</p><p> void tongji();
97、//統(tǒng)計(jì)</p><p> void sort(); //排序</p><p> void num_modify(); //按編號修改職工信息</p><p> void save(); //保存信息</p><p> void disp(); //顯示職工信息</p><p&
98、gt; void fh(); //返回主菜單</p><p> struct personnelArchiveInfo PAInfo[300]; //這個(gè)數(shù)組用來保存所有的職工信息 和文件里面的一致</p><p> int Number=0; //記錄總的職工人數(shù) 也就是數(shù)組/文件里面的職工人數(shù)</p><p> void me
99、nu()</p><p> { system("cls");</p><p> system("color B9");</p><p> printf("\t****************************************************************\n");&
100、lt;/p><p> printf("\t* *\n");</p><p> printf("\t* 人事信息管理系統(tǒng) *\n");</
101、p><p> printf("\t* *\n");</p><p> printf("\t* [1] 輸入人事信息 [2] 增加人事信息 *\n");</p>&
102、lt;p> printf("\t* [3] 查找人事信息 [4] 刪除人事信息 *\n");</p><p> printf("\t* [5] 統(tǒng)計(jì)人事信息 [6] 人事年齡排列 *\n");</p><p> printf(&qu
103、ot;\t* [7] 修改人事信息 [8] 保存人事信息 *\n");</p><p> printf("\t* [9] 顯示人事信息 [0] 退出管理系統(tǒng) *\n");</p><p> printf("\t*
104、 *\n");</p><p> printf("\t****************************************************************\n");</p><p> printf("\t***********
105、*****************數(shù)信院******************************\n");</p><p><b> }</b></p><p> void main()</p><p><b> { </b></p><p> int flag=0;</
106、p><p> int choose=0;</p><p> FILE *fp=NULL;</p><p> char yesorno;</p><p> system("color B9");</p><p> if((fp=fopen("employee1.txt",&q
107、uot;rb+"))==NULL)</p><p><b> {</b></p><p> printf("\n=========>提示:文件不存在,是否要?jiǎng)?chuàng)建一個(gè)?(y)\n");</p><p> scanf("%c",&yesorno);</p><
108、p> if(yesorno=='y'||yesorno=='Y')</p><p><b> { </b></p><p> //這里僅為了建立文件</p><p> fp=fopen("employee1.txt","wb+");</p>&l
109、t;p> fclose(fp); //關(guān)閉fp所指的文件,釋放文件緩沖區(qū)</p><p><b> }</b></p><p><b> else</b></p><p><b> exit(0);</b></p><p><b> }</b&g
110、t;</p><p><b> else</b></p><p><b> {</b></p><p> Number=read_file(PAInfo); //要是文件已經(jīng)有數(shù)據(jù) 將數(shù)據(jù)初始化到數(shù)組中</p><p><b> }</b></p><
111、;p> system("cls"); </p><p> system("color B9");</p><p><b> while(1) </b></p><p><b> { </b></p><p><b> menu();
112、</b></p><p> system("color 20");</p><p> printf("\t====>請選擇:");</p><p> scanf("%d",&choose);</p><p> system("cls&quo
113、t;);</p><p> switch(choose)</p><p><b> {</b></p><p><b> case 0: </b></p><p> exit(0); //退出 </p><p><b&g
114、t; break; </b></p><p><b> case 1: </b></p><p><b> input();</b></p><p> fh();//增加職工信息</p><p><b> break; </b></p>
115、<p><b> case 2:</b></p><p><b> add();</b></p><p> fh();//查看職工信息</p><p> break; </p><p><b> case 3: </b></p&g
116、t;<p> zc_query();</p><p> fh();// 查找 </p><p><b> break;</b></p><p><b> case 4:</b></p><p> num_del(); </p><p&
117、gt; fh();//刪除 </p><p><b> break;</b></p><p><b> case 5:</b></p><p><b> tongji();</b></p><p><b> fh();//統(tǒng)計(jì)</b></
118、p><p><b> break;</b></p><p><b> case 6: </b></p><p><b> sort();</b></p><p> fh();//排序 </p><p><b> break;</b
119、></p><p><b> case 7: </b></p><p> num_modify();</p><p> fh();//修改后返回</p><p><b> break; </b></p><p><b> case 8:<
120、/b></p><p><b> save();</b></p><p> fh();//保存 </p><p><b> break;</b></p><p><b> case 9:</b></p><p><b> di
121、sp();</b></p><p><b> fh();</b></p><p> break;//顯示</p><p><b> default:</b></p><p><b> break;</b></p><p><b&
122、gt; }</b></p><p> fflush(stdin);</p><p> getchar();</p><p> system("cls");</p><p><b> }</b></p><p><b> }</b>&
123、lt;/p><p> void save()</p><p><b> {</b></p><p> printf("\t===>程序在運(yùn)行時(shí)已自動(dòng)保存.....\n");</p><p><b> }</b></p><p><b>
124、 void fh()</b></p><p><b> {</b></p><p> printf("\t===>按Enter鍵返回主菜單\n");</p><p><b> }</b></p><p> void num_modify() //修改職
125、工信息</p><p><b> {</b></p><p> FILE *fp=NULL;</p><p> char gh[60];</p><p><b> int i=0;</b></p><p> int changeIndex=0; //changeIn
126、dex 改變標(biāo)記</p><p> int index=0;</p><p> printf("請輸入要修改的人事編號:");</p><p> scanf("%s",gh);</p><p> for (i=0;i<Number;i++)</p><p><
127、b> {</b></p><p> if (strcmp(gh,PAInfo[i].NO)==0) //比較輸入編號和數(shù)組中已有編號</p><p><b> {</b></p><p> changeIndex=i; //保存要修改的人的下標(biāo)</p><p><b> brea
128、k;</b></p><p><b> }</b></p><p><b> }</b></p><p> printf("\t編號\t姓名\t性別\t年齡\t部門\t職稱\t學(xué)歷\t政治面貌\t任職時(shí)間\t來院時(shí)間\t人員類別\n");</p><p> p
129、rintf("\n\n");</p><p> printf("\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",PAInfo[changeIndex].NO,PAInfo[changeIndex].name,PAInfo[changeIndex].sex,PAInfo[changeIndex].age,PAInfo[ch
130、angeIndex].job,PAInfo[changeIndex].post,PAInfo[changeIndex].edu_level,PAInfo[changeIndex].politic,PAInfo[changeIndex].period,PAInfo[changeIndex].start_time,PAInfo[changeIndex].type);</p><p> printf("請重
131、新輸入該人事信息");</p><p> printf("編號:");</p><p> scanf("%s",PAInfo[changeIndex].NO);</p><p> printf("姓名:");</p><p> scanf("%s"
132、;,PAInfo[changeIndex].name);</p><p> printf("性別:");</p><p> scanf("%s",PAInfo[changeIndex].sex);</p><p> printf("年齡: ");</p><p> scanf
133、("%d",&PAInfo[changeIndex].age); </p><p> printf("部門:");</p><p> scanf("%d",PAInfo[changeIndex].job);</p><p> printf("職稱:");</p>
134、<p> scanf("%s",PAInfo[changeIndex].post);</p><p> printf("學(xué)歷:");</p><p> scanf("%s",PAInfo[changeIndex].edu_level);</p><p> printf("政治
135、面貌:");</p><p> scanf("%s",&PAInfo[changeIndex].politic);</p><p> printf("任職時(shí)間:");</p><p> scanf("%s",&PAInfo[changeIndex].period);</
136、p><p> printf("來院時(shí)間:");</p><p> scanf("%s",&PAInfo[changeIndex].start_time);</p><p> printf("人員類別:");</p><p> scanf("%s",&a
137、mp;PAInfo[changeIndex]. type);</p><p> //信息修改后重新更新文件里面的數(shù)據(jù) 以保持?jǐn)?shù)據(jù)一致性</p><p> fp=fopen("employee1.txt","wb+");</p><p> for (i=0;i<Number;i++)</p><p
138、><b> {</b></p><p> fwrite(&PAInfo[i],sizeof(struct personnelArchiveInfo),1,fp); //把ptr所指向n*size個(gè)字節(jié)輸入到fp所指向的文件中</p><p><b> }</b></p><p> fclose(
139、fp);</p><p> printf("\t=======>修改成功\n");</p><p><b> }</b></p><p> void disp() //輸出所有職工信息 </p><p><b> {</b></p><p>
140、<b> int i=0;</b></p><p> system("color 2");</p><p> printf("\t編號\t\t姓名\t性別\t年齡\t部門\t職稱\t學(xué)歷\t政治面貌\t任職時(shí)間\t來院時(shí)間\t人員類別\n");</p><p> printf("\n\n
141、");</p><p> for (i=0;i<Number;i++)</p><p><b> {</b></p><p> printf("\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t\t%s\t\t%s\t\t%s\n\n",PAInfo[i].NO,PAInfo[i].n
142、ame,PAInfo[i].sex,PAInfo[i].age,PAInfo[i].job,PAInfo[i].post,PAInfo[i].edu_level,PAInfo[i].politic,PAInfo[i].period,PAInfo[i].start_time,PAInfo[i].type); </p><p><b> }</b></p><p>&l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計(jì)——人事管理系統(tǒng)
- c語言課程設(shè)計(jì)-人事管理系統(tǒng)
- 人事管理系統(tǒng)c語言課程設(shè)計(jì)報(bào)告
- c語言課程設(shè)計(jì)人事管理系統(tǒng)
- c語言課程設(shè)計(jì)人事管理系統(tǒng)
- c語言課程設(shè)計(jì)人事管理系統(tǒng)
- c語言課程設(shè)計(jì)(論文)-高校人事管理系統(tǒng)設(shè)計(jì)
- c++課程設(shè)計(jì) 高校人事管理系統(tǒng)
- c++課程設(shè)計(jì)人事管理系統(tǒng)
- c++課程設(shè)計(jì)---公司人事管理系統(tǒng)
- c語言職工人事管理系統(tǒng)課程設(shè)計(jì)報(bào)告書
- c++課程設(shè)計(jì)報(bào)告--人事管理系統(tǒng)
- 人事管理系統(tǒng)課程設(shè)計(jì)
- 人事管理系統(tǒng)課程設(shè)計(jì)
- 高校人事管理系統(tǒng)課程設(shè)計(jì)c++版
- 課程設(shè)計(jì)--人事管理系統(tǒng)設(shè)計(jì)
- 企業(yè)人事管理系統(tǒng)課程設(shè)計(jì)
- 人事管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)(企業(yè)人事管理系統(tǒng))
- 課程設(shè)計(jì)---企業(yè)人事管理系統(tǒng)
評論
0/150
提交評論