




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、學生證的管理程序 C語言課程設計報告一、 題目要求該程序應該具有下列功能:1、錄入某位學生的學生證信息。學生證應該包照自含的信息請參己的學生證;2、給定學號,顯示某位學生的學生信息;3、給定某個班級的班號,顯示該班所有學生的學生證信息4、給定某位學生的學號,修改該學生的學生信息;5、給定某位學生的學號,刪除該學生的學生信息;6、提供一些統(tǒng)計各類信息的功能。輸入要求應用程序后,在屏幕上顯示一個菜單。用戶可以根據(jù)要求選定相應的操作項目。進入每個操作后,根據(jù)應用程序的提示信息,從鍵盤輸入相應的信息。輸出要求1、 應用程序運行后,要在屏幕上顯示一個菜單;2、 要求用戶輸入數(shù)據(jù)時,要給出清晰、明確的提示
2、信息,包括輸入的數(shù)據(jù)內容、格式及結束方式等。提示設計一個結構體類型和一維數(shù)組類型,用來保存學生證內容;二、 需求分析 根據(jù)題目要求,由于學生信息是一個有不同類型的變量組成,因此,應提供結構體操作,在程序中需要瀏覽學生信息,應提供顯示、查找、修改、刪除、統(tǒng)計等操作。另外還應該提供鍵盤式的選擇菜單實現(xiàn)功能選擇。三、 總體設計學生證的管理程序主要包含學生信息的錄入、修改、刪除、查詢、統(tǒng)計等模塊。為了各模塊的獨立性,將顯示模塊分別鑲嵌在錄入、修改、刪除、查詢、統(tǒng)計等模塊中。學生證管理程序錄 入模 塊查 詢模 塊修 改模 塊刪 除模 塊統(tǒng) 計模 塊四、 詳細分析1、 主函數(shù)分析主函數(shù)的設計簡潔,只提供加
3、錄入、修改、刪除、查詢、統(tǒng)計和顯示等函數(shù)的調用和加載功能。其中各功能模塊用菜單方式選擇。并將main()函數(shù)體內的界面選擇部分部分語句單獨抽出來做一個獨立的函數(shù),目的在于系統(tǒng)執(zhí)行完每部分功能模塊后能更方便返回到系統(tǒng)界面。menu()函數(shù)從主函數(shù)中獨立出來后,表面的主函數(shù)只是起一個程序開始的作用,其主要功能被獨立出來的被調用的menu()函數(shù)所取代。menu()函數(shù)主要完成菜單的輸出和被選擇的項目的輸入和相應執(zhí)行函數(shù)的調用。并將已經擁有的信息從指定文件中讀取到結構體st中,以便執(zhí)行其他的功能性函數(shù)。成功后需要關閉文件。流程圖顯示一系列功能選項加載已有信息輸入n,判斷n是否是1-6根據(jù)的值調用各功
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");/輸入學生信息 printf("ttt2.Inquiries information of studentn")/顯示學生信息; printf("ttt3.Changes information of studentn");/修改學生信息 printf("ttt4.Delete information of studentn");/刪除學生信息 printf("ttt5.Statistic information of studentn");/統(tǒng)計學生信
6、息 printf("ttt6.Exit");/結束 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、各功能模塊設計(1) 輸入模塊設計 分析在向指定文件輸出學生信息及錄入信息前需要將輸入的學生證號進行檢測,該檢測是在結構體中st元素的學號項值比較而得出。如果已經存在的序號拒絕錄入,如果還沒有輸入的學生證號就按提示繼續(xù)輸入學生信息信息。輸入成功后顯示剛輸入的信息并將信息輸出到指定文件的末尾。成功后將釋放機構體指針;關閉文件并返回到menu()函數(shù)繼續(xù)選擇并執(zhí)行其他操作。流程圖輸入新加學號b,判斷是否重復按提
8、示輸入姓名等其他信息將信息存儲在STU型結構體中將信息存儲到指定文件末尾NY關閉文件、釋放結構體指針返回到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");/輸入學號 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、查詢模塊分析查詢的主要方式就是通過學號查詢,查詢時需要通過輸入學號并按學生信息儲存逐個核對,如果出現(xiàn)發(fā)現(xiàn)相同信息則輸出該同學的其他信息,沒有發(fā)現(xiàn)相同的信息則提示未找到并返回到menu()函數(shù)繼續(xù)選擇并執(zhí)行其他操作。該查詢也是通過機構體st的元素項的比較得出。運行結束后需要
12、關閉文件并釋放機構體指針的空間。一系列功能選項流程圖“NO”輸入n,判斷n的值是否是14,查找出生日期查找班級查找學號返回到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、修改模塊分析修改一個學生的信息首先要利用學生證號在已經存儲的信息中找到該學生的信息并輸出該學生的具體信息,再在閱讀完信息之后選擇所需要修改的信息。修改成功之后需要將已經更改的信息輸出到屏幕和指定文件保存。成功之后返回到m
18、enu()函數(shù)繼續(xù)選擇并執(zhí)行其他操作。其中的信息比較也是通過輸入學號和機構體中的學號項逐個比較。流程圖顯示一系列功能選項輸入n,判斷n是否是0-6返回menu()函數(shù)n=1n=4n=3n=2Nn=5n=6改學號改姓名改性別改班級改出生重輸入程序/*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");/修改學號 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、刪除模塊分析刪除一個給定學號的學生的信息時需要在學號輸入后在已經有的學生信息中逐個查找,發(fā)現(xiàn)該信息后直接將后一個結構體元素復制個被刪除的元素,依次類推,直到倒數(shù)第二個元素被復制,這時將結構體的有效元素個數(shù)減1便完成該學生信息的刪除。在刪除成功后需要將被改變的學生信息輸出到指定文件。成功之后釋放結構體空間,關閉文件并
25、返回到menu()函數(shù)繼續(xù)選擇并執(zhí)行其他操作。流程圖輸入要刪除的學生信息的學號查詢是否存在輸入學號的信息在結構體數(shù)組中逐個代替法刪除刪除的學號并將更改后的信息寫入指定文件輸出被刪除學生的其他信息返回到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)計模塊分析統(tǒng)計的主要項目有姓名、班級、性別和出生日期,并通過可輸入菜單完成統(tǒng)計項目的選擇和相應功能的執(zhí)行。在統(tǒng)計時是將輸入的信息和結構體中的已有信息進行比較,如果出現(xiàn)同樣的信息便輸出該同學的信息并進行記數(shù)統(tǒng)計。完成后釋放結構體指針空間,返回到menu()函數(shù)繼續(xù)選擇并執(zhí)行其他操作。流程圖顯示一系列功能選項輸入n,判斷n是否是1-5輸出統(tǒng)計姓 名輸出統(tǒng)計班 級輸出統(tǒng)計性 別輸出統(tǒng)計生 日關閉文件釋放指針返回統(tǒng)計函數(shù)繼續(xù)統(tǒng)計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(); 五、 上機操作六、 源程序#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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 展廳沙盤施工方案模板
- 充電樁設計合同范例
- 義工合同范例
- 三保服務合同范例
- 獸藥代工合同范例
- 個人跟工廠 采購合同范例
- 買房住房合同范例
- 專利授權借用合同范例
- 空間異質性和作物生長狀況對農田遙感識別方法的影響
- 個人財務顧問合同范例
- 股骨頸置換術后護理
- 《教育強國建設規(guī)劃綱要(2024-2035年)》解讀專題講座
- 2025湖北省建筑安全員考試題庫及答案
- 2025年《中央一號文件》參考試題庫資料100題及答案(含單選、多選、判斷題)
- 《影視照明技術》課件:照亮影視作品的靈魂
- 《酒店前廳設計》課件
- 老年醫(yī)學科建設與發(fā)展
- 2025年貴州能礦錳業(yè)集團有限公司招聘筆試參考題庫含答案解析
- 公司積分制管理實施方案
- 2024年湖南科技職業(yè)學院高職單招語文歷年參考題庫含答案解析
- 《性病防治知識講座》課件
評論
0/150
提交評論