學籍信息管理系統(tǒng)設計源代碼(1)_第1頁
學籍信息管理系統(tǒng)設計源代碼(1)_第2頁
學籍信息管理系統(tǒng)設計源代碼(1)_第3頁
學籍信息管理系統(tǒng)設計源代碼(1)_第4頁
學籍信息管理系統(tǒng)設計源代碼(1)_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、#include <stdio.h>#define N 50#define M 200int stumax=0,scoremax=0;FILE *fp;struct student char num9; /學號 char name20; /姓名 int sex; /性別 int room; /宿舍號碼 long int tel; / 號碼stuN;struct stuscore char num9; /學號 char coursenum10; /課程編號 char course15; /課程名稱 float point; /學分 int nscore; /平時成績 int exps

2、core; /實驗成績 int examscore; /卷面成績 int comscore; /綜合成績 float getpoint;/實得學分scoreM,score1M;void enter_stu();void input_stu(int j);void enter_score();void input_score(int i);void com_score(int i);void browse_stu();void browse_score();void search();void search_stu();void search_num();void search_name();v

3、oid search_room();void search_score();void printf_onestu_score(char snum);void delete_one();void order();void order_course_num();void order_course();void order_printf(int k);/*菜單*/void menu() int w1; char n; /*變量n保存選擇菜單數(shù)字,w1判斷輸入的數(shù)字是否在功能菜單對應數(shù)字范圍內(nèi)*/ system("cls"); do puts("*nn"); p

4、uts("t * 總菜單 *nn"); puts("t* 1.輸入學生的基本信息 *"); puts("t* 2.瀏覽學生的基本信息 *"); puts("t* 3.輸入學生的成績基本信息 *"); puts("t* 4.瀏覽學生的成績基本信息 *"); puts("t* 5.查詢信息功能 *"); puts("t* 6.刪除信息功能 *"); puts("t* 7.排序:按綜合成績或?qū)嵉脤W分 *"); puts("t* 8.

5、退出 *"); puts("nn*"); printf("n選擇要進行的功能代號(1-8): bb"); scanf("%c",&n); if(n<'1'|n>'8') /*對選擇的數(shù)字作判斷*/ w1=1; printf("nn? 請輸入數(shù)字 18!nn"); else w1=0; /*選擇功能*/ switch(n) case '1':enter_stu();break; /*輸入基本信息模塊*/ case '2':b

6、rowse_stu();break; /*瀏覽基本信息模塊*/ case '3':enter_score();break; /*輸入成績基本信息模塊*/ case '4':browse_score();break; /*瀏覽成績基本信息模塊*/ case '5':search();break; /*查找模塊*/ case '6':delete_one();break; /*刪除學籍模塊*/ case '7':order();break; /*排序模塊*/ case '8':exit(0); whil

7、e(w1=1); getch();/*主函數(shù)*/void main() menu(); /*進入菜單*/*公用函數(shù)*/*保存所有分數(shù)*/void save_score() int i; if(fp=fopen("b.txt","w+")=NULL) /*以輸出方式打開,在此前的記錄被覆蓋*/ printf("n 不能打開文件."); getch(); for(i=0;i<scoremax;i+) if(fwrite(&scorei,sizeof(struct stuscore),1,fp)!=1) printf(&quo

8、t;n 文件輸入錯誤."); fclose(fp); printf("n 輸入數(shù)據(jù)結(jié)束.Press any key to continue . . .");getch();/*保存所有學生信息*/void save() int i; if(fp=fopen("a.txt","w+")=NULL) /*以輸出方式打開,在此前的記錄被覆蓋*/ printf("n不能打開文件"); getch(); for(i=0;i<stumax;i+) if(fwrite(&stui,sizeof(struc

9、t student),1,fp)!=1) printf("n文件輸入錯誤."); fclose(fp);/*顯示一個分數(shù),形參i表示顯示第i個記錄*/void printf_one_score(int i) printf("n學號:%s 課程編號:%s 課程名稱:%s 學分:%fn 平時成績:%d 實驗成績:%d 卷面成績:%d 綜合成績:%d 實得學分:%f",scorei.num,scorei.coursenum,scorei.course,scorei.point,scorei.nscore,scorei.expscore,scorei.exams

10、core,scorei score,scorei.getpoint);/*顯示一個學生信息,形參j表示顯示第j個記錄*/void printf_one_stu(int j) printf("n學號:%s 姓名:%s 性別:%d 宿舍號碼:%d 號碼:%ld",stuj.num,,stuj.sex,stuj.room,stuj.tel);/*刪除一個分數(shù),形參i表示刪除第i個記錄*/void delete_one_score(int i) printf_one_score(i); scorei=scorescoremax; scoremax-; printf

