版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計報告</b></p><p> 題 目:學(xué)生成績管理系統(tǒng)</p><p> 設(shè) 計 者: </p><p><b> 專業(yè)班級: </b></p><p> 學(xué) 號: </p><p>
2、; 指導(dǎo)教師: </p><p><b> 所屬院系:</b></p><p><b> 設(shè)計需求說明:</b></p><p> 一、職工工資管理系統(tǒng)功能設(shè)計要求</p><p> 1. 輸入記錄:將每一個學(xué)生的姓名、學(xué)號等數(shù)據(jù)作為一個記錄。該軟件能建立一個新的數(shù)據(jù)文
3、件或給已建立好的數(shù)據(jù)文件增加記錄。</p><p> 2. 顯示記錄:根據(jù)用戶提供的記錄或者根據(jù)學(xué)生姓名顯示一個或幾個學(xué)生的成績信息。</p><p> 3. 修改記錄:可以對數(shù)據(jù)文件的任意記錄的數(shù)據(jù)進行修改并在修改前后對記錄內(nèi)容進行顯示。</p><p> 4.查找記錄:可以對數(shù)據(jù)文件的任意記錄的數(shù)據(jù)進行查找并在查找前后對記錄內(nèi)容進行顯示。</p>
4、;<p> 5. 刪除記錄:可刪除數(shù)據(jù)文件中的任一記錄。</p><p> 6.恢復(fù)記錄:能恢復(fù)被刪除的任一記錄。</p><p><b> 7. 統(tǒng)計: </b></p><p> (A) 計算各個學(xué)生成績,</p><p> (B)統(tǒng)計學(xué)生成績的優(yōu)良中差的比例</p><
5、p> (C)按字符表格形式打印全部學(xué)生信息表</p><p> 8.保存數(shù)據(jù)文件功能。</p><p> 9.打開數(shù)據(jù)文件功能。</p><p> 經(jīng)過逐層逐塊、不斷細(xì)化、求精過程,編寫程序并進行測試、驗證,可以逐個模塊地分開調(diào)試,并通過文件包含或用工程文件的形式進行逐步聯(lián)合調(diào)試。程序運行結(jié)果如下表所示(記錄個數(shù)至少8 個)。</p>&
6、lt;p><b> 實驗基本步驟:</b></p><p><b> 工作程序分析</b></p><p> ?、佥斎耄狠斎雽W(xué)生基本信息</p><p> 通過結(jié)構(gòu)體的數(shù)組來進行操作,先頭定義數(shù)組em[],先輸入需要輸入的學(xué)生人數(shù)m,然后進入循環(huán),每次循環(huán)將各項輸入結(jié)構(gòu)體數(shù)組對應(yīng)項的對應(yīng)成員中,當(dāng)循環(huán)次數(shù)等于人
7、數(shù)時,完成全部學(xué)生的資料輸入,退出循環(huán)。同時將數(shù)據(jù)儲存在ckerk_list文件中并自動保存至磁盤。</p><p> 注:如首次使用,尚未輸入數(shù)據(jù),請先輸入數(shù)據(jù)。輸入的數(shù)據(jù)將自動保存。</p><p> 再次選擇輸入功能時原數(shù)據(jù)將被覆蓋。</p><p> ?、诒4妫簩⑤斎氲馁Y料存入磁盤</p><p> 讀取文件clerk_list
8、,若文件不存在,打印“打開失敗并退出。若存在,則通過循環(huán)語句將輸入到結(jié)構(gòu)體數(shù)組的數(shù)據(jù)逐個輸入磁盤。</p><p> ③讀?。鹤x取磁盤中的資料</p><p> 打開文件clerk_list ,若文件不存在,打印“打開失敗”并退出。若存在,讀取文件中的數(shù)據(jù),并返回學(xué)生人數(shù)。</p><p> ?、茱@示:顯示學(xué)生資料</p><p>
9、 先通過讀取函數(shù)的返回值確定學(xué)生人數(shù)m,再通過循環(huán)將學(xué)生資料逐個打印,當(dāng)循環(huán)次數(shù)達到m時退出循環(huán)。其中總成績由程序計算</p><p> ?、輨h除:刪除某學(xué)生的資料</p><p> 打印學(xué)生資料并提示輸入要刪除職工的姓名,輸入后若該學(xué)生不存在則打印“查無此人”;若存在,則顯示該學(xué)生資料并詢問是否確定刪除。若確定,則刪除。刪除時,通過對比輸入的姓名與資料中的姓名做對比從而確定要刪除的項i
10、,從第i項開始,將后一項的各成員的值賦給前一項各對應(yīng)的成員,完成對第i項的刪除。</p><p> ?、尢砑樱禾砑有碌膶W(xué)生資料而不覆蓋原有資料</p><p> 打印原有學(xué)生資料,詢問要添加的學(xué)生人數(shù)并詢問是否確定添加。逐個逐項輸入學(xué)生信息,之后程序計算其總成績。完成后顯示“添加成功”,打印新的學(xué)生資料并自動保存。添加的方法為:定義一個相同類型的結(jié)構(gòu)體數(shù)組,將原有項復(fù)制后增添新的項,并保
11、存新的數(shù)組。</p><p> ?、卟檎遥喊碔D好查詢與按姓名查找學(xué)生資料</p><p> 根據(jù)提示輸入要查詢的ID號或姓名,程序通過循環(huán)語句將輸入的數(shù)字與以保存的結(jié)構(gòu)體數(shù)組中的數(shù)據(jù)對比,若相同,則打印“已找到”及該學(xué)生的資料;當(dāng)循環(huán)次數(shù)等于人數(shù)時結(jié)束循環(huán),若至結(jié)束循環(huán)時也沒有找到相同的,則打印“查無此人”。</p><p> ?、嘈薷模盒薷奶囟▽W(xué)生的特定資料&
12、lt;/p><p> 打印員工信息并提示輸入要修改資料的學(xué)生姓名。按提示確定要修改,確定要修改的項目,輸入要修改成的結(jié)果并將該結(jié)果賦給對應(yīng)項的對應(yīng)學(xué)生,完成對特定學(xué)生特定項目的修改。</p><p><b> ?、峤y(tǒng)計 </b></p><p> 通過循環(huán)對結(jié)構(gòu)體數(shù)組中的每一項經(jīng)行統(tǒng)計</p><p><b>
13、 源代碼:</b></p><p> #include<stdio.h></p><p> #include<windows.h></p><p> #include<string.h></p><p> #include<conio.h></p><p
14、> #define N 100</p><p> struct clerk</p><p><b> {</b></p><p> int num; </p><p> char name[20]; </p><p> int jbgz; <
15、/p><p> int zwgz; </p><p> int jt; </p><p> int yb; </p><p> int gjj; </p><p> int total; </p><p> }em[1
16、00]; </p><p> void menu();</p><p> void input();</p><p> void save(int);</p><p> void display();</p><p> void del();</p><p> void
17、add();</p><p> void search();</p><p> void search_num();</p><p> void search_name();</p><p> void modify(); </p><p> void sta();</p><p>
18、 void start(); /*定義各函數(shù)*/</p><p> void start() //開始界面</p><p><b> {</b></p><p> system("cls");//清屏</p><p> system("color 1E"); //設(shè)置文字
19、顏色為黃色 背景色藍色</p><p> printf("\n\n\n\n\n\n");</p><p> printf("********************************************************************************");</p><p> printf
20、("*****************************歡迎使用學(xué)生成績管理系統(tǒng)*****************************");</p><p> printf("*********************************************************************************\n\n\n\n\n");
21、</p><p> printf("\t\t\t\t 制作: \n");</p><p> printf("\t\t\t\t 2011年6月\n\n\n\n");</p><p> printf("\t\t\t ***按任意鍵進入***\n");</p>&l
22、t;p><b> }</b></p><p> void menu() //菜單界面</p><p><b> {</b></p><p> system("cls");</p><p> system("color 1F"); </p&
23、gt;<p> printf("***菜單***\n\n");</p><p> printf(">>>>>>>>>>>>>>>>>>>>>>>>> 1 輸入 \n\n");</p>&l
24、t;p> printf(">>>>>>>>>>>>>>>>>>>>>>>>> 2 顯示 \n\n");</p><p> printf(">>>>>>>>>>&
25、gt;>>>>>>>>>>>>>> 3 查找 \n\n");</p><p> printf(">>>>>>>>>>>>>>>>>>>>>>>>> 4
26、 刪除 \n\n");</p><p> printf(">>>>>>>>>>>>>>>>>>>>>>>>> 5 添加 \n\n");</p><p> printf(">>&g
27、t;>>>>>>>>>>>>>>>>>>>>>> 6 修改 \n\n");</p><p> printf(">>>>>>>>>>>>>>>>>>&
28、gt;>>>>>> 7 統(tǒng)計 \n\n");</p><p> printf(">>>>>>>>>>>>>>>>>>>>>>>>> 8 退出 \n\n");</p><
29、;p> printf("說明:*如首次使用 尚未輸入數(shù)據(jù) 請先輸入數(shù)據(jù) \n *輸入的數(shù)據(jù)將自動保存 \n *再次選擇輸入功能時原數(shù)據(jù)將被覆蓋\n\n");</p><p><b> }</b></p><p> void input() /*錄入函數(shù)*/</p><p><b>
30、; {</b></p><p><b> int i,m;</b></p><p> system("cls");</p><p> printf("學(xué)生人數(shù)(1--100):\n");</p><p> scanf("%d",&m
31、);</p><p> for (i=0;i<m;i++)</p><p><b> {</b></p><p> printf("請輸入學(xué)號: ");</p><p> scanf("%d",&em[i].num);</p><p>
32、 printf("請輸入姓名: ");</p><p> scanf("%s",&em[i].name);</p><p> getchar();</p><p> printf("請輸入成績: ");</p><p> scanf("%d"
33、,&em[i].jbgz);</p><p> printf("請輸入年齡: ");</p><p> scanf("%d",&em[i].zwgz);</p><p> printf("請輸入名次: ");</p><p> scanf("%d
34、",&em[i].jt);</p><p> printf("請輸入醫(yī)療保險: ");</p><p> scanf("%d",&em[i].yb);</p><p> printf("請輸入公積金: ");</p><p> scanf(&qu
35、ot;%d",&em[i].gjj);</p><p> em[i].total=((em[i].jbgz)+(em[i].zwgz)+(em[i].jt)-(em[i].yb)-(em[i].gjj));</p><p> printf("\n");</p><p><b> }</b></p
36、><p> printf("\n創(chuàng)建完畢!\n");</p><p> save(m);//保存學(xué)生人數(shù)m</p><p><b> }</b></p><p> void save(int m) /*保存文件函數(shù)*/</p><p><b> {</b
37、></p><p><b> int i;</b></p><p> FILE*fp; //聲明fp是指針,用來指向FILE類型的對象</p><p> if ((fp=fopen("clerk_list","wb"))==NULL) //打開學(xué)生列表文件為空</p><
38、;p><b> {</b></p><p> printf ("打開失敗\n");</p><p><b> exit(0);</b></p><p><b> }</b></p><p> for (i=0;i<m;i++) /*將內(nèi)
39、存中學(xué)生的信息輸出到磁盤文件中去*/</p><p> if (fwrite(&em[i],sizeof(struct clerk),1,fp)!=1)//寫入數(shù)據(jù)塊 &em[i]:是要輸出數(shù)據(jù)的地址 sizeof(struct clerk):獲取一個單體的長度 1:數(shù)據(jù)項的個數(shù) fp:目標(biāo)文件指針</p><p> printf("文件讀寫錯誤\n
40、");</p><p> fclose(fp);// 緩沖區(qū)內(nèi)最后剩余的數(shù)據(jù)輸出到磁盤文件中,并釋放文件指針和有關(guān)的緩沖區(qū)</p><p><b> }</b></p><p> int load() /*導(dǎo)入函數(shù) int型*/</p><p><b> {</b></p
41、><p><b> FILE*fp;</b></p><p><b> int i=0;</b></p><p> if((fp=fopen("clerk_list","rb"))==NULL)</p><p><b> {</b>&
42、lt;/p><p> printf ("cannot open file\n");</p><p><b> exit(0);</b></p><p><b> }</b></p><p><b> else </b></p><p&
43、gt;<b> {</b></p><p><b> do </b></p><p><b> {</b></p><p> fread(&em[i],sizeof(struct clerk),1,fp); //讀取</p><p><b> i++
44、;</b></p><p><b> }</b></p><p> while(feof(fp)==0); //檢測流上的文件結(jié)束符</p><p><b> }</b></p><p> fclose(fp);</p><p> return(i-1
45、);//返回人數(shù)</p><p><b> }</b></p><p> void display() /*瀏覽函數(shù)*/</p><p><b> {</b></p><p> int i,sum=0;</p><p> int m=load();</p&g
46、t;<p> system("cls");</p><p> printf("學(xué)生 姓名 基本工資 職務(wù)工資 津貼 醫(yī)療保險 公積金 總工資 \n");</p><p> for(i=0;i<m;i++) /*m為輸入部分的學(xué)生人數(shù)*/</p><p> {printf(&
47、quot;\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total);</p><p> sum+=em[i].total;//計算學(xué)生</p><p><b>
48、; }</b></p><p> printf("\n\n學(xué)生平均成績?yōu)椋?d \n",sum/m);</p><p><b> }</b></p><p> void del() /*刪除函數(shù) */</p><p><b> {</b></p&g
49、t;<p> int m=load();</p><p> int i,j,n,t,button;</p><p> char name[20];</p><p> printf("\n 原來的學(xué)生信息:\n");</p><p> display(); //顯示刪除前的學(xué)生信息</p>
50、<p> printf("\n");</p><p> printf("按姓名刪除:\n");</p><p> scanf("%s",name);</p><p> for(button=1,i=0;button&&i<m;i++)//主函數(shù)中確定button=
51、=1時各函數(shù)才可以被調(diào)用</p><p><b> {</b></p><p> if(strcmp(em[i].name,name)==0)//按員工姓名查找到某學(xué)生 并調(diào)出其資料</p><p><b> {</b></p><p> printf("\n此人原始記錄為:\n&
52、quot;);//顯示選定學(xué)生的信息</p><p> printf("學(xué)生號 姓名 基本工資 職務(wù)工資 津貼 醫(yī)療保險 公積金 總工資 \n");</p><p> printf("\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].na
53、me,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total); </p><p> printf("\n確定刪除 請按1,不刪除請按0\n"); </p><p> scanf("%d",&n);</p><p><b> if(
54、n==1)</b></p><p><b> {</b></p><p> for(j=i;j<m-1;j++)//從第i項開始 將后一項的各成員的值賦給前一項各對應(yīng)的成員 完成對第i項的刪除</p><p><b> {</b></p><p> strcpy(em[j]
55、.name,em[j+1].name);</p><p> em[j].num=em[j+1].num;</p><p> em[j].jbgz=em[j+1].jbgz;</p><p> em[j].zwgz=em[j+1].zwgz;</p><p> em[j].jt=em[j+1].jt;</p><p&
56、gt; em[j].yb=em[j+1].yb; </p><p> em[j].gjj=em[j+1].gjj;</p><p> em[j].total=em[j+1].total;</p><p><b> }</b></p><p> .button=0;</p><p>&
57、lt;b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if(!button)//button==0表明刪除已完成</p><p> m=m-1;//總員工數(shù)減少一人</p><p>&
58、lt;b> else</b></p><p> printf("\n查無此人!\n");</p><p> printf("\n 刪除后的所有職工信息:\n");</p><p> save(m); //調(diào)用保存函數(shù)</p><p> display(); //調(diào)用
59、瀏覽函數(shù)</p><p> printf("\n繼續(xù)刪除請按1,不再刪除請按0\n");</p><p> scanf("%d",&t);</p><p><b> switch(t)</b></p><p><b> {</b></p&
60、gt;<p> case 1:del();break;</p><p> case 0:break;</p><p> default :break;</p><p><b> }</b></p><p><b> }</b></p><p> vo
61、id add()/*添加函數(shù)*/</p><p><b> {</b></p><p><b> FILE*fp;</b></p><p><b> int n;</b></p><p> int count=0;</p><p><b&g
62、t; int i;</b></p><p> int m=load();</p><p> printf("\n 原來的學(xué)生信息:\n");</p><p> display(); </p><p> printf("\n");</p><p> fp=
63、fopen("emploee_list","a");</p><p> printf("請輸入想增加的學(xué)生數(shù):\n");//確定要加入的學(xué)生數(shù)n</p><p> scanf("%d",&n);</p><p> for (i=m;i<(m+n);i++)//添加n名
64、學(xué)生的信息</p><p><b> {</b></p><p> printf("\n 請輸入新增加學(xué)生的信息:\n");</p><p> printf("請輸入學(xué)生號: ");</p><p> scanf("%d",&em[i].num
65、);</p><p> printf("\n");</p><p> printf("請輸入姓名: ");</p><p> scanf("%s",em[i].name);</p><p> getchar();</p><p> printf(&
66、quot;請輸入基本工資: ");</p><p> scanf("\t%d",&em[i].jbgz);</p><p> printf("請輸入職務(wù)工資: ");</p><p> scanf("%d",&em[i].zwgz);</p><p&g
67、t; printf("請輸入津貼: ");</p><p> scanf("%d",&em[i].jt);</p><p> printf("請輸入醫(yī)療保險: ");</p><p> scanf("\t%d",&em[i].yb);</p>&
68、lt;p> printf("請輸入公積金: ");</p><p> scanf("%d",&em[i].gjj);</p><p> em[i].total=( em[i].jbgz+ em[i].zwgz + em[i].jt- em[i].yb- em[i].gjj);//計算該員工總工資</p><p
69、> printf("\n");</p><p> count=count+1;</p><p> printf("已增加的人數(shù):\n");</p><p> printf("%d\n",count);</p><p><b> }</b><
70、/p><p> printf("\n添加成功\n"); </p><p> m=m+count;//將新添加員工的人數(shù)加到總員工人數(shù)中</p><p> printf("\n增加后的所有職工信息:\n");</p><p> printf("\n");</p>&l
71、t;p><b> save(m);</b></p><p> display();//顯示添加后的信息</p><p> fclose(fp);</p><p><b> }</b></p><p> void search()/*查詢函數(shù)*/</p><p>
72、;<b> {</b></p><p> int t,button;</p><p> system("cls");//清屏</p><p><b> do</b></p><p><b> {</b></p><p>
73、printf("\n按1 按工號查詢\n按2 按姓名查詢\n按3 回主菜單\n");</p><p> scanf("%d",&t);</p><p> if(t>=1&&t<=3)</p><p><b> {</b></p><p>&
74、lt;b> button=1;</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p>
75、<p><b> button=0;</b></p><p> printf("輸入錯誤");</p><p><b> }</b></p><p><b> }</b></p><p> while(button==0);//回到查詢
76、選擇項</p><p> while(button==1)</p><p><b> {</b></p><p> switch(t)//選擇查詢方式</p><p><b> { </b></p><p> case 1:printf("按工號查詢\n&
77、quot;);search_num();break;</p><p> case 2:printf("按姓名查詢\n");search_name();break;</p><p> case 3:main();break;</p><p> default:break;</p><p><b> }<
78、;/b></p><p><b> }</b></p><p><b> }</b></p><p> void search_num()//按職工號查詢</p><p><b> {</b></p><p><b> int
79、a;</b></p><p><b> int i,t;</b></p><p> int m=load();</p><p> printf("請輸入要查找的職工號:\n");</p><p> scanf("%d",&a);</p>&
80、lt;p> for(i=0;i<m;i++)</p><p> if(a==em[i].num)</p><p><b> { </b></p><p> printf("職工號 姓名 基本工資 職務(wù)工資 津貼 醫(yī)療保險 公積金 總工資 \n");</p><
81、;p> printf("\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total); </p><p><b> break;</b></p&g
82、t;<p><b> }</b></p><p> if(i==m) </p><p> printf("\n對不起,查無此人\n");</p><p> printf("\n");</p><p> printf("返回查詢函數(shù)請按1,繼續(xù)查詢
83、職工號請按2\n");</p><p> scanf("%d",&t);</p><p><b> switch(t)</b></p><p><b> { </b></p><p> case 1:search();break;</p>
84、<p> case 2: break;</p><p> default:break;</p><p><b> }</b></p><p><b> }</b></p><p> void search_name()</p><p><b>
85、 {</b></p><p> char name[30];</p><p><b> int i,t;</b></p><p> int m=load();</p><p> printf("請輸入姓名:\n");</p><p> scanf(&quo
86、t;%s",name);</p><p> for(i=0;i<m;i++)</p><p> if(strcmp(em[i].name,name)==0)</p><p><b> {</b></p><p> printf("\n已找到,其記錄為:\n");</p&g
87、t;<p> printf("職工號 姓名 基本工資 職務(wù)工資 津貼 醫(yī)療保險 公積金 總工資 \n");</p><p> printf("\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,e
88、m[i].jt,em[i].yb,em[i].gjj,em[i].total); </p><p><b> }</b></p><p><b> if(i==m) </b></p><p> printf("\n\n");</p><p> printf(&q
89、uot;\n");</p><p> printf("返回查詢菜單請按1,繼續(xù)查詢姓名請按2\n");</p><p> scanf("%d",&t);</p><p><b> switch(t)</b></p><p><b> { <
90、/b></p><p> case 1:search();break;</p><p> case 2:break;</p><p> default :break;</p><p><b> }</b></p><p><b> }</b></p>
91、;<p> void modify() /*修改函數(shù)*/</p><p><b> {</b></p><p><b> int num;</b></p><p> char name[20];</p><p> int jbgz; </p><p>
92、;<b> int zwgz;</b></p><p><b> int jt;</b></p><p><b> int yb;</b></p><p><b> int gjj;</b></p><p> int b,c,i,n,t,butt
93、on; </p><p> int m=load();</p><p> system("cls");</p><p> printf("\n 原來的職工信息:\n");</p><p> display(); </p><p> printf("\n&quo
94、t;);</p><p> printf("請輸入要修改的職工的姓名:\n");</p><p> scanf("%s",name);</p><p> for(button=1,i=0;button&&i<m;i++)</p><p><b> {</b&
95、gt;</p><p> if(strcmp(em[i].name,name)==0)</p><p><b> {</b></p><p> printf("\n此人原始記錄為:\n");</p><p> printf("職工號 姓名 基本工資 職務(wù)工資 津貼
96、 醫(yī)療保險 公積金 總工資 \n");</p><p> printf("\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total); </p>&
97、lt;p> printf("\n確定 按1 ; 不修改請按0\n");</p><p> scanf("%d",&n);</p><p><b> if(n==1)</b></p><p><b> {</b></p><p> pri
98、ntf("\n需要進行修改的選項\n 1.職工號 2.姓名 3.基本工資 4.職務(wù)工資 5.津貼 6.醫(yī)療保險 7.公積金 8.返回上層\n"); </p><p> printf("請選擇序號1-8:\n"); </p><p> scanf("%d",&c); </p><p> i
99、f(c>8||c<1) </p><p> printf("\n選擇錯誤,請重新選擇!\n"); </p><p><b> }</b></p><p><b> button=0;</b></p><p><b> }</b>&
100、lt;/p><p><b> }</b></p><p> if(button==1)</p><p> printf("\n查無此人\n"); </p><p><b> do </b></p><p><b> {</b>
101、;</p><p> switch(c) /*因為當(dāng)找到第i個職工時,for語句后i自加了1,所以下面的應(yīng)該把改后的信息賦值給第i-1個人*/</p><p><b> { </b></p><p> case 1:printf("職工號改為: ");</p><p> scanf
102、("%d",&num);</p><p> em[i-1].num=num;</p><p><b> break; </b></p><p> case 2:printf("姓名改為: ");</p><p> scanf("%s",name
103、);</p><p> strcpy(em[i-1].name,name); </p><p><b> break; </b></p><p> case 3:printf("基本工資改為: ");</p><p> getchar();</p><p> sca
104、nf("%d",&jbgz);</p><p> em[i-1].jbgz=jbgz;</p><p> em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);</p><p><b> break; </
105、b></p><p> case 4:printf("職務(wù)工資改為: ");</p><p> scanf("%d",&zwgz);</p><p> em[i-1].zwgz=zwgz;</p><p> em[i-1].total=( em[i-1].jbgz+ em[i-1]
106、.zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);</p><p><b> break; </b></p><p> case 5:printf("津貼改為: ");</p><p> scanf("%d",&jt);</p><
107、;p> em[i-1].jt=jt; </p><p> em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);</p><p><b> break; </b></p><p> case 6:printf("
108、;醫(yī)療保險改為: ");</p><p> scanf("%d",&yb);</p><p> em[i-1].yb=yb;</p><p> em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);</p&g
109、t;<p><b> break; </b></p><p> case 7:printf("公積金改為: ");</p><p> scanf("%d",&gjj);</p><p> em[i-1].gjj=gjj;</p><p> em[i
110、-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);</p><p><b> break; </b></p><p> case 8:modify(); </p><p><b> break; </b>&l
111、t;/p><p><b> } </b></p><p> printf("\n");</p><p> printf("\n\n 確定修改 請按1 ; 重新修改 請按2: \n"); </p><p> scanf("%d",&b);</p
112、><p><b> } </b></p><p> while(b==2);</p><p> printf("\n修改后的所有職工信息:\n");</p><p> printf("\n");</p><p><b> save(m);
113、</b></p><p> display();</p><p> printf("\n按1 繼續(xù)修改 ,不再修改請按0\n");</p><p> scanf("%d",&t);</p><p><b> switch(t)</b></p>
114、<p><b> {</b></p><p> case 1:modify();break;</p><p> case 0:break;</p><p> default :break;</p><p><b> }</b></p><p><
115、b> }</b></p><p> void sta()//統(tǒng)計函數(shù)</p><p><b> {</b></p><p><b> int i;</b></p><p> int sum=0; </p><p> int a=0,b=0,c=0
116、;</p><p> int m=load();</p><p> system("cls");//清屏函數(shù)</p><p> for(i=0;i<m;i++) /*m為輸入部分的職工人數(shù)*/</p><p> {sum+=em[i].total;</p><p> if((em[i
117、].total)<=1500&&em[i].total>=1000) </p><p><b> {a++;}</b></p><p> if(em[i].total>1500&&em[i].total<=2000) </p><p><b> {b++;}</b&g
118、t;</p><p> if(em[i].total>2000) </p><p><b> {c++;}</b></p><p><b> }</b></p><p> printf("\n\n工資總額為:%d\n",sum);</p><p&
119、gt; printf("平均工資為:%d\n",sum/m);</p><p> printf("\n基本工資、職務(wù)工資、津貼之和\n");</p><p> printf("在1000-1500圓的員工占總員工的百分之%d\n",a*100/m); </p><p> printf("在
120、1500-2000圓的員工占總員工的百分之%d\n",b*100/m); </p><p> printf("在2000圓以上的員工占總員工的百分之%d\n",c*100/m);</p><p> printf("\n\n按任意鍵繼續(xù)");</p><p><b> getch();</b>
121、;</p><p><b> menu();</b></p><p><b> }</b></p><p> void main()//主函數(shù)</p><p><b> { </b></p><p> int n,button;</p
122、><p><b> char a; </b></p><p><b> start();</b></p><p><b> getch();</b></p><p><b> menu(); </b></p><p><
123、b> do</b></p><p><b> {</b></p><p> printf("功能選擇(1--8):\n");</p><p> scanf("%d",&n);</p><p> if(n>=1&&n<=
124、7)</p><p><b> {</b></p><p><b> button=1;</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> e
125、lse</b></p><p><b> {</b></p><p><b> button=0;</b></p><p> printf("您輸入有誤,請重新選擇!");</p><p><b> }</b></p>&l
126、t;p><b> }</b></p><p> while(button==0);</p><p> while(button==1)</p><p><b> {</b></p><p><b> switch(n)</b></p><p&
127、gt;<b> {</b></p><p> case 1: input();break;</p><p> case 2: display();break;</p><p> case 3: search();break; </p><p> case 4:del();break;</p>&
128、lt;p> case 5: add();break;</p><p> case 6:modify();break;</p><p> case 7:sta();break;</p><p> case 8:exit(0);break;</p><p> default :break;</p><p>
129、<b> }</b></p><p> getchar();</p><p> printf("\n");</p><p> printf("按任意鍵繼續(xù)\n");</p><p><b> getch();</b></p><p
130、> system("cls"); /*清屏*/</p><p> menu(); /*調(diào)用菜單函數(shù)*/</p><p> printf("功能選擇(1--8):\n");</p><p> scanf("%d",&n);</p><p> printf(&q
131、uot;\n");</p><p><b> }</b></p><p><b> }</b></p><p><b> 運行結(jié)果及截圖</b></p><p><b> 歡迎畫面</b></p><p><
132、b> 菜單</b></p><p><b> 輸入功能</b></p><p><b> 顯示功能</b></p><p><b> 統(tǒng)計功能</b></p><p><b> 刪除功能</b></p><p
133、><b> 添加功能</b></p><p><b> 修改功能</b></p><p><b> 心得體會</b></p><p> 通過這兩周的c語言課程設(shè)計,我加深了對c語言程序設(shè)計的理解,使自己的操作更加熟練,發(fā)現(xiàn)了自己的不足,為自己今后的繼續(xù)學(xué)習(xí)指明了方向。在這次課程設(shè)計中,我
134、鞏固所了學(xué)過的知識,能用匯編語言熟練地運用順序、選擇、循環(huán)三大結(jié)構(gòu),進一步掌握結(jié)構(gòu)體數(shù)組的使用,文件函數(shù)的使用,掌握了子程序的定義及調(diào)用。并在調(diào)試過程中不斷發(fā)現(xiàn)與改正錯誤,完善算法,改進用戶體驗等等。調(diào)試索然繁瑣而艱苦,但極大的促進了我編程能力的提高。</p><p> 由于自己目前能力有限,該程序還有諸多不足,感謝指正。感謝老師的悉心教導(dǎo)與細(xì)致的幫助。雖然c語言的課程與課程設(shè)計都已結(jié)束,但通過這次課程設(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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)生成績管理系統(tǒng)課程設(shè)計報告
- 學(xué)生成績管理系統(tǒng)課程設(shè)計報告
- 學(xué)生成績管理系統(tǒng)課程設(shè)計報告
- 學(xué)生成績管理系統(tǒng)課程設(shè)計報告
- 課程設(shè)計報告-學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)課程設(shè)計報告
- 學(xué)生成績管理系統(tǒng)課程設(shè)計報告
- 課程設(shè)計報告--學(xué)生成績管理系統(tǒng)
- 課程設(shè)計報告---學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)課程設(shè)計報告
- 學(xué)生成績查詢系統(tǒng)課程設(shè)計報告
- 《學(xué)生成績管理系統(tǒng)》課程設(shè)計報告
- [vb課程設(shè)計]學(xué)生成績處理設(shè)計報告
- 學(xué)生成績管理---課程設(shè)計
- vfp課程設(shè)計報告---學(xué)生成績查詢系統(tǒng)
- 學(xué)生成績管理系統(tǒng)課程設(shè)計報告 (3)
- c課程設(shè)計報告--學(xué)生成績管理系統(tǒng)
- java學(xué)生成績管理系統(tǒng)課程設(shè)計報告
- 學(xué)生成績管理系統(tǒng)課程設(shè)計報告.doc
- vb學(xué)生成績管理系統(tǒng)課程設(shè)計報告
評論
0/150
提交評論