




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
一、學生學籍信息管理系統設計1、需求分析學生基本信息、學生成績基本信息要存入文件當中,因而要提供文件得輸入輸出操作;查詢功能要求提供查找與顯示操作;刪除功能要求實現刪除操作;排序功能要求實現排序操作;另外還應該提供鍵盤式選擇菜單以實現功能選擇。2、總體設計整個系統可以設計為數據錄入模塊、數據修改模塊、數據查詢模塊、數據刪除模塊與數據排序模塊。成績包括數學、英語、程序設計基礎三門課成績基本信息存放在一個文件,成績信息存放在另一個文件。(1)數據錄入模塊學生基本信息文件可以在磁盤建立,采用寫文件方式錄入學生基本信息、各門課程得成績單.綜合成績通過平時成績與卷面成績獲得計算得到(平時30%,卷面70%)。(2)數據修改模塊采用讀文件方式讀入學生成績基本信息,進行修改后,以寫文件方式寫回原文件中。修改時,首先詢問要修改信息學生得姓名或學號,然后選擇要修改得內容,并輸入新得數據進行修改。(3)查詢模塊通過菜單選擇查詢功能,再選擇學生基本情況查詢與成績查詢,若選擇前者,再通過菜單選擇學號、姓名或宿舍號碼,然后把查找結果輸出。若選擇后者,則先查找學號對應得姓名,再查找該學生得課程情況,并統計科目與實得總學分,輸出結果。(3)刪除模塊通過菜單選擇刪除學生得功能,輸入要刪除學生得學號,則分別在兩個文件中查找該生信息,刪除之.(4)排序模塊通過菜單選擇排序依據,采用排序算法(冒泡、插入、選擇等)對數據進行排序并輸出結果,排序標準包括總分、某課成績、某課卷面成績等。(5)追加模塊追加學生信息#include<iostream、h〉#include<fstream、h>#include<string、h〉#include<stdlib、h>#include<iomanip、h>#defineN80structStuInfo{intstuNo;//學號charname[20];//姓名charsex[3];//性別intdomNum;//宿舍號chartel[12];//電話號碼};//學生基本信息結構體structStuGraInfo{charcourseName[10];//課程名稱intcourseNo;//課程編號intcreditHour;//學分structscore{intstuNo;//學號floattriGrade;//平時成績floatexamGrade;//卷面成績floattotalGrade;//綜合總評成績}score_talbe[N];};//成績單基本信息結構體voidcreate();voidsearch();voidinsert();voidrepin();voiddel();voidhelp();voidrecreate();StuGraInfop[3];StuInfod[N];intstuNum=0;intmain(){?charch; do{cout<<setw(60)<<""<<endl; ?cout〈<setw(60)<〈"—-—-——--—歡迎進入系統!—--———--—--—--”〈〈endl; cout<<setw(40)〈<"1:創建"<〈endl〈〈setw(40)<<"2:查詢"〈<endl<<setw(40)<<"3:修改"<<endl<<setw(40)<〈”4:排序”<<endl〈〈setw(40)<〈"5:刪除”<<endl<<setw(40)<<"6:添加"<〈endl<<setw(40)<〈"7:幫助”<<endl〈<setw(40)〈<"0:退出"〈〈endl;?cout<〈setw(60)〈<"——-----——-—---—————---—-------—-———---”<<endl; ?cout〈<"請選擇(0~7):";??cin>〉ch;??while(!(ch<='7’&&ch>='0'))/*輸入不在0到5之間無效*/ ?{?? cout<〈"數據輸入錯誤,請重新選擇(0~7):”;? ?cin>〉ch; }switch(ch){? case'1':create();break;??case'2’:search();break;??case'3':insert();break; ?case'4’:repin();break;? case'5’:del();break; ?case'6’:recreate();break; case’7':help();}}while(ch!='0’);?return0;}voidcreate(){//模塊一錄入學生信息?inti,j,t=0; charm;?StuGraInfos[3]={{"數學",10,5},{”英語",11,4},{"程序設計",12,4}};?fstreamfile;?for(i=0;i<N;i++)//輸入學生基本信息到內存?{ ?cout<<"請輸入學號"<<endl; cin〉〉d[i]、stuNo; for(intk=0;;k++)??{ ??for(j=0;j<i;j++) ?if(d[i]、stuNo==d[j]、stuNo) ??{ ? cout<<"此學號已存在,請重新輸入!”<〈endl; ???t=1; ???cin>〉d[i]、stuNo; ?break;? }? if(d[i]、stuNo==0)? { ? cout〈〈"學號不能為0,請重新輸入!"<<endl; ? cin>>d[i]、stuNo; ?t=1; ??break; ?} if(t==0) ??break; ?}? cout<〈"請輸入姓名”<<endl; ?cin>>d[i]、name; ?cout<<"請輸入性別"<<endl; ?cin〉>d[i]、sex;??cout<<”請輸入宿舍號”〈〈endl;? cin〉>d[i]、domNum; ?cout〈<"請輸入電話號"〈〈endl; ?cin〉>d[i]、tel; ?stuNum++; cout<<”就是否繼續?就是y,否n”<<endl; cin〉〉m; ?if(m!=’y’)? break;?}//輸入學生得成績信息到內存s[i]中?for(i=0;i<3;i++) { cout〈<”請開始輸入"〈<s[i]、courseName<<”成績"〈〈endl; for(j=0;j<stuNum;j++)?{ ?cout<<”學號"<〈endl;?cin>>s[i]、score_talbe[j]、stuNo;??cout〈<s[i]、courseName<〈"平時成績"<<endl;cin〉〉s[i]、score_talbe[j]、triGrade; cout〈<s[i]、courseName<<"卷面成績”<〈endl;cin〉〉s[i]、score_talbe[j]、examGrade;s[i]、score_talbe[j]、totalGrade=s[i]、score_talbe[j]、triGrade*0、3+s[i]、score_talbe[j]、examGrade*0、7; }?}//聲明文件流對象 ofstreamoutFile;?//將基本信息寫入文件test?out(”D:\\test、txt",ios::out|ios::binary);?if(!outFile)//使用錯誤流對象輸出錯誤信息?{ ?cout〈<"文件無法打開"〈〈endl;? abort();?}?else?{?//將內存中從a[i]地址開始得sizeof(d[i])得內容寫入文件中?for(i=0;i<stuNum;i++) ?out((char*)&d[i],sizeof(StuInfo));out();//關閉文件?}out("D:\\data、txt",ios::out|ios::binary); if(!outFile)//使用錯誤流對象輸出錯誤信息?{? cout<〈"文件無法打開"<<endl;??abort();?} else {? for(i=0;i〈3;i++)???out((char*)&s[i],sizeof(StuGraInfo)); ?out();//關閉文件 }}voidsearch(){intn,k,i,j,sum=0,t=0;charm,a[20];ifstreaminfile; cout〈<setw(40)<<"1:查詢基本信息"〈<endl〈〈setw(40)〈<”2:查詢成績”<〈endl〈〈setw(40)<〈"3:退出"〈<endl;?cout<<setw(60)〈<"-—-—-—--—-—---—--—-—-----—---—-—--—-—-"<〈endl; cin>〉n;??while(!(n<=3&&n〉=1))/*輸入不在1到3之間無效*/ ?{?? cout<<"數據輸入錯誤,請重新選擇(1~3):"; ?cin>〉n;??}??in("D:\\test、txt",ios::in|ios::binary); if(!infile) ?{ cout<〈"test、txt文件不能打開"〈〈endl; abort(); ?} else??{ ? for(i=0;in()!=EOF;i++)//將文件中得數據讀出放在d[i] ???//從文件中讀字節到指定得存儲器區域。? in((char*)&d[i],sizeof(StuInfo));???in();//關閉文件??} ?switch(n)??{? ?case1:cout<<"按學號查詢請輸入a,按姓名查詢輸入b,按宿舍號查詢輸入c”<<endl;?? cin〉〉m; ? if(m=='a')? ??{?? ?cout<<”請輸入學號"<〈endl; ? ?cin〉>k;???? for(i=0;i〈stuNum;i++) ?if(d[i]、stuNo==k)? ?{?? ??cout<〈”該學生學號:"〈〈d[i]、stuNo〈〈endl;??? ?cout〈<”該學生姓名:"<〈d[i]、name<<endl; ? ??cout〈<"該學生性別:"〈〈d[i]、sex〈<endl; ??? cout<<”該學生宿舍號:”〈<d[i]、domNum〈<endl; ?? cout<〈”該學生電話:"〈<d[i]、tel〈<endl;? ?? t=1; ??? } ? ??if(t==0)//容錯處理? ? cout<<"沒找到”〈<endl; }? ?elseif(m==’b') ? {?? ??cout<<”請輸入要查找學生得姓名”<〈endl;? ? cin>>a;??? ?for(i=0;i<stuNum;i++)?? if(strcmp(d[i]、name,a)==0) ???{? ?cout〈<"該學生學號:”〈<d[i]、stuNo〈<endl;? ? cout<〈"該學生姓名:"<<d[i]、name<<endl;? ? ?cout〈<”該學生性別:"<<d[i]、sex<<endl;?? ?? cout<<”該學生宿舍號:”〈<d[i]、domNum<<endl;?? ?cout〈〈"該學生電話:"〈〈d[i]、tel<<endl; ?? t=1; ? } ? if(t==0)//容錯處理? ?cout〈〈"沒找到”〈〈endl;??? }? ?else? ? {??? ?cout<<”請輸入好查找得學生得宿舍號”〈<endl; ??cin>〉k;?????for(i=0;i<stuNum;i++) ? if(d[i]、domNum==k) ?{???? ?cout〈〈"該學生學號:"<<d[i]、stuNo〈<endl; ??? ??cout〈<"該學生姓名:”<〈d[i]、name〈〈endl;??? cout<<"該學生性別:"<〈d[i]、sex<<endl;? ?? ??cout<<"該學生宿舍號:"〈<d[i]、domNum〈<endl; ?? cout<<"該學生電話:"〈〈d[i]、tel〈<endl; ?? ?? t=1;?? ?}?????if(t==0)//容錯處理? ???cout<〈”沒找到”〈<endl;? ? }?break;?? case2: ??in("D:\\data、txt",ios::in|ios::binary); if(!infile)?? { cout<<"data、txt文件不能打開”<<endl;? abort();??? }?else{??? for(i=0;i〈3;i++)//將文件中得數據讀出放在p[i]內? ?//從文件中讀字節到指定得存儲器區域。?? ? in((char*)&p[i],sizeof(StuGraInfo));? ?? in(); ? cout<〈"請輸入要查找得學生得學號"〈<endl; ? ? cin〉>k;?????for(i=0;i〈stuNum;i++)??? ? if(d[i]、stuNo==k) ??? ?{? ??? cout〈<”該學生姓名為:"<<d[i]、name<<endl; ? ? ?t=1;? ? ?}? ?? if(t==0)//容錯處理?? ?? cout<<"沒找到”〈〈endl; ? ? for(i=0;i<3;i++)//找到該學生,輸出成績信息并記錄實得學分? ???for(j=0;j〈stuNum;j++) ? ??{? if(p[i]、score_talbe[j]、stuNo==k)? ?? ? {? ????cout<<p[i]、courseName〈<"\t”〈<"平時成績:"<<p[i]、score_talbe[j]、triGrade; ? ?cout〈〈"\t”<<"卷面成績:”<<p[i]、score_talbe[j]、examGrade; ?? ???cout<<"\t"〈〈"總分:"<<p[i]、score_talbe[j]、totalGrade<<endl;if(p[i]、score_talbe[j]、totalGrade〉=60) ?? ? sum+=p[i]、creditHour;?//用sum記錄及格科目得學分???? ??}?? ???}? ?? cout〈〈”該學生實得學分為”〈<sum〈〈endl;? ?} case3: ??break; }}voidinsert(){//模塊三修改學生信息 fstreamin;intn,i,j,t=0;?charcourse[10];?in("D:\\data、txt”,ios::in|ios::binary); if(!infile) { ?cout〈<”data、txt文件不能打開"〈<endl;??abort(); }?else?{??for(i=0;i<3;i++)//將文件中得數據讀出放在p[i]內,并輸出? ?//從文件中讀字節到指定得存儲器區域。 ?in((char*)&p[i],sizeof(StuGraInfo)); ?in();//關閉文件??cout<<"請輸入要修改學生得學號:"<<endl;? cin>>n; for(i=0;i<3;i++) ?for(j=0;j<stuNum;j++)???if(p[i]、score_talbe[j]、stuNo==n) ? { ?? ?t=1;? ?break; ???} if(t==0)??{ cout<<"找不到該學生!”<<endl; ?return; }? cout<<"輸入要修改得科目得課程名稱"<<endl;??cout〈〈”課程包括數學、英語、程序設計”<〈endl;??cin〉>course; for(i=0;i〈3;i++) ??if(strcmp(p[i]、courseName,course)==0)? ?{?? t=0;?? ?break;? ?}if(t==1)//容錯處理? {???cout<<”沒找到該科目!"<〈endl;? return;? }? for(j=0;j〈N;j++) ? if(p[i]、score_talbe[j]、stuNo==n) ??{? ?cout〈<”請輸入該學生平時成績”<〈endl; ??cin>〉p[i]、score_talbe[j]、triGrade; ? ?cout〈<"請輸入該學生卷面成績"<〈endl; ??cin>>p[i]、score_talbe[j]、examGrade;? ? p[i]、score_talbe[j]、totalGrade=p[i]、score_talbe[j]、triGrade*0、3+p[i]、score_talbe[j]、examGrade*0、7; } out(”D:\\data、txt",ios::out|ios::binary);//打開文件? if(!outFile)//使用錯誤流對象輸出錯誤信息 ?{? cout<<”文件無法打開”<〈endl; ? abort();??}?else//輸出數據到與對象outFile關聯得文件中 ?{? ?//把新信息寫入文件??for(i=0;i<3;i++) ? ?out((char*)&p[i],sizeof(StuGraInfo));? out();//關閉文件 cout<〈"修改成功!"<<endl;? }?}}voiddel(){intnum,i=0,j=0,t=0;?fstreamin;?cout〈<”請輸入要輸入學生得學號"〈<endl;?cin〉>num;?in("D:\\test、txt”,ios::in|ios::binary);if(!infile)?{ ?cout<<"test、txt文件不能打開”<<endl;//提示錯誤信息 ?abort(); } else{for(i=0;i〈3;i++)//將文件中得數據讀出放在p[i]內,并輸出 ? //從文件中讀字節到指定得存儲器區域。 ?in((char*)&d[i],sizeof(StuInfo)); in(); ?for(i=0;i<stuNum;i++)? ?if(d[i]、stuNo==num)? {t=1;? d[i]、stuNo=0;??? d[i]、domNum=0;? ??strcpy(d[i]、sex,"\0"); ? ?for(j=0;j<12;j++) ?d[i]、tel[j]=0;? ?strcpy(d[i]、name,"\0”);? } ?if(t==0) ?{? ?cout<〈"未找到該學生!"<〈endl;??}?}?in("D:\\data、txt”,ios::in|ios::binary);if(!infile) {? cout〈<"data、txt文件不能打開”〈<endl;//提示錯誤信息 abort(); }?else{for(i=0;i<3;i++)//將文件中得數據讀出放在p[i]內 ? //從文件中讀字節到指定得存儲器區域。? in((char*)&p[i],sizeof(StuGraInfo)); in(); ?for(i=0;i〈3;i++)???for(j=0;j〈stuNum;j++)??? if(p[i]、score_talbe[j]、stuNo==num) {?? ??p[i]、score_talbe[j]、examGrade=0;? ? p[i]、score_talbe[j]、stuNo=0; p[i]、score_talbe[j]、totalGrade=0;? ? ?p[i]、score_talbe[j]、triGrade=0; ?} }?out("D:\\test、txt”,ios::out|ios::binary);?if(!outFile)//使用錯誤流對象輸出錯誤信息 {??cout<<”文件無法打開"<<endl;? abort();?} else {? //將內存中從d[i]地址開始得sizeof(d[i])得內容寫入文件中?for(i=0;i<3;i++) ?out((char*)&d[i],sizeof(StuInfo));out();//關閉文件 cout〈<”基本信息刪除成功!"<<endl; } out("D:\\data、txt",ios::out|ios::binary); if(!outFile)//使用錯誤流對象輸出錯誤信息 {? cout<〈"文件無法打開”<<endl; abort();?} else {? //將內存中從p[i]地址開始得sizeof(p[i])得內容寫入文件中?for(i=0;i〈3;i++) out((char*)&p[i],sizeof(StuGraInfo));out();//關閉文件? cout<<”成績信息刪除成功!”<<endl;?} return;}voidrepin(){?ifstreamfile;?inti,j,max,courseNo,n,k=0; doubleq[N]={0},t; intstu[N],num; charname[N][20],stuName[20]; ("D:\\data、txt”,ios::in|ios::binary); for(i=0;i〈3;i++)? ((char*)&p[i],sizeof(StuGraInfo));?();?("D:\\test、txt",ios::in|ios::binary);?for(i=0;i<stuNum;i++) ?((char*)&d[i],sizeof(StuInfo)); (); cout〈〈setw(40)〈<”1:按總分查詢"<〈endl<〈setw(40)<<"2:按某課成績查詢"〈〈endl<<setw(40)〈<”3:按某課卷面成績查詢"<<endl<〈setw(40)<<”4:退出”<<endl;?cout<<setw(60)<〈"-——----—————-—-——-—------——-—---——---—"〈<endl; ?cin〉>n;??switch(n)??{? case1: ??for(i=0;i〈3;i++) ?for(j=0;j<stuNum;j++)? { ? ?q[j]=q[j]+p[i]、score_talbe[j]、totalGrade;//計算學生各自三門成績總分與 stu[j]=p[i]、score_talbe[j]、stuNo;//同時記錄學生學號? ? ?strcpy(name[j],d[j]、name);? ??} for(i=0;i〈N;i++) { ? max=i;? for(j=i+1;j<N;j++)? ?if(q[max]<q[j]) ? max=j; ?if(max!=i)//分數排序得同時,學號隨著分數動 ???{ ?? t=q[max];num=stu[max];strcpy(stuName,name[max]);? ? q[max]=q[i];stu[max]=stu[i];strcpy(name[max],name[i]);? ? q[i]=t;stu[i]=num;strcpy(name[i],stuName);??? }???} cout〈<"按總分排序結果為:”<<endl;? cout〈〈”學號"<<”\t"〈〈"姓名”<〈”\t”<<"分數”〈<endl;for(i=0;i<stuNum;i++)? cout〈〈stu[i]<〈"\t”〈〈name[i]<<”\t"<〈q[i]〈<endl;? cout〈<endl;? break;??case2: ??cout〈<"如按某課排序,請輸入要排序課程得課程號”<<endl;? cin〉>courseNo; for(i=0;i<stuNum;i++) ??if(p[i]、courseNo==courseNo) ??{? ? k=1; ? break;? ? } ?if(k==0)//容錯處理? ? {?? ?cout〈〈"找不到該課程!"<<endl; ??? return; ? ?}? for(j=0;j<stuNum;j++) ? { ? q[j]=p[i]、score_talbe[j]、totalGrade;???stu[j]=p[i]、score_talbe[j]、stuNo; ? }??for(i=0;i<stuNum;i++)? {? max=i;? for(j=i+1;j〈stuNum;j++)?? ?if(q[max]<q[j]) ???max=j;? ?if(max!=i) ? ?{????t=q[max];num=stu[max]; ? q[max]=q[i];stu[max]=stu[i]; ? q[i]=t;stu[i]=num; ??}???} ?cout〈<”按該課程排序結果為:"<〈endl; ?cout〈〈”學號"<<"\t"<<"分數”<<endl;?for(i=0;i<stuNum;i++)? cout〈〈stu[i]〈<"\t"〈〈q[i]<<endl;? cout〈<endl; break; ?case3:? ?cout<〈"如按某課卷面成績排序,請輸入要排序課程得課程號"〈<endl; ?cin>〉courseNo; ?for(i=0;i<stuNum;i++)? if(p[i]、courseNo==courseNo)?? ?{? k=1; ?break; ??}? ?if(k==0)//容錯處理? ?{ ? ?cout〈〈"找不到該課程!”〈<endl;?? ??return; ??}? for(j=0;j〈stuNum;j++) ? {? q[j]=p[i]、score_talbe[j]、examGrade;//計算各個學生該門課總分???stu[j]=p[i]、score_talbe[j]、stuNo; ? } ?for(i=0;i<stuNum;i++)//分數排序,學號跟著分數動???{ ?max=i; for(j=i+1;j<N;j++) ? if(q[max]<q[j]) ?? max=j; if(max!=i) { ???t=q[max];num=stu[max];??? q[max]=q[i];stu[max]=stu[i];? q[i]=t;stu[i]=num; ???}?? } cout<〈”按該課程卷面成績排序結果為:"〈<endl;?? cout〈<"學號"<<"\t"<〈"分數"<<endl;? for(i=0;i<stuNum;i++)???cout〈〈stu[i]<<”\t"<<q[i]<〈endl; ?cout<<endl; ?case4: ?break;??}}voidhelp(){ cout<〈”此系統具有存儲學生數據,比您更有查詢、修改、排序、刪除、添加得功能。"<<endl;;cout<<”初次使用時首先請選擇’創建’菜單,進行寫入文件,用于保存數據"<<endl;?cout〈<”已創建后瞧菜單進行查詢、修改等功能!"<<endl;}voidrecreate(){?fstreamin;?intn,i,j,k; cout<〈"請輸入添加人數"<<endl;//鍵入添加人數 cin>>n; //讀出文件信息 in(”D:\\test、txt",ios::in|ios::binary);?for(i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030中國潮汕鹵鵝行業市場現狀分析及競爭格局與投資發展研究報告
- DB32/T 4047-2021工業機器人用視覺模塊通用技術條件
- 2025至2030年中國白南瓜子行業投資前景及策略咨詢研究報告
- DB32/T 3923-2020飲用水處理裝置遠程監控技術要求和服務規范
- DB32/T 3806-2020獼猴桃細菌性潰瘍病監測規范
- DB32/T 3762.2-2020新型冠狀病毒檢測技術規范第2部分:病毒分離與鑒定
- DB32/T 3493-2019普通國省道公路標志標線維護規范
- DB32/ 4043-2021池塘養殖尾水排放標準
- DB31/T 923-2015綠化市容專用輪式電動作業機具安全技術規范
- DB31/T 72-2020工業鍋爐運行檢測與控制裝置的配置
- 2023年山西文旅集團云游山西股份有限公司招聘筆試模擬試題及答案解析
- 線描畫基本功教學課件
- 船上投訴程序(中英文)
- DB37-T 3781-2019 政務服務中心能源消耗定額標準-(高清版)
- 企業組織架構表
- 氣象檢測器實測項目質量檢驗報告單
- 重癥胰腺炎(1)課件
- 科學素養全稿ppt課件(完整版)
- 克拉潑改進型電容三點式振蕩器
- 介入導管室耗材準備及管理
- SPC基礎知識培訓教材-入門級_課件
評論
0/150
提交評論