11、("n刪除學生數(shù)據(jù)成功!Press any key to continue . . ."); getch(); save_score();/*錄入模塊*/*學生信息錄入*/void enter_stu() int i,n,es1; printf("n要輸入多少學生基本信息(1%d)? ",N-1); scanf("%d",&n); /*要輸入的學生基本信息的個數(shù)*/ es1=n+stumax; /*輸入n個后應有的記錄個數(shù)*/ printf("n輸入信息:"); for(i=stumax;i<es1;

12、i+) input_stu(i); /*調(diào)用輸入學生基本信息函數(shù)*/ printf("n共輸入 %d 項基本信息.Press any key to continue . . .",n);getch();menu(); /*提示輸入任務結(jié)束,按任意鍵返回主菜單*/*錄入一個學生信息*/void input_stu(int j) int i1,k=0,d; switch(j+1)%10) case 1:printf("n Input the %dst student's information:",j+1);break; case 2:printf(

13、"n Input the %dnd student's information:",j+1);break; default:printf("n Input the %dth student's information:",j+1); printf("n學號 姓名 性別 宿舍號碼 號碼n"); scanf("%s%s%d%d%ld",stuj.num,,&stuj.sex,&stuj.room,&stuj.tel); stumax+; /*輸入一個信息,總數(shù)加

14、1*/ for(i1=0;i1<stumax;i1+) if(i1!=j&&strcmp(stui1.num,stuj.num)=0) /*表示學號已存在*/ k=1; /*k為學號是否已存在標記,k=1表存在*/ printf_one_stu(i1); /*顯示已存在的學號的信息*/ printf("n此學生存在!"); /*提示學號已存在*/ stumax-; /*總數(shù)減1,刪除輸入信息*/ printf("n刪除信息成功!"); save(); /*調(diào)用保存函數(shù)*/ break; if(k=0) /*表示學號不重復*/ pri

15、ntf("n輸入信息成功!"); /*提示輸入成功*/ save(); /*調(diào)用保存函數(shù)*/ /*學生成績信息錄入*/void enter_score() int i,n,es1; printf("n要輸入的學生基本信息的個數(shù)(1%d)? ",M-1); scanf("%d",&n); /*要輸入的學生基本信息的個數(shù)*/ es1=n+scoremax; /*輸入n個后應有的記錄個數(shù)*/ printf("n輸入數(shù)據(jù):n"); for(i=scoremax;i<es1;i+) input_score(i)

16、; /*調(diào)用輸入學生成績基本信息函數(shù)*/ save_score(); /*調(diào)用保存學生成績基本信息函數(shù)*/ printf("n 共輸入了 %d 項數(shù)據(jù).Press any key to continue . . .",n);getch();menu(); /*提示輸入任務結(jié)束,按任意鍵返回主菜單*/*錄入一個成績*/void input_score(int i) int j,j1,k,c; float a; switch(i+1)%10) case 1:printf("n Input the %dst student's score:",i+1)

17、;break; case 2:printf("n Input the %dnd student's score:",i+1);break; default:printf("n Input the %dth student's score:",i+1); printf("n學號 課程編號 課程名稱 學分 平時成績 實驗成績 卷面成績n"); scanf("n%s%s%s%f%d%d%d",scorei.num,scorei.coursenum,scorei.course,&a,&sco

18、rei.nscore,&scorei.expscore,&scorei.examscore); scorei.point=a; com_score(i); /*調(diào)用計算綜合成績、實得學分函數(shù)*/ scoremax+; for(j1=0;j1<stumax;j1+) if(strcmp(scorei.num,stuj1.num)=0) break; if(j1=stumax) /*學生不存在*/ printf("n該學生不存在!"); delete_one_score(i);/*/ else /*學生存在*/ for(k=0;k<scoremax;

19、k+) if(k!=i&&strcmp(scorek.num,scorei.num)=0&&strcmp(scorek.coursenum,scorei.coursenum)=0&&strcmp(scorek.course,scorei.course)=0) /*該學生該課程已存在*/ printf("n該學生的此項信息已經(jīng)存在!"); delete_one_score(i);/*/ break; if(strcmp(scorek.coursenum,scorei.coursenum)=0&&strcmp(sc

20、orek.course,scorei.course)!=0)|(strcmp(scorek.coursenum,scorei.coursenum)!=0&&strcmp(scorek.course,scorei.course)=0) /*該課程編號和課程名稱與前面矛盾并提示刪除哪一個*/ printf("n課程編號和課程名稱不符:"); printf("n成績信息%d:",i); printf_one_score(i); /*顯示矛盾課程*/ printf("n成績信息%d:",k); printf_one_score

