《程序設(shè)計(jì)語言》課程設(shè)計(jì)-學(xué)生信息管理系統(tǒng).doc
程序設(shè)計(jì)語言課程設(shè)計(jì) 學(xué)生信息管理系統(tǒng) 系 、 部: 計(jì)算機(jī)與信息科學(xué)系 專 業(yè): 信息與計(jì)算科學(xué) 班 級: 信本1003班 姓 名: 學(xué) 號: 學(xué)生信息管理系統(tǒng)1、設(shè)計(jì)目的本課程設(shè)計(jì)為學(xué)生提供了一個既動手又動腦,自學(xué),查資料,獨(dú)立實(shí)踐的機(jī)會。將本學(xué)期課本上的理論知識和實(shí)際有機(jī)的結(jié)合起來,鍛煉學(xué)生實(shí)際分析問題和解決問題的能力,提高學(xué)生適應(yīng)實(shí)際、實(shí)踐編程的能力,使對C+系統(tǒng)編程有一個大致的了解2、 總體設(shè)計(jì)(程序設(shè)計(jì)組成框圖、流程圖)a、學(xué)生成績的錄入、統(tǒng)計(jì)、查詢(可根據(jù)名字首字母查詢)、修改、刪除、輸出。 畫出功能結(jié)構(gòu)圖。3、 詳細(xì)設(shè)計(jì)(模塊功能說明(如函數(shù)功能、入口及出口參數(shù)說明,函數(shù)調(diào)用關(guān)系描述等)函數(shù)、部分程序及其說明:int id;/學(xué)號char name20;/姓名int age;/年齡char sex;/姓別int score3;/成績(t語文t數(shù)學(xué)t英語)char address50;/地址char birthday20; /出生年月char telephone15;/電話char email50;/E-mailint avg;/平均成績char name120;/登錄用戶名char mima17;/登錄密碼struct student stus50;/全局學(xué)生結(jié)構(gòu)體數(shù)組int count = 0;/統(tǒng)計(jì)學(xué)生個數(shù) name=yinzhaoxia;/登錄名char mima=123456 ;/密碼Main():此函數(shù)主要是調(diào)用錄入、統(tǒng)計(jì)等函數(shù)對成績表進(jìn)行處理;通過使用switch函數(shù)判斷用戶所選擇的序號,再進(jìn)入相應(yīng)的函數(shù)。insertStudent();/添加學(xué)生信息selectAllStudent():查詢所有學(xué)生信息AaXingMingChaXunStudent();/姓名首字母查詢AaXueHaoChaUunStudent();/根據(jù)學(xué)號查找AaXingMingChaUunStudent();/根據(jù)姓名查找XiuGaiStudent();/修改學(xué)生信息AnXueHaoPaiXuStudent();/根據(jù)按學(xué)號排序AnXingMingShoZiMuPaiXunStudent();/按姓名首字母排序AnChengjPaiXuStudent();/按成績排序XunZePaiXu(); /選擇排序方式ShanChuStudent();/刪除學(xué)生信息ShanChuStudent1(int len,int index);/根據(jù)學(xué)號刪除學(xué)生信息AnXingMingShoZiMuChaXunStudent();/按姓名首字母查詢4、 調(diào)試與測試:調(diào)試方法,測試結(jié)果的分析與討論,測試過程中遇到的主要問題及采取的解決措 測試主要的問題: 是“排序”解決方案: 上網(wǎng)查資料和請教老師和同學(xué)5、 源程序如下 /* *內(nèi)容:學(xué)生信息管理系統(tǒng) *作者:尹朝霞 *時間:2011年6月2日 */#include #include #include #include struct student int id;/學(xué)號char name20;/姓名int age;/年齡char sex;/姓別int score3;/成績(t語文t數(shù)學(xué)t英語)char address50;/地址char birthday20; /出生年月char telephone15;/電話char email50;/E-mailint avg;/平均成績;struct denglu char name120;/登錄用戶名char mima17;/登錄密碼;/全局學(xué)生結(jié)構(gòu)體數(shù)組struct student stus100;/統(tǒng)計(jì)學(xué)生個數(shù)int count = 0;char mima=123456 ;/密碼void insertStudent();/添加void printStudent(struct student s);/輸出信息格式void selectAllStudent();/查詢void AaXingMingChaXunStudent();/姓名首字母查詢void AaXueHaoChaUunStudent();/學(xué)號查找void AaXingMingChaUunStudent();/姓名查找void XiuGaiStudent();/修改void AnXueHaoPaiXuStudent();/按學(xué)號排序void AnXingMingShoZiMuPaiXunStudent();/按姓名首字母排序void AnChengjPaiXuStudent();/按成績排序void XunZePaiXu(); /排序void ShangChuStudent();/刪除void ShanChuStudent1(int len,int index);/根據(jù)學(xué)號刪除學(xué)生void AnXingMingShoZiMuChaXunStudent();/按姓名首字母查詢void main() struct denglu denlu;char name=yinzhaoxia;/姓名 char mima220;int i;printf(tt歡迎進(jìn)入登陸界面n);printf(tt(*_*) 嘻嘻請輸入您的名字:);gets(denlu.name1);printf(tt(*_*) 嘻嘻請輸入您的密碼:);for(i=0;i6;i+) mima2i=getch(); printf(*);mima2i=0;if(strcmp(denlu.name1,name)=0)&(strcmp(mima2,mima)=0)printf(nttt 【.恭喜您登陸成功.】nnn);doint selected;printf(t *歡迎使用學(xué)生管理系統(tǒng)*n);printf(1.添加學(xué)生 2.刪除學(xué)生 3.修改學(xué)生 4.按學(xué)號查找學(xué)生n); printf(5.查詢所有學(xué)生 6.按姓名查詢學(xué)生 7.排序 8按姓名首字母查詢n);printf(9.退出程序n);printf(請選擇以上列表中的功能:);scanf(%d,&selected);switch(selected)case 1:insertStudent();/添加break;case 2:ShangChuStudent();/刪除break;case 3:XiuGaiStudent();/修改break;case 4:AaXueHaoChaUunStudent();/學(xué)號查找break;case 5:selectAllStudent();/查詢break;case 6:AaXingMingChaXunStudent();/姓名查找break;case 7: XunZePaiXu(); /排序break;case 8: AnXingMingShoZiMuChaXunStudent();/姓名首字母查詢 break;default:printf(t *謝謝使用學(xué)生管理系統(tǒng)* n);printf(t *版權(quán)所有 * 違者必究* n);exit(0);while(1);elseprintf(nttt 對不起您的輸入有誤,不能進(jìn)入n);void insertStudent()char result;int i,sum=0;doprintf(請輸入第%d個學(xué)生信息:n,count + 1);printf(t學(xué)號:); scanf(%d,&stuscount.id);printf(t姓名:);fflush(stdin);gets(stuscount.name);printf(t年齡:);scanf(%d,&stuscount.age);printf(t性別:);fflush(stdin);stuscount.sex = getchar();printf(t成績:n);sum=0;for(i = 0;i 3;i+)printf(tt第%d門成績:,i + 1);scanf(%d,&stuscount.scorei); sum+=stuscount.scorei;stuscount.avg=sum/3;fflush(stdin);printf(t家庭地址:);gets(stuscount.address);printf(t出生年月:);gets(stuscount.birthday);printf(t電話:);gets(stuscount.telephone);printf(tE-mail:);gets(stuscount.email); count+; printf(是否還要繼續(xù)輸入學(xué)生信息?(y/n));fflush(stdin);result = getchar();while(result != n & result != N);selectAllStudent();void selectAllStudent()int i;printf(所有信息如下:n);printf(學(xué)號t姓名t年齡t性別t語文t數(shù)學(xué)t英語t住址t出生年月t電話tE-mailn);for(i = 0;i count | a 1) printf(對不起沒有這個學(xué)號,請您認(rèn)真查詢后再輸入); else printf(您要查詢的學(xué)生信息如下:n); printf(學(xué)號t姓名t年齡t性別t語文t數(shù)學(xué)t英語t住址t出生年月t電話tE-mailn); for(i=0;icount;i+) if(a=stusi.id) printStudent(stusi); printf(是否還要繼續(xù)查詢學(xué)生信息?(y/n));fflush(stdin);result = getchar(); while(result != n & result != N);void AaXingMingChaXunStudent() char result; int i,g=0; struct student stu1; do g=0; printf(請輸入您要查詢學(xué)生姓名:); fflush(stdin); gets(stu1.name); for(i=0;icount;i+) if(strcmp(stu1.name,stusi.name)!=0) g+; continue; if(g=count) printf(對不起沒有這個姓名,請您認(rèn)真查詢后再輸入); else printf(您要查詢的學(xué)生信息如下:n); printf(學(xué)號t姓名t年齡t性別t語文t數(shù)學(xué)t英語t住址t出生年月t電話tE-mailn); for(i=0;i count | b 1) printf(對不起沒有這個學(xué)號,請您認(rèn)真查詢后再輸入);elsefor(i=0;icount;i+) if(b=stusi.id) printf(請重新輸入要修改的學(xué)生信息:n);printf(請輸入學(xué)號);scanf(%d,&stusi.id);printf(t姓名:);fflush(stdin);gets(stusi.name);printf(t年齡:);scanf(%d,&stusi.age);printf(t性別:);fflush(stdin);stusi.sex = getchar();printf(t成績:n);for(j = 0;j 3;j+)printf(tt第%d門成績:,j + 1);scanf(%d,&stusi.scorej);fflush(stdin);printf(t家庭地址:);gets(stusi.address);printf(t出生年月:);gets(stusi.birthday);printf(t電話:);gets(stusi.telephone);printf(tE-mail:);gets(stusi.email);printf(修改后的學(xué)生信息如下:n);printf(學(xué)號t姓名t年齡t性別t語文t數(shù)學(xué)t英語t住址t出生年月t電話tE-mailn);printStudent(stusi); printf(修改后的所有學(xué)生信息如下:n);printf(學(xué)號t姓名t年齡t性別t語文t數(shù)學(xué)t英語t住址t出生年月t電話tE-mailn);selectAllStudent();printf(是否還要繼續(xù)修改學(xué)生信息?(y/n));fflush(stdin);result = getchar(); while(result != n & result != N);void AnXueHaoPaiXuStudent() struct student temp; int i,j,k=0; printf(請問您是想按降序還是按升序排序(1/2)); scanf(%d,&k); if(k=1) for(i=0;icount;i+) for(j=0;jcount-i-1;j+) if(stusj.idstusj+1.id) temp=stusj; stusj=stusj+1; stusj+1=temp; printf(排序后的學(xué)生信息如下:); selectAllStudent(); else if(k=2) for(i=0;icount;i+) for(j=0;jstusj+1.id) temp=stusj; stusj=stusj+1; stusj+1=temp; printf(排序后的學(xué)生信息如下:); selectAllStudent(); void AnXingMingShoZiMuPaiXuStudent() struct student temp; int i,j,e; printf(請問您是想按降序還是按升序排序(1/2)); scanf(%d,&e); if(e=1) for(i=0;icount;i+) for(j=0;jcount-i-1;j+) if(stusj.name0-stusj+1.name00) temp=stusj; stusj=stusj+1; stusj+1=temp; printf(排序后的學(xué)生信息如下:); selectAllStudent(); if(e=2) for(i=0;icount;i+) for(j=0;j0) temp=stusj; stusj=stusj+1; stusj+1=temp; printf(排序后的學(xué)生信息如下:); selectAllStudent(); void AnChengjPaiXuStudent() struct student temp; int i,j,f; printf(請問您是想按降序還是按升序排序(1/2)); scanf(%d,&f); if(f=1) for(i=0;icount;i+) for(j=0;jcount-i-1;j+) if(stusj.avgstusj+1.avg) temp=stusj; stusj=stusj+1; stusj+1=temp; printf(排序后的學(xué)生信息如下:); selectAllStudent(); if(f=2) for(i=0;icount;i+) for(j=0;jstusj+1.avg) temp=stusj; stusj=stusj+1; stusj+1=temp; printf(排序后的學(xué)生信息如下:); selectAllStudent(); void XunZePaiXu() int c; printf(請選擇是按學(xué)號排序/按姓名的首字母排序/按平均成績排序(1/2/3)n); scanf(%d,&c); if(c=1) AnXueHaoPaiXuStudent(); else if(c=2) AnXingMingShoZiMuPaiXuStudent(); else if(c=3) AnChengjPaiXuStudent(); void ShangChuStudent()char result;int s;doprintf(請輸入你要刪除的學(xué)生學(xué)號n);scanf(%d,&s);if(s count | s 1)printf(對不起,沒有這個學(xué)號,請您認(rèn)真查詢后再輸入n);elseif(count=1) printf(信息已經(jīng)刪完。n); break;elseShanChuStudent1(count,s-1);count-;selectAllStudent();printf(是否還要繼續(xù)刪除學(xué)生信息?(y/n));fflush(stdin);result = getchar();while(result != n & result != N);void ShanChuStudent1(int len,int index)int i;for(i = index;i = len;i+)stusi+1.id -=1; stus i = stus i + 1; len-;void AnXingMingShoZiMuChaXunStudent() char result; int i,p=0; char e; do p=0; printf(請輸入您要查詢學(xué)生的姓名首字母); fflush(stdin); e = getchar(); for(i=0;icount;i+) if(e-stusi.name0)!=0) p+;continue; if(p=count) printf(對不起沒有這個姓名,請您認(rèn)真查詢后再輸入); else printf(您要查詢的學(xué)生信息如下:n); printf(學(xué)號t姓名t年齡t性別t語文t數(shù)學(xué)t英語t住址t出生年月t電話tE-mailn); for(i=0;icount;i+) if(e-stusi.name0)=0) printf(您要查詢的學(xué)生信息如下n:);printf(學(xué)號t姓名t年齡t性別t語文t數(shù)學(xué)t英語t住址t出生年月t電話tE-mailn);printStudent(stusi); printf(是否還要繼續(xù)查詢學(xué)生信息?(y/n));fflush(stdin);result = getchar(); while(result != n) & (result != N) );