C語言課設(shè)之學(xué)生證管理系統(tǒng)_第1頁
C語言課設(shè)之學(xué)生證管理系統(tǒng)_第2頁
C語言課設(shè)之學(xué)生證管理系統(tǒng)_第3頁
C語言課設(shè)之學(xué)生證管理系統(tǒng)_第4頁
C語言課設(shè)之學(xué)生證管理系統(tǒng)_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、學(xué)生證的管理程序 C語言課程設(shè)計(jì)報告一、 題目要求該程序應(yīng)該具有下列功能:1、錄入某位學(xué)生的學(xué)生證信息。學(xué)生證應(yīng)該包照自含的信息請參己的學(xué)生證;2、給定學(xué)號,顯示某位學(xué)生的學(xué)生信息;3、給定某個班級的班號,顯示該班所有學(xué)生的學(xué)生證信息4、給定某位學(xué)生的學(xué)號,修改該學(xué)生的學(xué)生信息;5、給定某位學(xué)生的學(xué)號,刪除該學(xué)生的學(xué)生信息;6、提供一些統(tǒng)計(jì)各類信息的功能。輸入要求應(yīng)用程序后,在屏幕上顯示一個菜單。用戶可以根據(jù)要求選定相應(yīng)的操作項(xiàng)目。進(jìn)入每個操作后,根據(jù)應(yīng)用程序的提示信息,從鍵盤輸入相應(yīng)的信息。輸出要求1、 應(yīng)用程序運(yùn)行后,要在屏幕上顯示一個菜單;2、 要求用戶輸入數(shù)據(jù)時,要給出清晰、明確的提示

2、信息,包括輸入的數(shù)據(jù)內(nèi)容、格式及結(jié)束方式等。提示設(shè)計(jì)一個結(jié)構(gòu)體類型和一維數(shù)組類型,用來保存學(xué)生證內(nèi)容;二、 需求分析 根據(jù)題目要求,由于學(xué)生信息是一個有不同類型的變量組成,因此,應(yīng)提供結(jié)構(gòu)體操作,在程序中需要瀏覽學(xué)生信息,應(yīng)提供顯示、查找、修改、刪除、統(tǒng)計(jì)等操作。另外還應(yīng)該提供鍵盤式的選擇菜單實(shí)現(xiàn)功能選擇。三、 總體設(shè)計(jì)學(xué)生證的管理程序主要包含學(xué)生信息的錄入、修改、刪除、查詢、統(tǒng)計(jì)等模塊。為了各模塊的獨(dú)立性,將顯示模塊分別鑲嵌在錄入、修改、刪除、查詢、統(tǒng)計(jì)等模塊中。學(xué)生證管理程序錄 入模 塊查 詢模 塊修 改模 塊刪 除模 塊統(tǒng) 計(jì)模 塊四、 詳細(xì)分析1、 主函數(shù)分析主函數(shù)的設(shè)計(jì)簡潔,只提供加

3、錄入、修改、刪除、查詢、統(tǒng)計(jì)和顯示等函數(shù)的調(diào)用和加載功能。其中各功能模塊用菜單方式選擇。并將main()函數(shù)體內(nèi)的界面選擇部分部分語句單獨(dú)抽出來做一個獨(dú)立的函數(shù),目的在于系統(tǒng)執(zhí)行完每部分功能模塊后能更方便返回到系統(tǒng)界面。menu()函數(shù)從主函數(shù)中獨(dú)立出來后,表面的主函數(shù)只是起一個程序開始的作用,其主要功能被獨(dú)立出來的被調(diào)用的menu()函數(shù)所取代。menu()函數(shù)主要完成菜單的輸出和被選擇的項(xiàng)目的輸入和相應(yīng)執(zhí)行函數(shù)的調(diào)用。并將已經(jīng)擁有的信息從指定文件中讀取到結(jié)構(gòu)體st中,以便執(zhí)行其他的功能性函數(shù)。成功后需要關(guān)閉文件。流程圖顯示一系列功能選項(xiàng)加載已有信息輸入n,判斷n是否是1-6根據(jù)的值調(diào)用各功