21、(k); /*顯示矛盾課程*/ printf("n 1)刪除成績%d 2)刪除成績%d? bb",i,k); scanf("%d",&c); switch(c) case 1:delete_one_score(i);break; /*調(diào)用刪除函數(shù)*/ default:delete_one_score(k); /*調(diào)用刪除函數(shù)*/ break; if(k=scoremax) printf("n輸入信息成功! Press any key to continue . . .");getch(); /*計算綜合成績*/void com

22、_score(int i) if(scorei.expscore=-1) /*判斷是否有實驗*/ scorei score=scorei.nscore*0.3+scorei.examscore*0.7; else scorei score=scorei.nscore*0.15+scorei.expscore*0.15+scorei.examscore*0.7; switch(scorei score/10) case 10: case 9: scorei.getpoint=scorei.point*1.0;break; case 8: scorei.getpoint=scorei.point*

23、0.8;break; case 7: scorei.getpoint=scorei.point*0.75;break; case 6: scorei.getpoint=scorei.point*0.6;break; default:scorei.getpoint=0; printf("n綜合成績計算結(jié)束. Press any key to continue . . .");getch();/*瀏覽模塊*/*瀏覽學生信息*/void browse_stu() int i; for(i=0;i<stumax;i+) /* stumax 為總的學生數(shù)*/ printf_on

24、e_stu(i); /*調(diào)用顯示一個學生基本信息函數(shù)*/ printf("n瀏覽學生基本信息結(jié)束.Press any key to continue . . .");getch();menu();/*瀏覽學生成績信息*/void browse_score() int j; for(j=0;j<scoremax;j+) /* stumax 為總的學生數(shù)*/ printf_one_score(j); /*調(diào)用顯示一個學生成績基本信息函數(shù)*/ printf("n瀏覽學生成績信息結(jié)束.Press any key to continue . . .");ge

25、tch();menu();/*查找模塊*/*查找*/void search() int c,c1; printf("n查找中 .n 選擇要查詢的信息:n1)學生基本信息 2)學生成績 3)返回菜單 bb"); scanf("%d",&c); /*選擇查找內(nèi)容*/ if(c>=1&&c<=3) switch(c) case 1:search_stu();break; /*調(diào)用查找學生基本信息函數(shù)*/ case 2:search_score();break; /*調(diào)用查找學生成績基本信息函數(shù)*/ default:menu(

26、); printf("n查詢結(jié)束.n 是否繼續(xù)查詢? 1)是 2)否 bb"); /*詢問是否繼續(xù)查找*/ scanf("%d",&c1); switch(c1) case 1:search();break; /*繼續(xù)查找*/ default:menu(); /*查找學生信息*/void search_stu() int i,c; printf("n 查找學生信息中.n 選擇查詢方式:n1)學號 2)姓名 3)宿舍編號 4)返回查詢 ? bb"); scanf("%d",&c); /*選擇查找方式*

27、/ switch(c) case 1:search_num();break; /*調(diào)用按學號查詢函數(shù)*/ case 2:search_name();break; /*調(diào)用按姓名查詢函數(shù)*/ case 3:search_room();break; /*調(diào)用按宿舍號查詢函數(shù)*/ default:printf("n繼續(xù)查詢."); printf("n查詢結(jié)束. Press any key to continue . . .");getch();/*按學號查找學生信息*/void search_num() int i,c; char n19; printf(&q

28、uot;n請輸入要查詢學生的學號: "); scanf("%s",&n1); /*輸入要查詢的學號*/ for(i=0;i<stumax;i+) if(strcmp(stui.num,n1)=0) printf_one_stu(i); /*顯示查到的記錄*/ break; if(i=stumax) printf("n此學號不存在!n查詢下一個學號? 1)是 2)否 bb"); /*未查到相應記錄,詢問是否繼續(xù)查找*/ scanf("%d",&c); switch(c) case 1:search_num

29、();break; /*繼續(xù)按此方式查找*/ default:printf("n繼續(xù)查找."); else printf("n學生信息查詢結(jié)束. Press any key to continue . . .");getch(); /*按姓名查找學生信息*/void search_name() int i,c,sn1=0; char n220; printf("n輸入要查詢學生的名字: "); scanf("%s",&n2); for(i=0;i<stumax;i+) if(strcmp(stui.n

30、ame,n2)=0) printf_one_stu(i); /*顯示查到的記錄*/ sn1+; if(sn1=0) printf("n此學生不存在!n查詢下一個學生? 1)是 2)否 bb"); /*未查到相應記錄,詢問是否繼續(xù)查找*/ scanf("%d",&c); switch(c) case 1:search_name();break; /*繼續(xù)按此方式查找*/ default:printf("n繼續(xù)查詢."); else printf("n查詢結(jié)束. Press any key to continue . .

31、 .");getch(); /*按宿舍查找學生信息*/void search_room() int i,c,r,sr1=0;printf("n輸入要查詢學生的宿舍號碼: "); scanf("%d",&r); for(i=0;i<stumax;i+) if(stui.room=r) printf_one_stu(i); /*顯示查到的記錄*/ sr1+; if(sr1=0) printf("n這個宿舍號碼不存在!n查詢下一個宿舍號碼? 1)是 2)否 bb"); /*未查到相應記錄,詢問是否繼續(xù)查找*/ sca

