C語言課程設(shè)計實驗報告_第1頁
C語言課程設(shè)計實驗報告_第2頁
C語言課程設(shè)計實驗報告_第3頁
C語言課程設(shè)計實驗報告_第4頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

1、一實驗題目:人事管理說明及要求 實現(xiàn)紅河學(xué)院工學(xué)院人事信息(編號、姓名、年齡、職務(wù)、職稱、政治面貌、最高學(xué)歷、人員類別)的新增、修改、刪除、按編號查找,及按職稱(助教、講師、副教授、教授)和性別統(tǒng)計工人數(shù)的功能。注意,人事編號不能重復(fù)。提示 ( 1)用一個文件存放人事信息。( 2)定義結(jié)構(gòu)體表示人員信息。( 3)分別編寫函數(shù)實現(xiàn)人事信息的新增、修改、刪除、按編號查找、按職稱和性別統(tǒng)計工人數(shù)的功能。( 4)編寫 main 函數(shù)調(diào)用上述函數(shù)進行演示。二實驗?zāi)康模?. 完成 C 語言程序設(shè)計課程的教學(xué)之后, 通過一周的課程設(shè)計可以進一步鞏固所學(xué)知識,加深理解。2. 指導(dǎo)和促使學(xué)生通過各種途徑對 C

2、語言相關(guān)技術(shù)內(nèi)容進行拓展和深入, 增強自學(xué)能力,軟件開發(fā)能力等綜合能力的培訓(xùn)。三實驗要求:1. 掌握 C語言程序設(shè)計有關(guān)的專業(yè)基礎(chǔ)知識和程序設(shè)計的基本方法。2. 學(xué)會利用程序的三種基本結(jié)構(gòu): 順序結(jié)構(gòu),選擇結(jié)構(gòu), 循環(huán)結(jié)構(gòu)解決不同的問題。3. 學(xué)會根據(jù)實際需要定義變量及類型。4. 掌握過程和函數(shù)的定義和調(diào)用方法。5. 學(xué)會程序調(diào)試的基本方法。四實驗思路:( 1) 添加刪除功能:能根據(jù)學(xué)院人事的變動情況,添加刪除記錄。( 2) 查詢功能:能根據(jù)編號和姓名進行查詢。( 3) 編輯功能(高級):根據(jù)查詢對相應(yīng)的記錄進行修改并記錄。( 4) 統(tǒng)計功能:能根據(jù)多種參數(shù)進行人員的統(tǒng)計(在職人數(shù)、黨員人數(shù)、

3、女工人數(shù), 高學(xué)歷高職稱人數(shù)),統(tǒng)計要求同時顯示被統(tǒng)計著的信息。( 5) 排序功能:按照年齡、來院時間進行排序。( 6) 保存功能:能對輸入的數(shù)據(jù)進行相應(yīng)的存儲。人事管理系統(tǒng)增刪刪刪刪刪加除除除除除人人人人人人員員員員員員信信信信信信息息息息息息五實驗過程:1、定義結(jié)構(gòu)struct staffchar num10;char name20;char sex10;int age;char title20;char p_landscape30;char Qualifications30;int Service_time;char come_time30;char category30;staff10

4、0;2、主程序進入主菜單函數(shù)void main()menu();/*主菜單函數(shù)*/void menu()char w0;dosystem("cls");fflush(stdin); /*清除緩沖區(qū)輸入 */puts("*高校人事管理系統(tǒng)*nn");puts("tttt1)puts("tttt2)puts("tttt3)puts("tttt4)puts("tttt5)puts("tttt6)puts("tttt7)增加人員信息刪除人員信息查詢?nèi)藛T信息修改人員信息統(tǒng)計人員信息保存人員信息瀏

5、覽人員信息n");n");n");n");n");n");n");puts("tttt8)printf("tttt退出 n");請選擇 bb");w0=getchar();while(w0<'1'|w0>'9');switch(w0-48)case 1:add();break;case 2:delete_data();break;case 3:search();break;case 4:modify();break;case 5:stasti

6、c();break;case 6:save();break;case 7:browse();break;case 8:break;( 1)查詢功能int search_data()/*查找單個數(shù)據(jù)函數(shù)int i,flag;char s30,w0;system("cls");/*清屏 */n=load();dofflush(stdin); /*清除緩沖區(qū)輸入printf("通過 1) 編號2)w0=getchar();*/*/姓名bb");while(w0<'1'|w0>'2');if(w0='1'

