版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、紅河學院工學院課程設計報告專業(yè): 年級: 姓名:成績:批改時間:紅河學院 工學院編制說 明1、本報告供學生課程設計時使用。2、學生應認真閱讀課程設計要求。3、課程設計報告里面的內容要手工填寫,以備存檔使用(源程序可打?。?。4、課程設計的總評成績根據課程的性質,按一定比例計入該門課程成績。5、課程設計報告中的各模塊填寫的內容是評分的主要依據,如果不夠書寫,可以自行添加附頁。6、按規(guī)定的時間提交報告給教師評定成績,由任課教師交到工學院存檔。課程設計目錄課程名稱:高級語言程序設計序號課程設計名稱起止頁碼設計任務題目名稱學生證管理系統(tǒng)設計班級1指導教師地點工學院成績保存輸入添加的聯(lián)系資料是否保存開始返
2、回菜單函數結束添加模塊NY學年2011-2012開始日期結束日期一、問題分析(圍繞設計題目,進行課程設計開始前的準備過程,在此以問題分析的形式展開,從設計的總體性上對所承擔的設計題目的思考,分析,此模塊內容請手工填寫) 對這個系統(tǒng)需求分析,學生證管理系統(tǒng)要有儲存、錄入、讀取、輸出、添加、刪除、修改、查詢、統(tǒng)計的功能。 我們將各種功能模塊化,以便進行設計。分為保存信息、輸入模塊、讀取信息、更新模塊(添加學生信息,刪除信息,修改模塊)、查詢模塊(按學號查找,按姓名查找,按班級查找)、統(tǒng)計模塊。然后根據各模塊分別設計程序。 二設計流程圖根據需求分析,可以把這個系統(tǒng)的設計分為添加、修改、查詢、瀏覽、統(tǒng)
3、計、刪除六大模塊,其中查詢模塊可以分為三個子模塊,統(tǒng)計模塊可以分為三個子模塊,子模塊下面還有子函數;系統(tǒng)功能模塊圖如下所示:1. 主函數模塊2. 添加模塊3. 修改模塊 4.瀏覽模塊5.查詢模塊6.統(tǒng)計模塊7.刪出模塊三程序代碼#include<stdio.h>#include<stdlib.h>#include<string.h>#define N 100struct Class /班級 char Cname20;/班名 char Cno20;/班號;struct Student/學生 char Sname20;/姓名 char Sex10;/性別 cha
4、r Sno20;/學號 int Age;/年齡 struct Class CInfo;/嵌套結構體,表示班級信息StuInfoN;void menu(); /主菜單 void add(); /添加模塊void modify(); /修改模塊void Delete(); /刪除模塊void browse(); /瀏覽模塊void quiry(); /查詢模塊void stastic(); /統(tǒng)計模塊void bySname(); /按姓名查詢,子模塊void bySno(); /按學號查詢,子模塊void byCno(); /按班號查詢,子模塊void StuMsg(); /返回全體學生統(tǒng)計信息
5、,子模塊void Female(); /女生統(tǒng)計信息,子模塊void Male(); /男生統(tǒng)計信息,子模塊int FemaleNum(); /返回女生人數,子函數float FemaleMG(); /返回女生平均年齡,子函數int MaleNum(); /返回男生人數,子函數float MaleMG(); /返回男生平均年齡,子函數int StuNum(); /返回全體學生人數,子函數float MG(); /返回全體學生的平均年齡,子函數void main() menu(); getchar();void menu() /菜單int chose; int right; do system(
6、"cls"); /清屏 printf("ntttt學生證管理系統(tǒng)n"); printf("······································
7、183;·"); printf(" 菜單:t1-添加t2-修改t3-瀏覽全部t4-查詢t5-統(tǒng)計t6-刪除t7-退出n"); printf("··································
8、······"); printf("請輸入數字選擇:"); scanf("%d",&chose); if(chose<1|chose>7) printf("輸入錯誤,請重新輸入!n");right=1;getchar(); else right=0;while(right=1);switch(chose)case 1:add(); break;case 2:modify(); break;case 3:browse(); break;case 4
9、:quiry(); break;case 5:stastic(); break;case 6:Delete(); break;case 7:exit(0); void add() /添加學生信息,一次添加一條記錄 int num; int i; int age; char sno20; char sex20; char cno20; int right; FILE*fp; if(fp=fopen("StuInfo.txt","r+")=NULL) /以讀寫方式打開 if(fp=fopen("StuInfo.txt","w&q
10、uot;)=NULL) /文件不存在則創(chuàng)建文件 printf("n文件不存在且創(chuàng)建失敗,返回!n"); menu(); printf("n請按照提示輸入學生信息:nn"); printf("姓名:"); scanf("%s",&StuInfo0.Sname); do printf("n性別(男或女):"); scanf("%s",sex); if(strcmp(sex,"男")!=0)&&(strcmp(sex,"女&qu
11、ot;)!=0) printf("輸入錯誤,請輸入男或女!n");right=1;getchar(); else right=0; while(right=1); strcpy(StuInfo0.Sex,sex); do printf("n學號(11位):"); scanf("%s",sno); if(strlen(sno)!=11) printf("輸入錯誤,學號長度應為11位數!n");right=1;getchar(); else right=0; while(right=1); strcpy(StuInfo
12、0.Sno,sno); do printf("n年齡:"); scanf("%d",&age); if(age<=0|age>100) printf("年齡應在0-100之間,請重新輸入年齡!n");right=1;getchar(); else right=0; while(right=1); StuInfo0.Age=age; do printf("n班號(6位):"); scanf("%s",cno); if(strlen(cno)!=6) printf("輸
13、入錯誤,班號長度應為6位數!n");right=1;getchar(); else right=0; while(right=1); strcpy(StuInfo0.CInfo.Cno,cno); printf("n班名:"); scanf("%s",&StuInfo0.CInfo.Cname); fprintf(fp,"n%st%st%st%dt%st%s",StuInfo0.Sname,StuInfo0.Sex,StuInfo0.Sno,StuInfo0.Age,StuInfo0.CInfo.Cno,StuInf
14、o0.CInfo.Cname); fclose(fp); printf("n保存成功!n"); printf("n請按enter鍵返回主菜單!n"); getchar(); getchar(); menu(); for(i=0;!feof(fp);i+) /讀取文件 fscanf(fp,"%s%s%s%d%s%s",&StuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.Cno,&StuInfoi
15、.CInfo.Cname); num=i; if(num=N) printf("n保存記錄數超出結構體數組數的大小,請先修改N的值n"); menu(); printf("n請按照提示輸入學生信息:nn"); printf("姓名:"); scanf("%s",&StuInfonum.Sname); do printf("n性別(男或女):"); scanf("%s",sex); if(strcmp(sex,"男")!=0)&&(s
16、trcmp(sex,"女")!=0) printf("輸入錯誤,請輸入男或女!n");right=1;getchar(); else right=0; while(right=1); strcpy(StuInfonum.Sex,sex); do printf("n學號(11位):"); scanf("%s",sno); if(strlen(sno)!=11) printf("輸入錯誤,學號長度應為11位數!n");right=1;getchar(); else right=0; for(i=0;
17、i<num;i+) if(strcmp(sno,StuInfoi.Sno)=0) printf("該學號已經存在,請重新輸入!n"); right=1; getchar(); while(right=1); strcpy(StuInfonum.Sno,sno); do printf("n年齡:"); scanf("%d",&age); if(age<=0|age>100) printf("年齡應在0-100之間,請重新輸入年齡!n");right=1;getchar(); else rig
18、ht=0; while(right=1); StuInfonum.Age=age; do printf("n班號(6位):"); scanf("%s",cno); if(strlen(cno)!=6) printf("輸入錯誤,班號長度應為6位數!n");right=1;getchar(); else right=0; while(right=1); strcpy(StuInfonum.CInfo.Cno,cno); printf("n班名:"); scanf("%s",&StuInfo
19、num.CInfo.Cname); /把該記錄寫到文件末尾 fprintf(fp,"n%st%st%st%dt%st%s",StuInfonum.Sname,StuInfonum.Sex,StuInfonum.Sno,StuInfonum.Age,StuInfonum.CInfo.Cno,StuInfonum.CInfo.Cname); fclose(fp); printf("n保存成功!n"); printf("n請按enter鍵返回主菜單!n"); getchar(); getchar(); menu();void modify(
20、)/修改學生信息 int num; int i; int right; int age; char sex20; char cno20; char sno20; int found=-1; char StuNO20; FILE*fpr,*fpw; if(fpr=fopen("StuInfo.txt","r")=NULL) printf("文件打不開!n"); menu(); for(i=0;!feof(fpr);i+) /讀取文件 fscanf(fpr,"%s%s%s%d%s%s",&StuInfoi.Sn
21、ame,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.Cno,&StuInfoi.CInfo.Cname); num=i; fclose(fpr); printf("n請輸入學號選擇要修改的記錄:"); scanf("%s",StuNO); for(i=0;i<num;i+) if(strcmp(StuNO,StuInfoi.Sno)=0) found=i; printf("n你要修改的學生信息為:nn"); print
22、f("姓名 性別 學號 年齡 班號 班名n"); printf("%st%st%st%dt%st%sn",StuInfoi.Sname,StuInfoi.Sex,StuInfoi.Sno,StuInfoi.Age,StuInfoi.CInfo.Cno,StuInfoi.CInfo.Cname); printf("n請按照提示輸入學生的新信息:n"); printf("姓名:"); scanf("%s",&StuInfofound.Sname); do printf("n性別(男
23、或女):"); scanf("%s",sex); if(strcmp(sex,"男")!=0)&&(strcmp(sex,"女")!=0) printf("輸入錯誤,請輸入男或女!n");right=1;getchar(); else right=0; while(right=1); strcpy(StuInfofound.Sex,sex); do printf("n學號(11位):"); scanf("%s",sno); if(strlen(sno
24、)!=11) printf("輸入錯誤,學號長度應為11位數!n");right=1;getchar(); else right=0; for(i=0;i<num;i+) if(i!=found)&&(strcmp(sno,StuInfoi.Sno)=0) printf("該學號已經存在,請重新輸入!n"); right=1; getchar(); while(right=1); strcpy(StuInfofound.Sno,sno); do printf("n年齡:"); scanf("%d&quo
25、t;,&age); if(age<=0|age>100) printf("年齡應在0-100之間,請重新輸入年齡!n");right=1;getchar(); else right=0; while(right=1); StuInfofound.Age=age; do printf("n班號(6位):"); scanf("%s",cno); if(strlen(cno)!=6) printf("輸入錯誤,班號長度應為6位數!n");right=1;getchar(); else right=0;
26、 while(right=1); strcpy(StuInfofound.CInfo.Cno,cno); printf("n班名:"); scanf("%s",&StuInfofound.CInfo.Cname); if(fpw=fopen("StuInfo.txt","w")=NULL) printf("文件打不開,保存失敗!n"); menu(); for(i=0;i<num;i+) /保存文件 fprintf(fpw,"n%st%st%st%dt%st%s"
27、;,StuInfoi.Sname,StuInfoi.Sex,StuInfoi.Sno,StuInfoi.Age,StuInfoi.CInfo.Cno,StuInfoi.CInfo.Cname); fclose(fpw); printf("n修改成功!n"); printf("n請按enter鍵返回主菜單!n"); getchar(); getchar(); menu(); if(found<0) printf("n沒有找到該學號的記錄:n"); printf("n請按enter鍵返回主菜單!n"); getc
28、har(); getchar(); menu(); void browse()/顯示所有學生信息 int num; int i; FILE*fp; if(fp=fopen("StuInfo.txt","r")=NULL) printf("文件打不開!n"); menu(); for(i=0;!feof(fp);i+) /讀取文件 fscanf(fp,"%s%s%s%d%s%s",&StuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi
29、.Age,&StuInfoi.CInfo.Cno,&StuInfoi.CInfo.Cname); fclose(fp); num=i; printf("n已添加%d個學生信息nn",num); printf("姓名 性別 學號 年齡 班號 班名n"); for(i=0;i<num;i+) /輸出 printf("%s %s %s %d %s %sn",StuInfoi.Sname,StuInfoi.Sex,StuInfoi.Sno,StuInfoi.Age,StuInfoi.CInfo.Cno,StuInfoi.
30、CInfo.Cname); printf("n請按enter鍵返回主菜單!n"); getchar(); getchar(); menu();void quiry() int chose; int right; do system("cls"); printf("nt1-按學號查詢t2-按姓名查詢t3-某班學生信息t4-返回n"); printf("n請輸入數字選擇:"); scanf("%d",&chose); if(chose<1|chose>4) right=1; ge
31、tchar(); else right=0;while(right=1);switch(chose) case 1:bySno();break;case 2:bySname();break;case 3:byCno();break;case 4:menu(); void bySno() int found=-1; int num; int i; char no20; FILE*fp; if(fp=fopen("StuInfo.txt","r")=NULL) printf("文件打不開!n"); menu(); for(i=0;!feo
32、f(fp);i+) /讀取文件 fscanf(fp,"%s%s%s%d%s%s",&StuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.Cno,&StuInfoi.CInfo.Cname); num=i; fclose(fp); printf("n請輸入學生學號:"); scanf("%s",no); for(i=0;i<num;i+) if(strcmp(no,StuInfoi.Sno)
33、=0) found=i; printf("n該學生的信息為:nn"); printf("姓名 性別 學號 年齡 班號 班名n"); printf("%st%st%st%dt%st%sn",StuInfofound.Sname,StuInfofound.Sex,StuInfofound.Sno,StuInfofound.Age,StuInfofound.CInfo.Cno,StuInfofound.CInfo.Cname); if(found<0) printf("n沒有找到該班號的記錄!n"); printf
34、("n請按enter鍵返回上級菜單!n"); getchar(); getchar(); quiry();void bySname() int found=-1; int num; int i; char name20; FILE*fp; if(fp=fopen("StuInfo.txt","r")=NULL) printf("文件打不開!n"); menu(); for(i=0;!feof(fp);i+) /讀取文件 fscanf(fp,"%s%s%s%d%s%s",&StuInfoi
35、.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.Cno,&StuInfoi.CInfo.Cname); num=i; fclose(fp); printf("n請輸入學生姓名:"); scanf("%s",name); printf("n叫該姓名的學生信息為:nn"); printf("姓名 性別 學號 年齡 班號 班名n"); for(i=0;i<num;i+) if(strcmp(na
36、me,StuInfoi.Sname)=0) found=i; printf("%st%st%st%dt%st%sn",StuInfofound.Sname,StuInfofound.Sex,StuInfofound.Sno,StuInfofound.Age,StuInfofound.CInfo.Cno,StuInfofound.CInfo.Cname); if(found<0) printf("n沒有找到該班號的記錄!n"); printf("n請按enter鍵返回上級菜單!n"); getchar(); getchar();
37、quiry(); void byCno() int found=-1; int num; int i; char ClaNO20; FILE*fp; if(fp=fopen("StuInfo.txt","r")=NULL) printf("文件打不開!n"); menu(); for(i=0;!feof(fp);i+) /讀取文件 fscanf(fp,"%s%s%s%d%s%s",&StuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfo
38、i.Age,&StuInfoi.CInfo.Cno,&StuInfoi.CInfo.Cname); num=i; fclose(fp); printf("n請輸入班號:"); scanf("%s",ClaNO); printf("n該班級的學生信息為:nn"); printf("姓名 性別 學號 年齡 班號 班名n"); for(i=0;i<num;i+) if(strcmp(ClaNO,StuInfoi.CInfo.Cno)=0) found=i; printf("%st%st%s
39、t%dt%st%sn",StuInfofound.Sname,StuInfofound.Sex,StuInfofound.Sno,StuInfofound.Age,StuInfofound.CInfo.Cno,StuInfofound.CInfo.Cname); if(found<0) printf("n沒有找到該班號的記錄!n"); printf("n請按enter鍵返回上級菜單!n"); getchar(); getchar(); quiry();void stastic() int chose; int right; do syst
40、em("cls"); printf("nt1-全體男生t2-全體女生t3-全體學生t4-返回n"); printf("n請輸入數字選擇:"); scanf("%d",&chose); if(chose<1|chose>4) right=1; getchar(); else right=0;while(right=1);switch(chose) case 1:Male();printf("n請按enter鍵返回上級菜單!n"); getchar(); getchar(); s
41、tastic();break;case 2:Female();printf("n請按enter鍵返回上級菜單!n"); getchar(); getchar(); stastic();break;case 3:StuMsg();printf("n請按enter鍵返回上級菜單!n"); getchar(); getchar(); stastic();break;case 4:menu(); void Male()/男生基本統(tǒng)計信息 int num; float mg; num=MaleNum(); mg=MaleMG(); printf("n男生
42、總人數為:%dn平均年齡為:%fn",num,mg);int MaleNum() /男生人數 int num; int count=0; int i; FILE*fp; if(fp=fopen("StuInfo.txt","r")=NULL) printf("文件打不開!n"); menu(); for(i=0;!feof(fp);i+) /讀取文件 fscanf(fp,"%s%s%s%d%s%s",&StuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.S
43、no,&StuInfoi.Age,&StuInfoi.CInfo.Cno,&StuInfoi.CInfo.Cname); fclose(fp); num=i; for(i=0;i<num;i+) if(strcmp("男",StuInfoi.Sex)=0) count+; return count;float MaleMG() /男生平均年齡 int num; int count=0; int found; float mAge=0; int i; FILE*fp; if(fp=fopen("StuInfo.txt",&qu
44、ot;r")=NULL) printf("文件打不開!n"); menu(); for(i=0;!feof(fp);i+) /讀取文件 fscanf(fp,"%s%s%s%d%s%s",&StuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.Cno,&StuInfoi.CInfo.Cname); fclose(fp); num=i; for(i=0;i<num;i+) if(strcmp("
45、男",StuInfoi.Sex)=0) found=i; count+; mAge+=StuInfoi.Age; if(count>0) mAge/=count; return mAge;int FemaleNum() /女生人數 int num; int count=0; int i; FILE*fp; if(fp=fopen("StuInfo.txt","r")=NULL) printf("文件打不開!n"); menu(); for(i=0;!feof(fp);i+) /讀取文件 fscanf(fp,"
46、%s%s%s%d%s%s",&StuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.Cno,&StuInfoi.CInfo.Cname); fclose(fp); num=i; for(i=0;i<num;i+) if(strcmp("女",StuInfoi.Sex)=0) count+; return count;void Female() /女生基本統(tǒng)計信息 int num; float mg; num=Female
47、Num(); mg=FemaleMG(); printf("n女生總人數為:%dn平均年齡為:%fn",num,mg);float FemaleMG() /女生平均年齡 int num; int count=0; int found; float mAge=0; int i; FILE*fp; if(fp=fopen("StuInfo.txt","r")=NULL) printf("文件打不開!n"); menu(); for(i=0;!feof(fp);i+) /讀取文件 fscanf(fp,"%s%s
48、%s%d%s%s",&StuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.Cno,&StuInfoi.CInfo.Cname); fclose(fp); num=i; for(i=0;i<num;i+) if(strcmp("女",StuInfoi.Sex)=0) found=i; count+; mAge+=StuInfoi.Age; if(count>0) mAge/=count; return mAge;v
49、oid StuMsg() /全體學生基本統(tǒng)計信息 int num; float mg; num=StuNum(); mg=MG(); printf("n學生總人數為:%dn學生平均年齡為:%fn",num,mg); Male(); Female();int StuNum() /全體學生人數 int num; num=MaleNum()+FemaleNum(); return num;float MG() /全體學生平均年齡 float mAge; mAge=(MaleNum()*MaleMG()+FemaleNum()*FemaleMG()/(MaleNum()+FemaleNum(); return mAge;void Delete() int num; int i; int found=-1; char StuNO20; FILE*fpr,*fpw; if(fpr=fopen("StuInfo.txt","r")=NULL) printf("文件打不開!n"); menu(); for(i=0;!feof(fpr);i+) /讀取文件 fscanf(fpr,"%s%s%s%d%s%s",&StuInfoi.Sname,&am
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東旅游職業(yè)學院《食品科學與工程專業(yè)英語》2023-2024學年第一學期期末試卷
- 中國社會科學院大學《工程應用數學》2023-2024學年第一學期期末試卷
- 2024年公務員考試漯河市《行政職業(yè)能力測驗》預測試卷含解析
- 2025年中國聯(lián)通福建省分公司招聘筆試參考題庫含答案解析
- 2025年寧波余姚市直屬企業(yè)招招聘筆試參考題庫含答案解析
- 2025年重慶永川區(qū)永高新集團招聘筆試參考題庫含答案解析
- 2025年福州左園建設有限公司招聘筆試參考題庫含答案解析
- 2025年日照市水產集團總公司招聘筆試參考題庫含答案解析
- 水利局網絡光纜鋪設合同
- 二零二五年度環(huán)境監(jiān)測設備技術升級與維護合同3篇
- 化學-山東省濰坊市、臨沂市2024-2025學年度2025屆高三上學期期末質量檢測試題和答案
- 領導學 課件全套 孫健 第1-9章 領導要素- 領導力開發(fā)
- 2024-2025學年七年級上學期語文期末考前押題卷(統(tǒng)編版2024+含答案)
- 土建定額培訓課件
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應用實踐指導材料之13:“6策劃-6.2創(chuàng)新目標及其實現的策劃”(雷澤佳編制-2025B0)
- 2024年保護環(huán)境的建議書范文(33篇)
- 退休人員公益活動合作合同
- 四年級數學(四則混合運算帶括號)計算題專項練習與答案
- 急診創(chuàng)傷疼痛護理
- 2022年期貨從業(yè)資格《期貨基礎知識》考試題庫(含典型題)
- 浙江省湖州市2023-2024學年高二上學期期末調研測試數學試題 含解析
評論
0/150
提交評論