C語言學生證管理系統(tǒng)課程設計報告_第1頁
C語言學生證管理系統(tǒng)課程設計報告_第2頁
C語言學生證管理系統(tǒng)課程設計報告_第3頁
C語言學生證管理系統(tǒng)課程設計報告_第4頁
C語言學生證管理系統(tǒng)課程設計報告_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論