7、;)/*按編號查找 */flag=0;puts("輸入人員編號 :");scanf("%s",s);for(i=0;i<n;i+)if(strcmp(s,staffi.num)=0)printf_face();printf_one(staffi);flag=1;break;else continue;if(flag=0)puts(" 該人員不存在 !");return i;void search()int k;char w1; loop: k=search_data();dofflush(stdin); /*清除緩沖區(qū)輸入*/p

8、rintf("1)回主菜單2) 退出 3)繼續(xù)查詢 bb");w1=getchar();while(w1<'1'|w1>'3');if(w1='1')menu();else if(w1='2')exit(0);else goto loop;(2)增加人員信息void add()char w0,w1;loop: system("cls");puts("請輸入編號( 如 001):");scanf("%s",s.num);if(test(s.n

9、um)goto loop;/*編號重復(fù)*/puts("請輸入姓名:");scanf("%s",);puts("請輸入性別( 男, 女):");scanf("%s",s.sex);puts("請輸入年齡:");scanf("%d",&s.age);puts(" 請輸入職務(wù) ( 教授 副教授 講師 助教 學(xué)生 后勤人員 ):"); scanf("%s",s.duty);puts(" 請輸入職稱( 無初級 高級

10、):");scanf("%s",s.title);puts(" 請輸入政治面貌( 黨員 非黨員 ):");scanf("%s",s.p_landscape);puts(" 請輸入最高學(xué)歷( 小學(xué) 初中高中 大學(xué) 碩士學(xué)位更高 ):");scanf("%s",s.Qualifications);puts("請輸入人員類別 ( 行政人員教師 一般員工退休人員臨時工 ):");scanf("%s",s.category);dofflush(stdin)

11、;/*清除緩沖區(qū)輸入 */printf("是否保存 ?1) 是2)否 bb");w0=getchar();while(w0<'1'|w0>'2');switch(w0-48)case 1:single_save(s);break;case 2:break;dofflush(stdin); /*清除緩沖區(qū)輸入*/printf("1)繼續(xù)增加人員信息2)回主菜單3)退出 bb");w1=getchar();while(w1<'1'|w1>'3');if(w1='1

12、')goto loop;else if(w1='2')menu();else exit(0);(3)保存信息void save()char w0;save_all();printf("所有信息已保存 !n");dofflush(stdin); /* printf("1)清除緩沖區(qū)輸入回主菜單2)退出*/ bb");w0=getchar();while(w0<'1'|w0>'2');if(w0='1')menu();else exit(0);void save_all()/

13、*保存所有數(shù)據(jù)函數(shù)*/int i;FILE *fp;if(fp=fopen("text.txt","wb")=NULL)printf("無法打開文件 !");exit(0);for(i=0;i<n;i+)if(staffi.age!=0)fprintf(fp,"%s %s %s %d %s %s %s %s %sn",staffi.num,,staff i.sex,staffi.age,staffi.duty,staffi.title,staffi.p_landscape,staffi.

14、Qualifications,staffi.category); else continue;fclose(fp);int test(char h10)/*檢查編號是否重復(fù)*/int i;n=load();for(i=0;i<n;i+)if(strcmp(h,staffi.num)=0)puts("輸入的編號有重復(fù)! 請重新輸入編號!");system("pause");return 1;return 0;void save_all()/*保存所有數(shù)據(jù)函數(shù)*/int i;FILE *fp;if(fp=fopen("text.txt&quo

15、t;,"wb")=NULL)printf("無法打開文件 !");exit(0);for(i=0;i<n;i+)if(staffi.age!=0)fprintf(fp,"%s %s %s %d %s %s %s %s %sn",staffi.num,,staff i.sex,staffi.age,staffi.duty,staffi.title,staffi.p_landscape,staffi.Qualifications,staffi.category); else continue;fclose(fp

16、);(4)刪除人員void delete_data()int k;char w0,w1;loop: k=search_data();if(k<n)Dofflush(stdin);printf("確認要刪除該人員信息?1) 是2) 否bb");w0=getchar();while(w0<'1'|w0>'2');if(w0='1')staffk.age=0;save_all();puts("該人員信息已被刪除!");Dofflush(stdin);printf("1)繼續(xù)刪除數(shù)據(jù)2)

17、 回主菜單3) 退出 bb");w1=getchar();while(w1<'1'|w1>'3');if(w1='1') goto loop;else if(w1='2')menu();else exit(0);( 5)修改人員信息void modify()int k=0,w0,g;char h30,w1,w2;loop: g=search_data();if(g<n)doputs("ttt修改:1)編號 ");puts("ttt2)姓名 ");puts(&quo