4、能模塊函數(shù)NY程序/*menu*/menu() int n,w,i,j; STU *st; FILE *fp; fp=fopen("student1.txt","wb+"); if(!fp) printf("Document error! "); exit(0); else fread(&i,2,1,fp); fclose(fp); j=i+1; st=(STU*)malloc(j*sizeof(STU); do printf("ntt*MENU*nn"); printf("ttt1.Input

5、information of studentn");/輸入學(xué)生信息 printf("ttt2.Inquiries information of studentn")/顯示學(xué)生信息; printf("ttt3.Changes information of studentn");/修改學(xué)生信息 printf("ttt4.Delete information of studentn");/刪除學(xué)生信息 printf("ttt5.Statistic information of studentn");/統(tǒng)計(jì)學(xué)生信

6、息 printf("ttt6.Exit");/結(jié)束 printf("nn2tt*n"); printf("Choice your number(1-6) bbbbbbb"); scanf("%d",&n); if(n<1&&n>6) w=1;getchar(); else w=0;free(st); while(w=1); switch(n) case 1:input(i,st);break; case 2:inquiries(i,st);break; case 3:change

7、(i,st);break; case 4:delete(i,st);break; case 5:statistic(i,st);break; case 6:exit(0);break; 2、各功能模塊設(shè)計(jì)(1) 輸入模塊設(shè)計(jì) 分析在向指定文件輸出學(xué)生信息及錄入信息前需要將輸入的學(xué)生證號進(jìn)行檢測,該檢測是在結(jié)構(gòu)體中st元素的學(xué)號項(xiàng)值比較而得出。如果已經(jīng)存在的序號拒絕錄入,如果還沒有輸入的學(xué)生證號就按提示繼續(xù)輸入學(xué)生信息信息。輸入成功后顯示剛輸入的信息并將信息輸出到指定文件的末尾。成功后將釋放機(jī)構(gòu)體指針;關(guān)閉文件并返回到menu()函數(shù)繼續(xù)選擇并執(zhí)行其他操作。流程圖輸入新加學(xué)號b,判斷是否重復(fù)按提

8、示輸入姓名等其他信息將信息存儲在STU型結(jié)構(gòu)體中將信息存儲到指定文件末尾NY關(guān)閉文件、釋放結(jié)構(gòu)體指針返回到menu()函數(shù)輸出剛輸入的信息程序/*input*/void input(int k,STU *st) int n,i; FILE *fp; long b; STU student_1; printf("Please input your number bbbbbbb");/輸入學(xué)號 scanf("%ld",&b); printf("nPlease input your name bbbbbbbbb");/輸入名字 sc

9、anf("%s",student_1.name); printf("nPlease input you sex male(1) or female(2) bbbbbbb");/輸入性別 scanf("%d",&student_1.sex); printf("nPlease input you Class bbbbbbb");輸入班號 scanf("%ld",&student_1.classes); printf("nPlease input you date of bi

10、rth bbbbbbb");輸入出生日期 scanf("%ld",&student_1.birth); fp=fopen("student1.txt","ab"); if(!fp) printf("Document error! "); exit(0); elsefprintf(fp,"%ld%s%d%ld%ld",b,student_1.name,student_1.sex,student_1.classes,student_1.birth);printf("%ld

11、%s%d%ld%ld",b,student_1.name,student_1.sex,student_1.classes,student_1.birth); n=k+1; rewind(fp); fprintf(fp,"%d",n); fclose(fp); free(st); menu();2、查詢模塊分析查詢的主要方式就是通過學(xué)號查詢,查詢時需要通過輸入學(xué)號并按學(xué)生信息儲存逐個核對,如果出現(xiàn)發(fā)現(xiàn)相同信息則輸出該同學(xué)的其他信息,沒有發(fā)現(xiàn)相同的信息則提示未找到并返回到menu()函數(shù)繼續(xù)選擇并執(zhí)行其他操作。該查詢也是通過機(jī)構(gòu)體st的元素項(xiàng)的比較得出。運(yùn)行結(jié)束后需要

12、關(guān)閉文件并釋放機(jī)構(gòu)體指針的空間。一系列功能選項(xiàng)流程圖“NO”輸入n,判斷n的值是否是14,查找出生日期查找班級查找學(xué)號返回到menu返回到menu返回到menu程序/*inquiries*/ void inquiries(int k,STU *st) int i,j=0,n,p,w; long a; do printf("ntt*INQUIRIE MENU*nn"); printf("ttt1.Inquiries school numbern"); printf("ttt2.Inquiries classesn"); printf(&

13、quot;ttt3.Inquiries date of birthn"); printf("ttt4.Back to menun"); printf("nntt*n"); printf("Choice your number(1-4) bbbbbbb"); scanf("%d",&n); if(n<1&&n>4) w=1;getchar(); else w=0; while(w=1); switch(n) case 1:j=0;printf("Please i

14、nput your inquiries school number bbbbbbb"); scanf("%ld",&a); for(i=0;i<k;i+)if(sti.num=a) j=1;p+; printf("%ld%s%d%ld%ld",sti.num,,sti.sex,sti.classes,sti.birth);if(!j) printf("There is no this school number!");else printf("Success.There are %d

15、student.",p);inquiries(k,st);break; case 2:j=0;printf("Please input you class number bbbbbbb"); scanf("%ld",&a);for(i=0;i<k;i+)if(sti.classes=a) i=1;p+; printf("%d%s%d%d%ld",sti.num,,sti.sex,sti.classes,sti.birth); if(!j) printf("There is no thi

16、s Class!");else printf("Success.There are %d student.",p);inquiries(k,st);break; case 3:j=0; printf("Please input you date of birth bbbbbbb");scanf("%ld",&a);for(i=0;i<k;i+)if(sti.birth=a) i=1;p+; printf("%d%s%d%d%ld",sti.num,,sti.sex,sti.c

17、lasses,sti.birth); if(!j) printf("There is no this date of birth!");else printf("Success.There are %d student.",p);inquiries(k,st);break; case 4:free(st);menu();break; 3、修改模塊分析修改一個學(xué)生的信息首先要利用學(xué)生證號在已經(jīng)存儲的信息中找到該學(xué)生的信息并輸出該學(xué)生的具體信息,再在閱讀完信息之后選擇所需要修改的信息。修改成功之后需要將已經(jīng)更改的信息輸出到屏幕和指定文件保存。成功之后返回到m

18、enu()函數(shù)繼續(xù)選擇并執(zhí)行其他操作。其中的信息比較也是通過輸入學(xué)號和機(jī)構(gòu)體中的學(xué)號項(xiàng)逐個比較。流程圖顯示一系列功能選項(xiàng)輸入n,判斷n是否是0-6返回menu()函數(shù)n=1n=4n=3n=2Nn=5n=6改學(xué)號改姓名改性別改班級改出生重輸入程序/*change*/ void change(int k,STU *st) int a,i,n,w,j=0,p,q=0; FILE *fp; fp=fopen("student1","wb"); if(!fp) printf("Document error! "); exit(0); print

19、f("Plese input you change number bbbbbbb"); scanf("%ld",&a); for(i=0;i<k;i+) if(sti.num=a) j=1;p=i; do printf("ntt*CHANGES MENU*"); printf("nttt1.Change Number");/修改學(xué)號 printf("nttt2.Change Name");/修改名字 printf("nttt3.Change Sex");/修改性

20、別 printf("nttt4.Change classes");修改班號 printf("nttt5.Change Date of birth");修改出生日期 printf("nttt6.Back"); printf("ntt*n"); printf("nChoice your number(1-6) bbbbbbb"); scanf("%d",&n); if(n<1&&n>6) w=1;getchar(); else w=0; whi

21、le(w=1); switch(n) case 1:printf("nPlease input your new number bbbbbbb"); scanf("%ld",&sti.num);q=1;change(k,st);break; case 2:printf("nPlease input your new name bbbbbbbbb"); scanf("%s",);q=1;change(k,st);break; case 3:printf("nPlease input

22、your right sexmale(M) or female(f) bbbbbbb"); scanf("%d",&sti.sex);q=1;change(k,st);break; case 4:printf("nPlease input your new classes bbbbbbb"); scanf("%ld",&sti.classes);q=1;change(k,st);break; case 5:printf("nPlease input your right date of birth

23、bbbbbbb"); scanf("%ld",sti.birth);q=1;change(k,st);break; case 6:rewind(fp); fprintf(fp,"%d",k); for(i=0;i<k;i+) fprintf(fp,"%ld%s%d%ld%ld",sti.num,,sti.sex,sti.classes,sti.birth); if(p) printf("The changed information are:%ld%s%d%ld%ld",stq.nu

24、m,,stq.sex,stq.classes,stq.birth); free(st);fclose(fp);menu(); if(!j) printf("There is no this student");free(st);menu(); 4、刪除模塊分析刪除一個給定學(xué)號的學(xué)生的信息時需要在學(xué)號輸入后在已經(jīng)有的學(xué)生信息中逐個查找,發(fā)現(xiàn)該信息后直接將后一個結(jié)構(gòu)體元素復(fù)制個被刪除的元素,依次類推,直到倒數(shù)第二個元素被復(fù)制,這時將結(jié)構(gòu)體的有效元素個數(shù)減1便完成該學(xué)生信息的刪除。在刪除成功后需要將被改變的學(xué)生信息輸出到指定文件。成功之后釋放結(jié)構(gòu)體空間,關(guān)閉文件并

25、返回到menu()函數(shù)繼續(xù)選擇并執(zhí)行其他操作。流程圖輸入要刪除的學(xué)生信息的學(xué)號查詢是否存在輸入學(xué)號的信息在結(jié)構(gòu)體數(shù)組中逐個代替法刪除刪除的學(xué)號并將更改后的信息寫入指定文件輸出被刪除學(xué)生的其他信息返回到menu()函數(shù)YYN程序/*delete*/ delete(int k,STU *st) int i,j,b; long a; FILE *fp; printf("Please input your delete school number bbbbbbb"); scanf("%ld",&a); for(i=0;i<k;i+) if(sti.

26、num=a) printf("The deleted information are:%ld%s%d%ld%ld",sti.num,,sti.sex,sti.classes,sti.birth);for(;i<k-1;i+) sti.num=sti+1.num; strcpy(,sti+1.name); sti.sex=sti+1.sex; sti.classes=sti+1.classes; sti.birth=sti+1.birth; j=k-1;fp=fopen("student1","wb"

27、;); if(!fp) printf("Document error! "); exit(0); rewind(fp); fprintf(fp,"%d",j); for(i=0;i<j;i+) fprintf(fp,"%ld%s%d%ld%ld",sti.num,,sti.sex,sti.classes,sti.birth); free(st);fclose(fp);menu(); break; else printf("There is no this schol number!"); fr

28、ee(st);fclose(fp);menu(); 5、統(tǒng)計(jì)模塊分析統(tǒng)計(jì)的主要項(xiàng)目有姓名、班級、性別和出生日期,并通過可輸入菜單完成統(tǒng)計(jì)項(xiàng)目的選擇和相應(yīng)功能的執(zhí)行。在統(tǒng)計(jì)時是將輸入的信息和結(jié)構(gòu)體中的已有信息進(jìn)行比較,如果出現(xiàn)同樣的信息便輸出該同學(xué)的信息并進(jìn)行記數(shù)統(tǒng)計(jì)。完成后釋放結(jié)構(gòu)體指針空間,返回到menu()函數(shù)繼續(xù)選擇并執(zhí)行其他操作。流程圖顯示一系列功能選項(xiàng)輸入n,判斷n是否是1-5輸出統(tǒng)計(jì)姓 名輸出統(tǒng)計(jì)班 級輸出統(tǒng)計(jì)性 別輸出統(tǒng)計(jì)生 日關(guān)閉文件釋放指針返回統(tǒng)計(jì)函數(shù)繼續(xù)統(tǒng)計(jì)n=1n=2n=3n=4n=5N返回主函數(shù)程序/*statistic*/ void statistic(int k,S

29、TU *st) int n,w,i,b,p=0; long a; int name10; do printf("ntt*STATISTIC MENU*nn"); printf("ttt1.Name statisticn"); printf("ttt2.classes statisticn"); printf("ttt3.Sex statisticn"); printf("ttt4.Date of birth statisticn"); printf("ttt5.Back");

30、 printf("nntt*n"); printf("Choice your number(1-5) bbbbbbb"); scanf("%d",&n); if(n<1&&n>5) w=1;getchar(); else w=0; while(w=1); switch(n) case 1:printf("nPlease input you statistic name bbbbbbbbb"); scanf("%s",name); for(i=0;i<k;

31、i+)if(!strcmp(,name) p+; printf("%ld%s%d%ld%ld",sti.num,,sti.sex,sti.classes,sti.birth); if(p) printf("There are %d students.",p); statistic(k,st); case 2:printf("nPlease input you classes bbbbbbb"); scanf("%ld",&a); for(i=0;i<k;i+)if(st

32、i.classes=a) p+; printf("%ld%s%d%ld%ld",sti.num,,sti.sex,sti.classes,sti.birth); if(p) printf("There are %d students.",p); statistic(k,st); case 3:printf("nPlease input you statistic sex M or F bbbbbbb"); scanf("%d",&b); for(i=0;i<k;i+)if(sti.se

33、x=b) p+; printf("%ld%s%d%ld%ld",sti.num,,sti.sex,sti.classes,sti.birth); if(p)printf("There are %d students.",p); statistic(k,st); case 4:printf("nPlease input you date of birth bbbbbbb"); scanf("%ld",&a); for(i=0;i<k;i+) if(sti.classes=a) p+; p

34、rintf("%ld%s%d%ld%ld",sti.num,,sti.sex,sti.classes,sti.birth); if(p)printf("There are %d students.",p); statistic(k,st); case 5:free(st);menu(); 五、 上機(jī)操作六、 源程序#include<stdio.h>#include<malloc.h>#include<string.h>#include<stdlib.h>#define STU struct

35、student STU long num; char name20; int sex; long classes; long birth; ;/*input*/void input(int k,STU *st) int n,i; FILE *fp; long b; STU student_1; printf("Please input your number bbbbbbb"); scanf("%ld",&b); for(i=0;i<k;i+) if(sti.num=b) printf("nThe school number is

36、 repeat!n"); free(st);menu(); else printf("nPlease input your name bbbbbbbbb"); scanf("%s",student_1.name); printf("nPlease input you sex male(1) or female(2) bbbbbbb"); scanf("%d",&student_1.sex); printf("nPlease input you Class bbbbbbb");

37、scanf("%ld",&student_1.classes); printf("nPlease input you date of birth bbbbbbb"); scanf("%ld",&student_1.birth); fp=fopen("student1.txt","ab"); if(!fp) printf("Document error! "); exit(0); elsefprintf(fp,"%ld%s%d%ld%ld",

38、b,student_1.name,student_1.sex,student_1.classes,student_1.birth);printf("%ld%s%d%ld%ld",b,student_1.name,student_1.sex,student_1.classes,student_1.birth); n=k+1; rewind(fp); fprintf(fp,"%d",n); fclose(fp); free(st); menu();/*inquiries*/ void inquiries(int k,STU *st) int i,j=0,n,

39、p,w; long a; do printf("ntt*INQUIRIE MENU*nn"); printf("ttt1.Inquiries school numbern"); printf("ttt2.Inquiries classesn"); printf("ttt3.Inquiries date of birthn"); printf("ttt4.Back to menun"); printf("nntt*n"); printf("Choice your nu

40、mber(1-4) bbbbbbb"); scanf("%d",&n); if(n<1&&n>4) w=1;getchar(); else w=0; while(w=1); switch(n) case 1:j=0;printf("Please input your inquiries school number bbbbbbb"); scanf("%ld",&a); for(i=0;i<k;i+)if(sti.num=a) j=1;p+; printf("%ld%

41、s%d%ld%ld",sti.num,,sti.sex,sti.classes,sti.birth);if(!j) printf("There is no this school number!");else printf("Success.There are %d student.",p);inquiries(k,st);break; case 2:j=0;printf("Please input you class number bbbbbbb"); scanf("%ld",&

42、a);for(i=0;i<k;i+)if(sti.classes=a) i=1;p+; printf("%d%s%d%d%ld",sti.num,,sti.sex,sti.classes,sti.birth); if(!j) printf("There is no this Class!");else printf("Success.There are %d student.",p);inquiries(k,st);break; case 3:j=0; printf("Please input you

43、date of birth bbbbbbb");scanf("%ld",&a);for(i=0;i<k;i+)if(sti.birth=a) i=1;p+; printf("%d%s%d%d%ld",sti.num,,sti.sex,sti.classes,sti.birth); if(!j) printf("There is no this date of birth!");else printf("Success.There are %d student.",p);inq

44、uiries(k,st);break; case 4:free(st);menu();break; /*change*/ void change(int k,STU *st) int a,i,n,w,j=0,p,q=0; FILE *fp; fp=fopen("student1","wb"); if(!fp) printf("Document error! "); exit(0); printf("Plese input you change number bbbbbbb"); scanf("%ld&qu

45、ot;,&a); for(i=0;i<k;i+) if(sti.num=a) j=1;p=i; do printf("ntt*CHANGES MENU*"); printf("nttt1.Change Number"); printf("nttt2.Change Name"); printf("nttt3.Change Sex"); printf("nttt4.Change classes"); printf("nttt5.Change Date of birth&quo

46、t;); printf("nttt6.Back"); printf("ntt*n"); printf("nChoice your number(1-6) bbbbbbb"); scanf("%d",&n); if(n<1&&n>6) w=1;getchar(); else w=0; while(w=1); switch(n) case 1:printf("nPlease input your new number bbbbbbb"); scanf("

47、%ld",&sti.num);q=1;change(k,st);break; case 2:printf("nPlease input your new name bbbbbbbbb"); scanf("%s",);q=1;change(k,st);break; case 3:printf("nPlease input your right sexmale(M) or female(f) bbbbbbb"); scanf("%d",&sti.sex);q=1;change(

48、k,st);break;case 4:printf("nPlease input your new classes bbbbbbb"); scanf("%ld",&sti.classes);q=1;change(k,st);break;case 5:printf("nPlease input your right date of birth bbbbbbb"); scanf("%ld",sti.birth);q=1;change(k,st);break;case 6:rewind(fp); fprintf(

49、fp,"%d",k); for(i=0;i<k;i+) fprintf(fp,"%ld%s%d%ld%ld",sti.num,,sti.sex,sti.classes,sti.birth); if(p) printf("The changed information are:%ld%s%d%ld%ld",stq.num,,stq.sex,stq.classes,stq.birth); free(st);fclose(fp);menu(); if(!j) printf("There is no this student");free(st);menu(); /*delete*/ delete(int k,STU *st) int i,j,b; long a; FILE *fp; printf("Please input your delete school number bbbbbbb"); scanf("%ld",&a); for(i=0;i<k;i+)

溫馨提示

  • 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

提交評論