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

下載本文檔

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

文檔簡介

C語言課程設(shè)計(jì)報(bào)告學(xué) 院: 地球科學(xué)學(xué)院專 業(yè): 資源環(huán)境與城鄉(xiāng)規(guī)劃管理題 目: 學(xué)生證管理系統(tǒng)班 號(hào): XXXXXXXXTOC\o"1-5"\h\z姓 名:學(xué) 號(hào): XXXXXXXX指導(dǎo)教師:報(bào)告目錄ー、課程設(shè)計(jì)目的 3二、實(shí)習(xí)內(nèi)容及要求 3\o"CurrentDocument"三、需求分析 3四、總體分析 3\o"CurrentDocument"五、詳細(xì)設(shè)計(jì) 4\o"CurrentDocument"5.0頭文件及結(jié)構(gòu)體 4\o"CurrentDocument"5.1主函數(shù) 4\o"CurrentDocument"公共函數(shù) 6\o"CurrentDocument"添加模塊 10\o"CurrentDocument"修改模塊 10\o"CurrentDocument"瀏覽模塊 11查詢模塊 115.7.1按學(xué)號(hào)查詢 125.7.2按名字查詢 135.7.3按班級(jí)查詢 14\o"CurrentDocument"5.8統(tǒng)計(jì)模塊 145.8.1男生信息 158.2女生信息 178.3全體學(xué)生信息 18\o"CurrentDocument"5.9刪除模塊 19\o"CurrentDocument"六、上機(jī)操作 20\o"CurrentDocument"1系統(tǒng)說明 20\o"CurrentDocument"6.2系統(tǒng)測試 20\o"CurrentDocument"七、總結(jié) 25\o"CurrentDocument"ハ、源代碼 25ー、課程設(shè)計(jì)目的通過實(shí)踐,學(xué)會(huì)編制結(jié)構(gòu)清晰、風(fēng)格良好、數(shù)據(jù)結(jié)構(gòu)適當(dāng)?shù)腃語言程序,加深對C語言基礎(chǔ)知識(shí)的理解和掌握,進(jìn)ー步鞏固C語言編程實(shí)踐能力,鍛煉思維邏輯和解決綜合性實(shí)際問題的能力。二、實(shí)習(xí)內(nèi)容及要求1、用c語言編寫ー個(gè)學(xué)生證管理系統(tǒng),該系統(tǒng)具有以下功能:(1)錄入某位學(xué)生的學(xué)生證信息;(2)給定學(xué)號(hào),顯示某位學(xué)生的學(xué)生證信息;(3)給定某個(gè)班級(jí)的班號(hào),顯示該班所有學(xué)生的學(xué)生證信息;(4)給定某位學(xué)生的學(xué)號(hào),修改該學(xué)生的學(xué)生證信息;(5)給定某位學(xué)生的學(xué)號(hào),刪除該學(xué)生的學(xué)生證信息;(6)提供一些統(tǒng)計(jì)各類信息的功能;(7)提供瀏覽所有學(xué)生的學(xué)生證信息的功能。2、輸入要求應(yīng)用程序運(yùn)行后,在屏幕上顯示一個(gè)菜單;用戶可以根據(jù)要求,選定相應(yīng)的操作項(xiàng)目;進(jìn)入某個(gè)操作后,根據(jù)應(yīng)用程序的提示,從鍵盤輸入相應(yīng)的信息。3,輸出要求(1)應(yīng)用程序運(yùn)行后,要在屏幕上顯示ー個(gè)菜單;(2)要求用戶輸入數(shù)據(jù)時(shí),給出清晰、明確的提示信息,包括輸入的數(shù)據(jù)內(nèi)容、格式及結(jié)束方式等。三、需求分析根據(jù)題目要求,學(xué)生信息要從文本文件中存取,所以本程序應(yīng)該提供讀寫文件,顯示、統(tǒng)計(jì)、查詢、修改記錄,保存文件等操作,此外,還應(yīng)該提供鍵盤式選擇菜單實(shí)現(xiàn)功能。四、總體設(shè)計(jì)根據(jù)需求分析,可以把這個(gè)系統(tǒng)的設(shè)計(jì)分為添加、修改、查詢、瀏覽、統(tǒng)計(jì)、刪除六大模塊,其中查詢模塊可以分為三個(gè)子模塊,統(tǒng)計(jì)模塊可以分為三個(gè)子模塊,子模塊下面還有子函數(shù);系統(tǒng)功能模塊圖如下所示:五、詳細(xì)設(shè)計(jì)5.0頭文件及結(jié)構(gòu)體#include<stdio.h>#include<stdlib.h>#include<string.h>#defineN100structClass(charCname[20];charCno[20];1■〃班級(jí)〃班名〃班號(hào)LstructStudent(charSname[20];charSex[10J;charSno[20];intAge;structClassCInfo;}StuInfo[N];〃學(xué)生〃姓名〃性別〃學(xué)號(hào)〃年齡〃嵌套結(jié)構(gòu)體,表示班級(jí)信息〃結(jié)構(gòu)體數(shù)組,用作讀取和存放臨時(shí)數(shù)據(jù)5.1主函數(shù)voidmain()(〃菜單menu();〃菜單getchar();}(主菜單)5.2菜單模塊voidmenu()(intchose;intright;do{system(HclsM);printf("\n\t\t\t\t學(xué)生證管理系統(tǒng)\n");printf(" ");printf("菜單:\tl-添加ゝt2一修改't3ー瀏覽全部\t4ー查詢't5ー統(tǒng)計(jì)ゝt6ー刪除ゝt7ー退出\n");printf(" ");primf("請輸入數(shù)字選擇:");scanf("%dH,&chose);if(chose<1llchose>8){right=l;printf("輸入錯(cuò)誤,請重新輸入!\n");getchar();}elseright=O;}while(right==l);switch(chose)case1:add();break;//添加模塊case2:modify();break;〃修改模塊case3:browse();break;〃瀏覽模塊case4:quiry();break;〃查詢模塊case5:stastic();break;〃統(tǒng)計(jì)模塊case6:Delete();break;//刪除模塊case7:exit(0);〃退出5.3公共函數(shù)5.3.1返回主菜單函數(shù)voidBackMenu()(printf(H\n請按enter鍵返回主菜單!\n”);getchar();getchar();menu();)3.2加載文件函數(shù)以讀(r)的方式打開Stulnfo.txt文件,若不能打開,表示文件不存在,返回0;若文件存在,就讀入所有記錄到結(jié)構(gòu)體數(shù)組中,并返回記錄數(shù);intLoadFileO(inti;FILE*fp;if((fp=fopen(,'StuInfo.txtM;,r,,))==NULL)(return0; 〃返回〇,表示文件不存在)for(i=0;!feof(fp);i++){fscanf(fp,M%s%s%s%d%s%sM,&StuInfo[i].Sname,&StuInfb[i].Sex,&StuInfo[i].Sno,&StuInfd[i].Age,&StuInfo[i].CInfo.Cno,&StuInfo[i].CInfo.Cname);)fclose(fp);returni;〃返回記錄條數(shù))5.3.3輸入第num+1條記錄