18、t;ttt3)性別 ");puts("ttt4)年齡 ");puts("ttt5)職務(wù) ");puts("ttt6)職稱 ");puts("ttt7)政治面貌 ");puts("ttt8)最高學(xué)歷 ");puts("ttt9)人員類別 ");printf("請選擇 : bb");scanf("%d",&w0);while(w0<1|w0>11);switch(w0)case 1:puts("請輸入

19、新編號 :");scanf("%s",h);strcpy(staffg.num,h);break;case 2:puts("請輸入姓名 :");scanf("%s",h);strcpy(,h);break;case 3:puts("請輸入性別 :");scanf("%s",h);strcpy(staffg.sex,h);break;case 4:puts("請輸入年齡 :");scanf("%d",&k);staff

20、g.age=k;break;case 5:puts("請輸入職務(wù) :");scanf("%s",h);strcpy(staffg.duty,h);break;case 6:puts("請輸入職稱 :");scanf("%s",h);strcpy(staffg.title,h);break;case 7:puts("請輸入政治面貌 :");scanf("%s",h);strcpy(staffg.p_landscape,h);break;case 8:puts("請輸入

21、最高學(xué)歷 :");scanf("%s",h);strcpy(staffg.Qualifications,h);break;case 9:puts("請輸入人員類別 :");scanf("%s",h);strcpy(staffg.category,h);break;dofflush(stdin);printf("是否保存?1) 保存2)否 bb");w1=getchar();while(w1<'1'|w1>'2');if(w1='1')save_a

22、ll(); puts("保存修改成功!");dofflush(stdin);printf("1)繼續(xù) 修改2) 回主 菜單3) 退出 bb");w2=getchar();while(w2<'1'|w2>'3');if(w2='1')goto loop;else if(w2='2')menu();else exit(0);(6)統(tǒng)計人員信息void stastic()int i,count;char w0,w1;n=load();if(n=0)puts(" 沒有數(shù)據(jù) !&

23、quot;);getchar();menu();loop: system("cls");dofflush(stdin); /*清除緩沖區(qū)輸入 */printf("通過 1)在職人員2)黨員 n");printf("3)女工人數(shù)4)最高學(xué)歷 bb");w0=getchar();while(w0<'1'|w0>'4');if(w0='1')/*統(tǒng)計在職人員*/printf_face();for(i=0,count=0;i<n&&staffi.age;i+)i

24、f(strcmp(staffi.category,"退休人員")!=0&&strcmp(staffi.category,"臨時工 ")!=0)count+; printf_one(staffi);printf("tttt共有 %d條記錄 ",count);else if(w0='2')/*統(tǒng)計黨員*/printf_face();for(i=0,count=0;i<n;i+)if(strcmp(staffi.p_landscape,"黨員 ")=0)count+; printf_

25、one(staffi);printf("tttt共有 %d條記錄 ",count);else if(w0='3')/*統(tǒng)計女工人員printf_face();for(i=0,count=0;i<n;i+)if(strcmp(staffi.sex,"*/女 ")=0)count+; printf_one(staffi);printf("tttt共有 %d條記錄 ",count);else/* 統(tǒng)計高學(xué)歷人員 */printf_face();for(i=0,count=0;i<n;i+)if(strcmp(st

26、affi.Qualifications,"碩士學(xué)位")=0|strcmp(staffi.Qualifications,"更高 ")=0)count+; printf_one(staffi);printf("tttt共有 %d條記錄 ",count);doprintf("n1)fflush(stdin); /*清除緩沖區(qū)輸入 */繼續(xù)統(tǒng)計2)回主菜單3)退出 bb");w1=getchar();while(w1<'1'|w1>'3');if(w1='1')

27、goto loop;else if(w1='2')menu();else exit(0);六實驗調(diào)試和結(jié)果:實驗調(diào)試出現(xiàn)的一些錯誤及解決方案:1, 語法錯誤,如沒加分號,大括號等,根據(jù)錯誤提示找到錯誤地方改正錯誤。2,未定義,有些變量沒定義就直接使用導(dǎo)致錯誤,找到未定義的變量根據(jù)實際要求定義再使用。調(diào)試結(jié)果:七實驗小結(jié):通過本次試驗我對本學(xué)期所學(xué)的 C 語言程序設(shè)計有了更深的理解, 通過自己所學(xué)的知識加以老師網(wǎng)絡(luò)的幫助完成了本次的課程設(shè)計, 我學(xué)到了很多, 不僅是課程中的知識,還有一種靠自己動手解決問題的能力。在編程中我遇到了很多困難,有的錯誤我根本不知道我哪里出錯了, 獲取到