32、nf("%d",&c); switch(c) case 1:search_room();break; /*繼續(xù)按此方式查找*/ default:printf("n繼續(xù)查詢."); else printf("n查詢結(jié)束. Press any key to continue . . .");getch(); /*按學號查找學生成績*/void search_score() int i,a,s1; char n39; printf("n輸入要查詢成績的學生的學號: "); scanf("%s"

33、,n3); printf_onestu_score(n3); /*顯示查到的記錄*/ printf("n查詢結(jié)束. n 是否查詢其他學生? 1)是 2)否 bb"); /*詢問是否繼續(xù)查找*/ scanf("%d",&s1); switch(s1) case 1:search_score();break; /*繼續(xù)按此方式查找*/ default:printf("n查詢結(jié)束. Press any key to continue . . .");getch(); /*顯示一個學生的所有分數(shù)*/void printf_onestu

34、_score(char snum) int i,j,k=0,a1; float gp=0; for(j=0;j<stumax;j+) if(strcmp(snum,stuj.num)=0) printf("n學號: %s 姓名:%s",stuj.num,); printf("n"); break; if(j=stumax) printf("n此學生不存在!"); else for(i=0;i<scoremax;i+) if(strcmp(scorei.num,snum)=0) /*顯示該學生的所有成績*/

35、 printf_one_score(i); k+; gp+=scorei.getpoint; printf("n"); printf("n共修: %d 科 實得總學分: %-5.1fn",k,gp); printf("n此學生成績顯示完畢. Press any key to continue . . .");getch(); /*刪除*/void delete_one() int i,j,sd1=0,sd2,sd3; char c9; printf("n你要刪除哪位同學的信息記錄? n請輸入他的學號:"); sca

36、nf("%s",c); /*輸入要刪除的學號*/ for(i=0;i<stumax;i+) if(strcmp(stui.num,c)=0) break; if(i=stumax) /*未找到學生*/ printf("n未找到該學生!"); else /*找到學生*/ printf_one_stu(i); /*顯示學生基本信息記錄*/printf("n要刪除這些信息么? 1)是 2)否并返回 bb"); scanf("%d",&sd2); /*刪除確認?*/ if(sd2=1) /*確認*/ stui

37、=stustumax-1; /*刪除該學生基本信息*/ stumax-; printf("n刪除學生信息成功!n"); save(); /*調(diào)用保存學生基本信息函數(shù)*/ for(j=0;j<scoremax;j+) /*刪除該學生的成績信息*/ if(strcmp(scorej.num,c)=0) delete_one_score(j); /*調(diào)用刪除成績函數(shù)*/ sd1+; if(sd1=0) printf("n該學生無成績記錄."); /*該學生無成績記錄*/ printf("n刪除信息成功."); printf("

38、;n刪除其他學生的成績? 1)是 2)否 bb"); /*是否繼續(xù)刪除*/ scanf("%d",&sd3); switch(sd3) case 1:delete_one();break; /*繼續(xù)刪除*/ default: printf("n查詢學生的號碼結(jié)束. Press any key to continue . . .");getch();menu(); /*排序*/void order() int c; printf("排序中.n按什么排序: 1)課程編號 2)課程 bb"); scanf("%d

39、",&c); /*指定按什么排序*/ switch(c) case 1:order_course_num();printf("n排序結(jié)束. Press any key to continue . . .");break; /*選擇按課程編號排序*/ case 2:order_course();printf("n排序結(jié)束. Press any key to continue . . .");break; /*選擇按課程名稱排序*/ default:printf("n輸入錯誤. 請重新輸入 (12)!n");order(

40、); getch();menu();/*按課程編號排序*/void order_course_num() int i,j,k=0; char cnum10; struct stuscore sco; printf("n輸入要排序的課程編號:"); scanf("%s",cnum); /*輸入要排序的課程編號*/ for(i=0;i<scoremax;i+) if(strcmp(scorei.coursenum,cnum)=0) /*查找對應信息并保存在score1M中*/ score1k=scorei; /* score1M為全局數(shù)組*/ k+; for(i=0;i<k-1;i+) for(j=i+1;j<k;j+) if(score1i score>score1j score) /*升序排序*/ sco=score

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論