首先要判斷記錄數(shù)num==N是否成立,因?yàn)榻Y(jié)構(gòu)體數(shù)組的大小為N,當(dāng)num=N時(shí),表示已滿,不能再存儲(chǔ)數(shù)據(jù),需要修改N的值。若numくN,則按提示輸入ー一條記錄,輸入格式要求:性別為男或女,學(xué)號(hào)為11位且不能重復(fù),年齡在0T00之間,班級(jí)號(hào)為6位,程序提供了完善的驗(yàn)證機(jī)制,輸入錯(cuò)誤時(shí)將提示重新輸入直到正確為止。(開始)voidInput(intnum)Iinti;intage;charsno[20];charsex[20];charcno[20];intright;if(num==N)(printf(”\n保存記錄數(shù)超出結(jié)構(gòu)體數(shù)組數(shù)的大小,請先修改N的值\n");BackMenu();)printf("\n請按照提示輸入學(xué)生信息:\n\n");printf("姓名:");scanf("%s",&StuInfo[num].Sname);do(printf("\n性別(男或女):");scanf(H%s,\sex);if((strcmp(sex,"男")!=0)&&(strcmp(sex,"女")!=0))(printf("輸入錯(cuò)誤,請輸入男或女!、バ);right=l;getchar();}elseright=O;}while(right==l);strcpy(StuInfo[num].Sex,sex);do{printf("\n學(xué)號(hào)(11位):”);scanf("%s",sno);if(strlen(sno)!=l1){printf("輸入錯(cuò)誤,學(xué)號(hào)長度應(yīng)為11位數(shù)!'n");right=1;getchar();}elseright=O;for(i=0;i<num;i++){if(strcmp(sno,StuInfo[i].Sno)=0)(printf("該學(xué)號(hào)已經(jīng)存在,請重新輸入!'n");right=1;getchar();})}while(right==l);strcpy(StuInfo[num].Sno,sno);do|printf(n'n年齡:");scanf(M%dn,&age);if(age<=0llage>100)printf("年齡應(yīng)在0-100之間,請重新輸入年齡!\n“);right=1;getchar();}elseright=O;}while(right==l);StuInfo[num].Age=age;do(printfCXn班號(hào)(6位):”);scanf(n%sn,cno);if(strlen(cno)!=6){printf("輸入錯(cuò)誤,班號(hào)長度應(yīng)為6位數(shù)!ゝガ);right=l;getchar();)elseright=O;}while(right==l);strcpy(StuInfo[num].CInfo.Cno,cno);printf("\n班名:");scanf(M%sM,&StuInfb[num].CInfo.Cname);}5.3.4保存文件以寫的方式新建文件Stulnfo.txt,然后將結(jié)構(gòu)體數(shù)組中的記錄寫入文件中。voidSaveFile(intnum)〃保存num+l條記錄{FILE*fpw;inti;if((fpw=fopen(',StuInfo.txt,,,,,w,'))==NULL)(printf("文件打不開,保存失敗いn”);BackMenu();}for(i=0;i<=num;i++)(fprintf(fpw;'\n%s\t%s\t%s\t%d\t%s\t%s,',StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[i].Sno,StuInfo[i].Age,StuInfo[i].CInfo.Cno,StuInfo[i].CInfo.Cname);}fclose(fpw);printf(M\n保存成功!\nn);

4添加模塊voidadd()(intnum;system(,'clsn);num=LoadFile();Input(num);SaveFile(num);BackMenu();)修改模塊與輸入模塊ー樣,輸入的格式要求:性別為男或女,學(xué)號(hào)為11位且不能與除當(dāng)前修改的記錄的學(xué)號(hào)外的記錄的學(xué)號(hào)重復(fù),年齡在0T00之間,班級(jí)號(hào)為6位,程序提供了完善的驗(yàn)證機(jī)制,輸入錯(cuò)誤時(shí)將提示重新輸入直到正確為止,輸入完成后,保存文件。voidmodifyO{intnum;inti;intright;intfound=-1;charStuNO[20];num=LoadFile();system(Hcls");if(num==0)(printf("文件為空!");BackMenu();)printf("\n請輸入學(xué)號(hào)選擇要修改的記錄:");scanf("%s",StuNO);for(i=0;i<num;i++){if(strcmp(StuNO,StuInfo[i].Sno)=0){found=i;printf("\n你要修改的學(xué)生信息為:\n\n");printf("姓名 性別 學(xué)號(hào) 年齡讀取文件班號(hào) 班名\n");printf(n%s\t%s\t%s\t%d\t%s\t%s\nH,StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[i].Sno,StuInfo[i].Age,StuInfo[i].CInfo.Cno,StuInfo[i].CInfo.Cname);讀取文件班號(hào) 班名\n");})if(found<0)(printf(H\n沒有找到該學(xué)號(hào)的記錄NT);BackMenu();)Input(found);SaveFile(num-l);BackMenu();)瀏覽模塊voidbrowse() 〃顯示所有學(xué)生信息(intnum;inti;num=LoadFile();system(,'clsM);if(num==0)(printf("文件為空!”);BackMenu();)printf(M\n已添加%d個(gè)學(xué)生信息、n\n”,num);printf("姓名 性別 學(xué)號(hào) 年齡 班號(hào) 班名Xn”);for(i=0;i<num;i++){printf("%s\t%s\t%s\t%d\t%s\t%s\nn,StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[i].Sno,StuInfo[i].Age,StuInfo[i].CInfo.Cno,StuInfo[i].CInfo.Cname);}BackMenu();)查詢模塊voidquiry()(intchose;intright;do{system("cls");printf(”\n\tl-按學(xué)號(hào)查詢't2-按姓名查詢\t3.某班學(xué)生信息't4.返回\n”);

printf(”\n請輸入數(shù)字選擇ア);scanf(H%d';&chose);if(chose<1llchose>4){right=l;getchar();}elseright=O;}while(right==l);switch(chose){case1:system(Mclsn);bySno();break;case2:system(,'cls,');bySname();break;case3:system("cls");byCno();break;case4:menu();}}5.6.0返回查詢子菜單voidBackQuiryO(printf("\n請按enter鍵返回上級(jí)菜單!\n");getchar();getchar();quiry();)5.6.1根據(jù)學(xué)號(hào)查找某學(xué)生的學(xué)生證信息:voidbySno()(intfound=-1;intnum;inti;charno[20];num=LoadFile();if(num==0){printf("文件為空!ッ;BackQuiryO;)printf("\n請輸入學(xué)生學(xué)號(hào):");scanf(n%sM,no);

for(i=0;i<num;i++)if(strcmp(no,StuInfo[i].Sno)==0)(found=i;primf(?該學(xué)生的信息為:\n\n");printf("姓名 性別 學(xué)號(hào)年齡 班號(hào) 班名、ガ);printf(H%s\t%s\t%s\t%d\t%s%s\n,',StuInfo[found].Sname,StuInfo[found].Sex,StuInfo[found].Sno,StuInfo[found].Age,StuInfo[found].CInfo.Cno,StuInfo[found].CInfo.Cname);if(found<0)printf(u\n沒有找到該班號(hào)的記錄!\n");BackQuiryO;}5.6.2根據(jù)姓名查找某學(xué)生的學(xué)生證信息:voidbySname()(intfound=-l;intnum;inti;charname[20];num=LoadFile();if(num==0)printf("文件為空!"); 1BackQuiryO;)printf("\n請輸入學(xué)生姓名:");scanf("%s",name);printf("\n叫該姓名的學(xué)生信息為:\n\n");printf("姓名 性別學(xué)號(hào)年齡班號(hào)for(i=0;i<num;i++){if(strcmp(name,StuInfo[i].Sname)==0){found=i;班名'n");printf(',%s\t%s\t%s\t%d\t%s%s\n,,,StuInfo[found].Sname,StuInfb[found].Sex,StuInfo[fbund].Sno,StuInfo[found].Age,StuInfo[found].CInfo.Cno,StuInfo[found].CInfo.Cname);班名'n");})if(found<0)printf(u\n沒有找到該班號(hào)的記錄!'n");

BackQuiryO;6.3根據(jù)班號(hào)查詢某個(gè)班級(jí)所有學(xué)生的學(xué)生證信息:voidbyCno()(intfound=-1;intnum;inti;charClaNO[20];num=LoadFile();if(num==0)(printf("文件為空!");BackQuiryO;)prinビ("ヽn請輸入班號(hào):");scanf("%s",ClaNO);primf(”\n該班級(jí)的學(xué)生信息為:\n\n”);printf("姓名 性別 學(xué)號(hào) 年齡班號(hào)for(i=0;i<num;i++)(if(strcmp(ClaNO,StuInfo[i].CInfo.Cno)==0)班名\n“);found=i;班名\n“);printf(',%s\t%s\t%s\t%d\t%s%s\n,\StuInfo[found].Sname,StuInfo[found].Sex,StuInfo[found].Sno,StuInfo[found].Age,StuInfo[found].CInfo.Cno,StuInfo[found].CInfo.Cname);))if(found<0)printf("\n沒有找到該班號(hào)的記錄!\n");BackQuiryO;5.7統(tǒng)計(jì)模塊該模塊實(shí)現(xiàn)了基本的統(tǒng)計(jì)功能,包括分別統(tǒng)計(jì)男女生的人數(shù)、平均年齡,以及全體學(xué)生的人數(shù)和平均年齡;voidstastic()intchose;intright;doprintf("\nl?全體男生\t2.全體女生't3.全體學(xué)生't4.返回Xn");printf('*\n請輸入數(shù)字選擇:");scanf(M%dM,&chose);if(chose<1llchose>4)輸入chose輸入chose}elserighl=O;Male。男生信息Male。男生信息{casel:system(“cls");Male();BackStastic();break;case2:system(,,cls");Female();BackStastic();break;case3:system(,,cls',);StuMsg();BackStastic();break;case4:menu();)}5.7.0統(tǒng)計(jì)模塊的公共函數(shù),返トvoidBackStastic()(printfCAn請按enter鍵返回上級(jí)菜單!山’);getchar();getchar();stastic();}5.7.1統(tǒng)計(jì)男生信息子模塊voidMale()(intnum;〃人數(shù)floatmg;〃平均年齡num=MaleNum();mg=MaleMG();printf("\n男生總?cè)藬?shù)為:%d\n平均年齡為:%f\n",num,mg);}返回男生人數(shù)子函數(shù)(開始う讀取文件intMaleNum()intnum;intcount=0;inti;num=LoadFile();if(num==O)printf("文件為空!M);BackStastic();)for(i=0;i<num;i++)(if(strcmp(“男”,StuInfo[i].Sex)=0)count++;}返回男生平均年齡讀取文件}返回男生平均年齡讀取文件floatMaleMGOintnum;intcount=0;intnum;intcount=0;floatmAge=O;inti;num=LoadFile();if(num==O)returnmAgefbr(i=0;!feoftfp);i+4-)

strcmp(nSM,StuInfb[i].Sex)=O

{Counts

mAge+=Stu!nfb[fbund].Age;}printf("文件為空!”);BackStastic();}for(i=0;i<num;i++)if(strcmp(“男”,StuInfo[i].Sex)==0){count++;mAge+=StuInfo[i].Age;if(count>0)

mAge/=count;}returnmAge;)5.7.2統(tǒng)計(jì)女生信息子模塊voidFemale()(intnum;floatmg;num=FemaleNum();mg=FemaleMG();printf("\n女生總?cè)藬?shù)為:%d\n平均年齡為:%f\n",num,mg);)返回女生人數(shù)子函數(shù)intFemaleNum(){返回女生人數(shù)子函數(shù)intFemaleNum(){intnum;intcount=0;inti;num=LoadFile();if(num==0)(printf("文件為空!");BackStastic();)for(i=0;i<num;i++){if(strcmp("女",StuInfo[i].Sex)==0){count++;|)returncount;)返回女生平均年齡floatFemaleMGO(開始)讀取文件fbr(i=0;!feofi[fp);i-H-)

strcmp("^",Stulnfb[i].Sex)=O

Count++retumcountintnum;intcount=0;floatmAge=O;inti;num=LoadFile();if(num==0)(primf("文件為空!り;BackStastic();)for(i=0;i<num;i++){if(strcmp(M^CM,StuInfo[i].Sex)==0){count++;mAge+=StuInfo[i].Age;)}if(count>0)(mAge/=count;)returnmAge;}5.7.3全體學(xué)生統(tǒng)計(jì)信息子模塊voidStuMsgO(intnum;floatmg;num=StuNum();mg=MG();printf("\n學(xué)生總?cè)藬?shù)為:%d\n學(xué)生平均年齡為:%An”,num,mg);Male();Female();)返回全體學(xué)生的人數(shù)子函數(shù)intStuNum()[intnum;num=MaleNum()+FemaleNum();讀取文件讀取文件returnnum;7.3.2返回全體學(xué)生的平均年齡子函數(shù)floatMG()floatmAge;mAge=(MaleNum()*MaleMG()4-FemaleNum()*FemaleMG())/(MaleNum()+FemaleNum());returnmAge;}8刪除模塊voidDelete(){intnum;inti;intfound=-l;charStuNO[20];system("cls");num=LoadFile();if(num==O)(printf("文件為空!");BackMenu();}printf(H\n請輸入學(xué)號(hào)選擇你要?jiǎng)h除的記錄ゴ);scanf("%s\StuNO);for(i=0;i<num;i++)if(strcmp(StuNO,StuInfd[i].Sno)=0)(found=i;printf("\n你刪除的學(xué)生信息為:\n\n");printf("姓名 性別學(xué)號(hào)年齡班號(hào) 班名、n)printf(',%s\t%s\t%s\t%d\t%s%s\n,\StuInfo[found].Sname,StuInfo[found].Sex,StuInfo[found].Sno,StuInfo[found].Age,StuInfo[found].CInfo.Cno,StuInfo[found].CInfo.Cname);if(found<num-l)for(found;found<num-1;found++)strcpy(StuInfo[found].Sname,StuInfo[found+l].Sname);strcpy(StuInfo[found].Sex,StuInfo[found+l].Sex);strcpy(StuInfo[found].Sno,StuInfo[found+l].Sno);

StuInfo[found].Age=StuInfo[found+l].Age;strcpy(StuInfo[found].CInfo.Cno,StuInfo[found+l].CInfo.Cno);strcpy(StuInfo[found].CInfo.Cname,StuInfo[found+l].CInfo.Cname);SaveFile(num-2);)}if(found<0)(printfCAn沒有找到該學(xué)號(hào)的記錄到”);BackMenu();)BackMenu();)六、上機(jī)操作系統(tǒng)說明本系統(tǒng)存儲(chǔ)信息的文本文件名為Stulnfo.txt;由程序自動(dòng)創(chuàng)建,該文件在程序主目錄下,如過該文件已存在,也可以直接打開該文件進(jìn)行瀏覽、編輯;D?里國wDebugStudent,cD?里國wDebugStudent,cStudent,dspStudentStudent,opt葡StudentriStulnfo,1□1x|文件⑹編輯?格式9)幫助出ヨ偉民方偉琴

仙世笑小2007100392622014072地理二班2001477582123014072地理二班2001544875423014071地理一班2558444758621014071地理一班2007100445821014072地理三班系統(tǒng)測試6.2.0主菜單

學(xué)生證管理系統(tǒng)菜單:?添加2一修改3ー瀏覽全部 4ー查詢5ー統(tǒng)計(jì)6ー刪除7一退出請輸入數(shù)字選擇2.1瀏覽數(shù)據(jù)己添加5個(gè)學(xué)生信息民方偉琴己添加5個(gè)學(xué)生信息民方偉琴偉名世尖小仙姓李王書李年齡班號(hào)23014072施理二班23014071地理一班21014071地理一班21014072地理三班21014072地理二班子節(jié)2001477582120015448754255844475862007100445820071003925請按enter鍵返回主菜單,6.2.2添加數(shù)據(jù)c\"C:\Docu>entsandSett rator、桌面、學(xué)生證管理系統(tǒng)\Debug\Stud...請按照提示輸入學(xué)生信息:姓名:高小寒駅讎囁舞或女,性別(男或女):男學(xué)號(hào)(H位):2007輸入宿誤,學(xué)號(hào)長度應(yīng)為[[位數(shù),學(xué)號(hào)<1[位):200?[003925該學(xué)號(hào)己經(jīng)存在,請重新輸入,學(xué)號(hào)([[位):2007[003926年齡:2[[車舲應(yīng)在0T00之間,請重新輸入年齡,年齡:20班號(hào)(6位):02[綸入錯(cuò)誤,班號(hào)長度應(yīng)為6位數(shù),班號(hào)(6位):讓4072班名:地理二班保存成功!請按enter鍵返回主菜單,添加該生信息后瀏覽結(jié)果:1cC'C:\DocuBentsandSettings'Adainistratoエ、桌面、學(xué)生證管理系統(tǒng)\Debug\Stud???|sE)已添加6個(gè)學(xué)生信息-,姓名性別 學(xué)號(hào) 年齡班號(hào) 班名李世民男20014775821 23 014072 地理二班主個(gè)方な20015448754 23 01407I 地理一班茅大偉 男25584447586 21 01407I 地理一班廣小琴 な20071004458 21 014072 地理三班李仙偉S20071003925 21 014072 地理二班高小寒 男20071003926 20 014072 :地理ニ班請按enter鍵返回主菜單?16.2.3修改數(shù)據(jù)c:*C:\Docu>entsandSettings\Ad*inistrator\^ffi\^£iiE^9^S£\Debug\Stud...請輸入學(xué)號(hào)選擇要修改的記錄:20071004458你要修改的學(xué)生信息為?姓名性別 學(xué)號(hào) 年齡班號(hào) 班名ー黃小琴女20071004458 21 014072 地理三班請按照提示輸入學(xué)生信息:姓名:高小琴性別(男或女):女學(xué)號(hào)(11位):20071004458年齡:21班號(hào)(6位):014071班名:地理ー班保存成功!請按enter鍵返回主菜單,修改后的結(jié)果c<*C:\Docu>entsand56七ta85\4(1?1£,セ門101ヽ桌面ゝ學(xué)生證管理系統(tǒng)\口?1111&\$1遍???己添加6個(gè)學(xué)生信息姓李王吏咼至咼名世尖^^小姓李王吏咼至咼名世尖^^小民方偉琴偉寒學(xué)方年齡班號(hào)班名2001477582123014072地理二班2001544875423014071地理一班2558444758621014071地理一班2007100445821014071地理一班2007100392521014072地理二班2007100392620014072地理二班請按enter鍵返回主菜單,可"二回メ民偉寒另可"二回メ民偉寒另性?^^學(xué)號(hào) 年齡20014775821 2320071003925 2120071003926 20班號(hào) 班名014072 地理二班014072 通理二班014072 地理二班cl*C:\Docu>entsand5£1セ1れ8.\ム(1>1£$!m1〇し'桌面ゝ學(xué)生證管理系統(tǒng)\?£1)1!8ヽ5セ!Iイ??.い按學(xué)號(hào)查詢 2ー按姓名查詢 3ー某班學(xué)生信息4ー返回請輸入數(shù)字選擇:i.按學(xué)號(hào)查詢:C:'DocuaentsandSettings'Ad>inistrator'桌面'學(xué)生證管理系統(tǒng)'Debug'Stud.?.-可X請輸入學(xué)生學(xué)號(hào):20071003925該學(xué)生的信息為:姓名 性別 學(xué)號(hào)年齡班號(hào) 班名李仙偉男20071003925 21 014072地理二班請按enter鍵返回上級(jí)菜單!按姓名査詢:バ?C:\Docu>entsandSettings\Ad>inistrator、桌面、學(xué)生證管理系統(tǒng)\Debug\Stud...請輸入學(xué)生姓名:李仙偉叫該姓名的學(xué)生信息為:姓名 性別 學(xué)號(hào) 年齡班號(hào) 班名ー李仙偉男20071003925 21 014072 地理二班請按enter鍵返回上級(jí)菜單,按班級(jí)查詢:ct"C:\DocuBentsandSettings\Ad>inistrator、桌面、學(xué)生證管理系統(tǒng)\Debug\Stud 請輸入班號(hào):014072該班級(jí)的學(xué)生信息為:請按enter鍵返回上級(jí)菜單,

|Ta|xc\*C:\Docu>entsandSettings\Ad>inistrator\桌面、學(xué)生證管理系統(tǒng)\Debug\Stud.?.|Ta|x請輸入學(xué)號(hào)選擇你要?jiǎng)h除的記錄:20071003926你刪除的學(xué)生信息為:筵名 性別 學(xué)號(hào) 年齡班號(hào) 班名高小寒男20071003926 20 014072地理二班保存成功!請按enter鍵返回主菜單?刪除后的結(jié)果:い?C:\Docu>entsandSettings\Ad>inist門七〇ハ桌面ヽ學(xué)生證管理系統(tǒng)\?ヒ1)1Iハ5セ£ 己添加5個(gè)學(xué)生信息名世^仙民方偉琴偉名世^仙民方偉琴偉學(xué)節(jié)年齡班號(hào)20014775821230140722001544875423014071255844475862101407120071004458210140712007100392521014072ニーニニ名理理理理理任也也也也也り丸丸丸丸九別性男皇賓請按entei?鍵返回王菜單,七、總結(jié)本次C語言課程設(shè)計(jì)非常有意義,它鍛煉了我們解決實(shí)際問題的能力。由于本人對編程感興趣,在編程方面有一定基礎(chǔ),因此嘗試著由自己完成整個(gè)系統(tǒng),在設(shè)計(jì)的過程里也遇到了很多麻煩,但是通過査詢參考書和網(wǎng)絡(luò),?個(gè)個(gè)疑難迎刃而解。通過這次實(shí)踐課,不只是強(qiáng)化了我們C語言編程的能力,更重要的是使我們學(xué)會(huì)了一種工作方法,學(xué)會(huì)了如何規(guī)劃、組織、設(shè)計(jì)、實(shí)施項(xiàng)目,從整體到局部,從局部又到整體。此外,在設(shè)計(jì)流程圖和編制報(bào)告的過程里也學(xué)了不少東西,學(xué)會(huì)了用。fficevisio制作流程圖,學(xué)會(huì)了組織報(bào)告等等。

ハ、源代碼#include<stdio.h>#include<stdlib.h>#include<string.h>#defineN100structClass(charCname[20J;charCno[20];〃班級(jí)〃班名〃班號(hào)]■>structStudent(charSname[20];charSex[10J;charSno[20];intAge;structClassCInfo;}StuInfo[N];〃函數(shù)申明voidmenu();voidadd();voidmodifyO;voidDelete();voidbrowse();voidquiry();voidstastic();〃學(xué)生〃姓名〃性別〃學(xué)號(hào)〃年齡〃嵌套結(jié)構(gòu)體,表示班級(jí)信息〃主菜單〃添加模塊〃修改模塊〃刪除模塊〃瀏覽模塊〃查詢模塊〃統(tǒng)計(jì)模塊voidbySname();voidbySno();voidbyCno();voidStuMsgO;voidFemale();voidMale();intFemaleNum();floatFemaleMG();intMaleNum();floatMaleMG();intStuNum();floatMG();voidBackMenu();voidBackQuiryO;voidBackStastic();intLoadFile();〃按姓名查詢,子模塊〃按學(xué)號(hào)查詢,子模塊〃按班號(hào)查詢,子模塊〃返回全體學(xué)生統(tǒng)計(jì)信息,子模塊〃女生統(tǒng)計(jì)信息,子模塊〃男生統(tǒng)計(jì)信息,子模塊〃返回女生人數(shù),子函數(shù)〃返回女生平均年齡,子函數(shù)〃返回男生人數(shù),子函數(shù)〃返回男生平均年齡,子函數(shù)〃返回全體學(xué)生人數(shù),子函數(shù)〃返回全體學(xué)生的平均年齡,子函數(shù)〃返回主菜單〃返回查詢子菜單〃返回統(tǒng)計(jì)子菜單〃加載文件voidSaveFile(intnum);〃保存文件voidInput(intnum); 〃輸入第num+1個(gè)記錄voidmain()(menu();getchar();}voidmenu() 〃菜單(intchose;intright;do(system("^cls^,);printf(M\n\t\t\t\t學(xué)生證管理系統(tǒng)\n");printf(n ");printfC,菜單:\tl?添加ゝt2.修改't3.瀏覽全部't4.查詢't5.統(tǒng)計(jì)'t6.刪除\t7.退出\n“);printf(H *');printf("請輸入數(shù)字選擇:");scanf("%dH,&chose);if(chose<lllchose>7){printf("輸入錯(cuò)誤,請重新輸入!\n");right=1;getchar();}elseright=O;}while(right==l);switch(chose){case1:add();break;case2:modify();break;case3:browse();break;case4:quiry();break;case5:stastic();break;case6:Delete();break;case7:exit(0);}}voidBackMenu()〃返冋主菜單printf(n\n請按enter鍵返回主菜單!\n");getchar();getchar();menu();}intLoadFileO〃讀取文件(inti;FILE*fp;if((fp=fopen(,'StuInfo.txt',;,r',))==NULL)(return0; 〃返回0?表示文件不存在)for(i=0;!feof(fp);i++){fscanf(fp,,,%s%s%s%d%s%s',,&StuInfo[i].Sname,&StuInfo[i].Sex,&StuInfo[i].Sno,&StuInfo[i].Age,&StuInfo[i].CInfo.Cno,&StuInfo[i].CInfo.Cname);)fclose(fp);returni;〃返回記錄條數(shù)}voidInput(intnum)〃輸入第num+1條記錄(inti;intage;charsno[20];charsex[20];charcno[20];intright;if(num==N)(printf(-\n保存記錄數(shù)超出結(jié)構(gòu)體數(shù)組數(shù)的大小,請先修改N的值也”);BackMenu();)printf("\n請按照提示輸入學(xué)生信息:\n\n”);printff姓名:");scanf(M%sM,&StuInfb[num].Sname);do{printf("\n性別(男或女):");scanf("%s",sex);if((strcmp(sex,"男")!=0)&&(strcmp(sex,"女")!=0))printf("輸入錯(cuò)誤,請輸入男或女!\n");right=1;getchar();}elseright=O;}while(right==l);strcpy(StuInfo[num].Sex,sex);do(printf(“ヽn學(xué)號(hào)(H位):");scanf(n%sM,sno);if(strlen(sno)!=l1){printf("輸入錯(cuò)誤,學(xué)號(hào)長度應(yīng)為11位數(shù)!\n");right=l;getchar();}elseright=O;for(i=0;i<num;i++){if(strcmp(sno,StuInfo[i].Sno)==0)(printf("該學(xué)號(hào)已經(jīng)存在,請重新輸入!\n");right=1;getchar();)}}while(right==l);strcpy(Stu!nfo[num].Sno,sno);do|printf("\n年齡:");scanf(H%d",&age);if(age<=Ollage>100)(printf("年齡應(yīng)在0-100之間,請重新輸入年齡!\n");right=1;getchar();}elseright=O;}while(right==l);StuInfo[num].Age=age;doprintf("\n班號(hào)(6位):");scanf('*%s,,,cno);if(strlen(cno)!=6){printf("輸入錯(cuò)誤,班號(hào)長度應(yīng)為6位數(shù)!\n");right=1;getchar();}elseright=O;}while(right==l);strcpy(StuInfo[num].CInfo.Cno,cno);printf(H\n班名:");scanf(w%sM,&StuInfo[num].CInfo.Cname);}voidSaveFile(intnum)〃保存num+1條記錄{FILE*fpw;inti;if((fpw=fopen(,,StuInfo.txt',,,,w,,))==NULL)|printf(“文件打不開,保存失敗!\n”);BackMenu();)for(i=0;i<=num;i++) 〃保存文件(fprintf(fpw,M\n%s\t%s\t%s\t%d\t%s\t%sM,StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[i].Sno,StuInfo[i].Age,StuInfo[i].CInfo.Cno,StuInfo[i].CInfo.Cname);}fclose(fpw);printf(”ヽn保存成功!\nH);}voidadd() 〃添加學(xué)生信息,一次添加一條記錄(intnum;systemC^cls");num=LoadFile();Input(num);SaveFile(num);BackMenu();voidmodifyO 〃修改學(xué)生信息(intnum;inti;intright;intfound=-1;charStuNO[20];num=LoadFile();system("cls");if(num==0)(printf("文件為空!”);BackMenu();)printf(H\n請輸入學(xué)號(hào)選擇要修改的記錄ゴ);scanf(K%sw,StuNO);for(i=0;i<num;i++)(if(strcmp(StuNO,StuInfo[i].Sno)=0){found=i;print"、你要修改的學(xué)生信息為:\n\n“);printf("姓名 性別學(xué)號(hào)年齡班號(hào)班名\n");printf(*'%s %s %s %d %s%s\n,',StuInfo[iJ.Sname,StuInfoliJ.Sex,StuInfo[i].Sno,StuInfo[iJ.Age,StuInfo[i].CInfo.Cno,StuInfo[i].CInfo.Cname);})if(found<0)(printf("\n沒有找到該學(xué)號(hào)的記錄!\n”);BackMenu();}Input(found);SaveFile(num-l);BackMenu();}voidbrowse() 〃顯示所有學(xué)生信息intnum;inti;num=LoadFile();system(,'clsH);if(num==O){printf("文件為空!M);BackMenu();}printf(M\n已添加%d個(gè)學(xué)生信息\n\n”,num);printf("姓名 性別 學(xué)號(hào) 年齡班號(hào) 班名、ガ);for(i=0;i<num;i++)(printf(H%s %s %s %d %s%s\n",StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[i].Sno,StuInfo[i].Age,StuInfo[i].CInfo.Cno,StuInfo[i].CInfo.Cname);)BackMenu();}voidquiry()(intchose;intright;do(system(nclsH);printf("\n\tl?按學(xué)號(hào)查詢't2.按姓名查詢't3.某班學(xué)生信息\t4.返回'n");printf("\n請輸入數(shù)字選擇ゴ);scanf(M%d",&chose);if(chose<1llchose>4){right=l;getchar();}elseright=O;}while(right==l);switch(chose){casel:system(,,cls,,);bySno();break;case2:system(Mclsn);bySname();break;case3:system(,,cls,1);byCno();break;case4:menu();}}voidBackQuiryO〃返回查詢子菜單printf(n\n請按enter鍵返回上級(jí)菜單!\n");getchar();getchar();quiry();voidbySno()(intfound=-l;intnum;inti;charno[20];num=LoadFile();if(num==0){printf("文件為空!M);BackQuiryO;)printfC'\n請輸入學(xué)生學(xué)號(hào):”);scanf(n%s",no);for(i=0;i<num;i++){if(strcmp(no,StuInfd[i].Sno)=0){found=i;printf(”ヤ該學(xué)生的信息為:\n\n”);printf(”姓名 性別 學(xué)號(hào)年齡班號(hào) 班名\n”);printf(”%s %s %s %d %s%s\n,',Stulnfo[found].Sname,StuInfo[found].Sex,Stulnfo[found].Sno,StuInfo[foundJ.Age,StuInfo[found].CInfo.Cno,Stu!nfo[found].CInfo.Cname);if(found<0)printf(u\n沒有找到該班號(hào)的記錄!\n");BackQuiryO;voidbySname()intfound=-l;intnum;inti;charname[20];num=LoadFile();if(num==O)(printf("文件為空!M);BackQuiryO;)printf(H\n請輸入學(xué)生姓名:");scanf(M%s",name);printf(”\n叫該姓名的學(xué)生信息為:\n\n”);primf(”姓名 性別 學(xué)號(hào)年齡班號(hào) 班名\n");for(i=0;i<num;i++){if(strcmp(name,StuInfo[i].Sname)==0)(found=i;printf(H%s %s %s %d %s%s\n,,,StuInfo[found].Sname,StuInfo[found].Sex,StuInfo[found].Sno,StuInfo[found].Age,StuInfo[found].CInfo.Cno,StuInfo[found].CInfo.Cname);))if(found<0)printf("\n沒有找到該班號(hào)的記錄!\n");BackQuiryO;}voidbyCno()(intfound=-1;intnum;inti;charClaNO[20];num=LoadFile();if(num==0)(printf(”文件為空!M);BackQuiryO;)printf(M\n請輸入班號(hào):");scanf(”%s”,ClaNO);prinlf(”\n該班級(jí)的學(xué)生信息為:\n\n”);printf(”姓名 性別 學(xué)號(hào)年齡班號(hào) 班名Xn");for(i=0;i<num;i++)if(strcmp(ClaNO,StuInfo[i].CInfo.Cno)==0)found=i;printf(n%s %s %s %d %s%s\n'',StuInfo[found].Sname,StuInfo[found].Sex,StuInfo[found].Sno,StuInfo[found].Age,StuInfo[found].CInfo.Cno,StuInfo[found].CInfo.Cname);))if(found<0)printf(H\n沒有找到該班號(hào)的記錄到");BackQuiryO;)voidstastic()(intchose;intright;do{system(,,clsM);printf("\n\tl-全體男生\t2.全體女生't3?全體學(xué)生't4?返回\n");printf("\n請輸入數(shù)字選擇:");scanf(M%d'*,&chose);if(chose<illchose>4){right=l;getchar();)elseright=O;}while(right==l);switch(chose){casel:system(,,cls,');Male();BackStastic();break;case2:system(,,cls,');Female();BackStastic();break;case3:system("cls");StuMsg();BackStastic();break;case4:menu();})voidBackStastic()printf(n\n請按enter鍵返回上級(jí)菜單!\n");getchar();getchar();stastic();voidMale() 〃男生基本統(tǒng)計(jì)信息(intnum;floatmg

溫馨提示

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

評(píng)論

0/150

提交評(píng)論