28、老師或同學(xué)的幫助后我積極動手解決問題,最終完成了自己的課程設(shè)計。八附錄(程序源代碼)#include<stdlib.h>#include <stdio.h>#include <string.h>struct staff char num10;char name20;char sex10;int age;char duty20;char title20;char p_landscape30;char Qualifications30;/* char category30;/*學(xué)歷 */人員類別 */staff100;struct staff s;int n;v

29、oid menu();void printf_face()/*顯示數(shù)據(jù)結(jié)構(gòu)項目函數(shù)*/printf("編號姓名性別年齡職務(wù)職稱 政治面貌學(xué)歷人員類別n");void printf_one(struct staff p)/*輸出單個數(shù)據(jù)函數(shù)*/printf("%-4s%-7s%-5s%-3d%-7s%-5s%-8s%-12s%-3sn",p.num,,p.sex,p.age,p.duty,p.title,p.p_landscape,p.Qualifications,p.category);int load()/*加載函數(shù) */int i=0;F

30、ILE *fp;if(fp=fopen("text.txt","rb")=NULL)return 0;exit(0);for(i=0;!feof(fp);i+) /* 輸出數(shù)據(jù)到結(jié)構(gòu)體 */fscanf(fp,"%s %s %s %d %s %s %s %s %sn",staffi.num,,staffi .sex,&staffi.age,staffi.duty,staffi.title,staffi.p_landscape,staffi .Qualifications,staffi.category);

31、fclose(fp);return i;int search_data()/*查找單個數(shù)據(jù)函數(shù)int i,flag;char s30,w0;system("cls");/*清屏 */n=load();dofflush(stdin); /*清除緩沖區(qū)輸入 */printf("通過 1) 編號2)w0=getchar();*/姓名bb");while(w0<'1'|w0>'2');if(w0='1')/*按編號查找 */flag=0;puts("輸入人員編號 :");scanf(

32、"%s",s);for(i=0;i<n;i+)if(strcmp(s,staffi.num)=0)printf_face();printf_one(staffi);flag=1;break;else continue;if(flag=0)puts(" 該人員不存在 !");return i;void save_all()/*保存所有數(shù)據(jù)函數(shù)*/int i;FILE *fp;if(fp=fopen("text.txt","wb")=NULL)printf("無法打開文件 !");exit(0

33、);for(i=0;i<n;i+)if(staffi.age!=0)fprintf(fp,"%s %s %s %d %s %s %s %s %sn",staffi.num,,staff i.sex,staffi.age,staffi.duty,staffi.title,staffi.p_landscape,staffi.Qualifications,staffi.category); else continue;fclose(fp);int test(char h10)/*檢查編號是否重復(fù)*/int i;n=load();for(i=0;i<

34、;n;i+)if(strcmp(h,staffi.num)=0)puts("輸入的編號有重復(fù)! 請重新輸入編號!");system("pause");return 1;return 0;void single_save(struct staff p)/*保存單個數(shù)據(jù)函數(shù)*/ FILE *fp; if(fp=fopen("text.txt","ab+")=NULL)printf("無法打開文件 !");exit(0);fprintf(fp,"%s %s %s %d %s %s %s %s

35、 %sn",p.num,,p.sex,p.age,p.duty, p.title,p.p_landscape,p.Qualifications,p.category);printf("該信息已成功保存!n");fclose(fp);/*修改模塊*/void modify()int k=0,w0,g;char h30,w1,w2;loop: g=search_data();if(g<n)doputs("ttt修改:1)編號 ");puts("ttt2)姓名 ");puts("ttt3)性別 &quo

36、t;);puts("ttt4)年齡 ");puts("ttt5)職務(wù) ");puts("ttt6)職稱 ");puts("ttt7)政治面貌 ");puts("ttt8)最高學(xué)歷 ");puts("ttt9)人員類別 ");printf("請選擇 : bb");scanf("%d",&w0);while(w0<1|w0>11);switch(w0)case 1:puts("請輸入新編號 :");s

37、canf("%s",h);strcpy(staffg.num,h);break;case 2:puts("請輸入姓名 :");scanf("%s",h);strcpy(,h);break;case 3:puts("請輸入性別 :");scanf("%s",h);strcpy(staffg.sex,h);break;case 4:puts("請輸入年齡 :");scanf("%d",&k);staffg.age=k;break;

38、case 5:puts("請輸入職務(wù) :");scanf("%s",h);strcpy(staffg.duty,h);break;case 6:puts("請輸入職稱 :");scanf("%s",h);strcpy(staffg.title,h);break;case 7:puts("請輸入政治面貌 :");scanf("%s",h);strcpy(staffg.p_landscape,h);break;case 8:puts("請輸入最高學(xué)歷 :");

39、scanf("%s",h);strcpy(staffg.Qualifications,h);break;case 9:puts("請輸入人員類別 :");scanf("%s",h);strcpy(staffg.category,h);break;dofflush(stdin); /*清除緩沖區(qū)輸入 */printf("是否保存 ?1) 保存 2)否 bb");w1=getchar();while(w1<'1'|w1>'2');if(w1='1')save_

40、all(); puts("保存修改成功 !");dofflush(stdin); /*清除緩沖區(qū)輸入 */printf("1)繼續(xù)修改2) 回主菜單3) 退出 bb");w2=getchar();while(w2<'1'|w2>'3');if(w2='1')goto loop;else if(w2='2')menu();else exit(0);/*保存模塊 */void save()char w0;save_all();printf("所有信息已保存 !n"

41、);dofflush(stdin); /*清除緩沖區(qū)輸入 */printf("1)回主菜單w0=getchar();while(w0<'1'|w0>'2');if(w0='1')menu();else exit(0);2)退出 bb");/*查找模塊*/void search()int k;char w1; loop: k=search_data();dofflush(stdin); /*清除緩沖區(qū)輸入*/printf("1)回主菜單2) 退出 3)繼續(xù)查詢 bb");w1=getchar();

42、while(w1<'1'|w1>'3');if(w1='1')menu();else if(w1='2')exit(0);else goto loop;/*增加模塊*/void add()char w0,w1;loop: system("cls");puts(" 請輸入編號 ( 如 001):");scanf("%s",s.num);if(test(s.num)goto loop;/*puts(" 請輸入姓名 :");編號重復(fù)*/scanf

43、("%s",);puts(" 請輸入性別 ( 男 , 女):");scanf("%s",s.sex);puts(" 請輸入年齡 :");scanf("%d",&s.age);puts(" 請輸入職務(wù) ( 教授 副教授 講師 助教 學(xué)生 后勤人員 ):"); scanf("%s",s.duty);puts(" 請輸入職稱( 無初級 高級 ):");scanf("%s",s.title);puts(&

44、quot; 請輸入政治面貌( 黨員 非黨員 ):");scanf("%s",s.p_landscape);puts(" 請輸入最高學(xué)歷 ( 小學(xué) 初中 高中 大學(xué) 碩士學(xué)位 更高 ):"); scanf("%s",s.Qualifications);puts("請輸入人員類別 ( 行政人員教師 一般員工退休人員臨時工 ):");scanf("%s",s.category);dofflush(stdin);/*清除緩沖區(qū)輸入 */printf("是否保存 ?1) 是2)否 bb

45、");w0=getchar();while(w0<'1'|w0>'2');switch(w0-48)case 1:single_save(s);break;case 2:break;dofflush(stdin);printf("1)繼續(xù)增加人員信息2)回主菜單3)退出 bb");w1=getchar();while(w1<'1'|w1>'3');if(w1='1')goto loop;else if(w1='2')menu();else exi

46、t(0);/*刪除 模塊 */void delete_data()int k;char w0,w1;loop: k=search_data();if(k<n)Dofflush(stdin);printf("確 認 要 刪 除 該 人 員 信 息 ?1) 是2) 否bb");w0=getchar();while(w0<'1'|w0>'2');if(w0='1')staffk.age=0;save_all();puts(" 該人員信息已被刪除!");Dofflush(stdin);printf

47、("1)繼續(xù)刪除數(shù)據(jù)2)回主菜單3)退出bb");w1=getchar();while(w1<'1'|w1>'3');if(w1='1') goto loop;else if(w1='2')menu();else exit(0);/*統(tǒng)計模塊*/void stastic()int i,count;char w0,w1;n=load();if(n=0)puts(" 沒有數(shù)據(jù) !");getchar();menu();loop:system("cls");doff

48、lush(stdin); /*清除緩沖區(qū)輸入printf("通過 1) 在職人員2)printf("3)女工人數(shù)4)*/黨員 n");最高學(xué)歷 bb");w0=getchar();while(w0<'1'|w0>'4');if(w0='1')/*統(tǒng)計在職人員*/printf_face();for(i=0,count=0;i<n&&staffi.age;i+)if(strcmp(staffi.category,"退休人員")!=0&&strcmp(staffi.category,&q

溫馨提示

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

評論

0/150

提交評論