版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C語言專業(yè)課程設計學生綜合測評系統課程設計報告課程名稱C語言程序設計課題名稱學生綜合測評系統專業(yè)通信工程班級1503學號2015014109,2015014128姓名湯華貝,佘旭升,郭夢婷,雍甜甜指導教師毛德梅編寫2016年6月
一、需求分析一、問題描述:每個學生的信息為:學號、姓名、性別、家庭住址、聯系電話、語文、數學、外語三門單科成績、考試平均成績、考試名次、同學互評分、品德成績、任課教師評分、綜合測評總分、綜合測評名次。考試平均成績、同學互評分、品德成績、任課教師評分分別占綜合測評總分的60%,10%,10%,20%。二、功能描述:A、學生信息處理(1)輸入學生信息、學號、姓名、性別、家庭住址、聯系電話,按學號以小到大的順序存入文件中。提示:學生信息可先輸入到數組中,排序后可寫到文件中。(2)插入(修改)同學信息:提示:先輸入將插入的同學信息,然后再打開源文件并建立新文件,把源文件和輸入的信息合并到新文件中(保持按學號有序)若存在該同學則將新記錄內容替換源內容,(3)刪除同學信息:提示:輸入將刪除同學號,讀出該同學信息,要求對此進行確認,以決定是否刪除將刪除后的信息寫到文件中。(4)瀏覽學生信息:提示:打開文件,顯示該文件的學生信息。B、學生數據處理:(1)按考試科目錄入學生成績并且按公式:考試成績=(語文+數學+外語)/3計算考試成績,并計算考試名次,提示:先把學生信息讀入數組,然后按提示輸入每科成績,計算考試成績,求出名次,最后把學生記錄寫入一個文件中。(2)學生測評數據輸入并計算綜合測評總分及名次。提示:綜合測評總分=(考試成績)*+(同學互評分)*+品德成績*+任課老師評分*。(3)學生數據管理提示:輸入學號,讀出并顯示該同學信息,輸入新數據,將改后信息寫入文件(4)學生數據查詢:提示:輸入學號或其他信息,即讀出所有數據信息,并顯示出來。C、學生綜合信息輸出提示:輸出學生信息到屏幕。三、算法提示:1、數據結構:結構體類型數組2、數據庫結構:下表構成該系統的基本數據庫。學號姓名考試成績…評分…CharCharstruct…int…二.總體設計方案開始W開始Welcome函數輸入瀏覽修改刪除瀏覽全部清除全部排名查詢排名退出初始化inti函數
三.程序源代碼#include<>#include<>#defineN100voidinit();charwelcome();voidInputInfo();voidview();voidxiugai();voidDeleteInfo();voidpaiming1(structstudent_infostudent[]);voidpaiming2(structstudent_infostudent[]);voidViewAll();voidclean();voidPaimingView();voidexits();structstudent_infoinput();voidSortInfo(structstudent_infostudent[]);voidViewInfo(structstudent_info*sp);voidSaveStruct(structstudent_info*sp,intsize,intn,charfilename[20]);voidLoadStruct(structstudent_info*sp,intsize,intn,charfilename[20]);voidSaveInt(int*p,intsize,intn,charfilename[20]);voidLoadInt(int*p,intsize,intn,charfilename[20]);intNumExist(structstudent_infostudent[],intnum);structstudent_info{ intnum; //學號 charname[6]; //姓名 charsex[5]; //性別 charadress[20]; //家庭住址 chartel[10]; //電話 intchinese,math,english,huping,pingde,jiaoping,paiming1,paiming2; //語文數學英語互評品德教評 doubleave,zhongping; structstudent_infostudent[N]; intcounter,PM;voidmain(){ charselect; init();//調用初始化函數 while(1) {select=welcome(); switch(select) { case'1': system("cls"); InputInfo();break; //選項1:輸入學生信息 case'2': system("cls");view();break; //選項2:瀏覽學生信息 case'3': system("cls"); xiugai();break; //選項3:修改學生信息 case'4': system("cls"); DeleteInfo();break; //選項4:刪除學生信息 case'5': system("cls");paiming1(student);paiming2(student);PM=1;getchar();getchar(); system("cls");break; //選項5:學生信息排名 case'6':system("cls");ViewAll();break; //選項6:瀏覽全部學生信息 case'7':system("cls");clean();break; //選項7:清除所有信息 case'8':system("cls");PaimingView();break; //選項8:查詢排名 case'0': system("cls"); exits();break; //選項9:退出 } }}voidinit(){ FILE*fp; fp=fopen("","rb"); //打開計數變量counter文件 if(fp!=NULL) //載入counter { fclose(fp); LoadInt(&counter,sizeof(counter),1,""); } else { fp=fopen("","wb"); //若沒有counter文件,則創(chuàng)建一個,counter初始為0。 fclose(fp); counter=0; } if(counter!=0) //載入學生數據 LoadStruct(student,sizeof(structstudent_info),counter,"");}charwelcome(){ charselect; while(1) { system("cls"); printf("\t\t歡迎使用學生信息管理系統\n"); printf("\n"); printf("\n\n"); printf("\n\n"); printf("\n\n"); printf("\n\n"); printf("\n\n"); printf("\n\n"); printf("\n\n"); printf("\n\n"); printf("\n\n"); printf("輸入相應的功能序號:"); select=getchar(); if(select=='1'||select=='2'||select=='3'||select=='4'||select=='5'||select=='6'||select=='7'||select=='8'||select=='0') returnselect; system("cls"); continue; }}voidInputInfo(){ inti,n; printf("需要錄入多少位學生的信息:"); scanf("%d",&n); system("cls"); for(i=1;i<=n;i++) { student[counter]=input(); counter++; } PM=0; SortInfo(student); SaveStruct(student,sizeof(structstudent_info),counter,""); SaveInt(&counter,sizeof(counter),1,"");}voidview(){ inti,num; printf("請輸入需要游覽的學生信息的學號:"); scanf("%d",&num); getchar(); if((i=NumExist(student,num))==-1) { printf("不存在該學號,按回車鍵返回..."); getchar(); system("cls"); return; } ViewInfo(&student[i]); printf("\n按回車鍵返回..."); getchar(); system("cls"); return;}voidxiugai(){ inti,num; charYN,select; printf("請輸入需要修改的學生信息的學號:"); scanf("%d",&num); getchar(); if((i=NumExist(student,num))==-1) { printf("不存在該學號,按回車鍵返回..."); getchar(); system("cls"); return; } ViewInfo(&student[i]); printf("是否要修改?(Y/N):"); scanf("%c",&YN); getchar(); if(YN!='Y'&&YN!='y') { printf("修改取消."); getchar(); system("cls"); return; } system("cls"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); scanf("%c",&select); switch(select) { case'1':printf("修改學號:");scanf("%d",&student[i].num);break; case'2':printf("修改性別:");scanf("%s",&student[i].sex);break; case'3':printf("修改家庭住址:");scanf("%s",&student[i].adress);break; case'4':printf("修改聯系電話:");scanf("%s",&student[i].tel);break; case'5':printf("修改語文成績:");scanf("%d",&student[i].chinese);break; case'6':printf("修改數學成績:");scanf("%d",&student[i].math);break; case'7':printf("修改外語成績:");scanf("%d",&student[i].english);break; case'8':printf("修改同學互評分:");scanf("%d",&student[i].huping);break; case'9':printf("修改品德成績:");scanf("%d",&student[i].pingde);break; case'0':printf("修改任課教師評分:");scanf("%d",&student[i].jiaoping);break; } SortInfo(student); SaveStruct(student,sizeof(structstudent_info),counter,"");PM=0; getchar(); printf("修改完成..."); getchar(); system("cls");}voidDeleteInfo(){ inti,j,num; charYN; printf("請輸入要刪除的學生信息學號:"); scanf("%d",&num); getchar(); if((i=NumExist(student,num))==-1) { printf("沒有該學號,按回車鍵返回..."); getchar(); system("cls"); return; } ViewInfo(&student[i]); printf("\n確認刪除(Y/N):"); scanf("%c",&YN); getchar(); if(YN!='Y'&&YN!='y') { printf("刪除取消..."); } else { for(j=i;j<counter-1;j++) student[j]=student[j+1]; counter--; PM=0; SaveStruct(student,sizeof(structstudent_info),counter,""); SaveInt(&counter,sizeof(counter),counter,""); printf("刪除完成..."); } getchar(); system("cls");}voidpaiming1(structstudent_infostudent[]){ structstudent_info*p[N],*temp; inti,j; for(i=0;i<counter;i++) p[i]=&student[i]; for(i=0;i<counter-1;i++) for(j=i+1;j<counter;j++) { if(p[i]->ave<p[j]->ave) { temp=p[i]; p[i]=p[j]; p[j]=temp; } } for(i=0;i<counter;i++) p[i]->paiming1=i+1; printf("平均分排名完成...\n"); }voidpaiming2(structstudent_infostudent[]){ structstudent_info*p[N],*temp; inti,j; for(i=0;i<counter;i++) p[i]=&student[i]; for(i=0;i<counter-1;i++) for(j=i+1;j<counter;j++) { if(p[i]->zhongping<p[j]->zhongping) { temp=p[i]; p[i]=p[j]; p[j]=temp; } } for(i=0;i<counter;i++) p[i]->paiming2=i+1; printf("綜合測評分排名完成...\n");}voidViewAll(){ inti; for(i=0;i<counter;i++) { ViewInfo(&student[i]); printf("\n"); } getchar(); printf("回車鍵返回..."); getchar(); system("cls");}voidclean(){ counter=0; SaveInt(&counter,sizeof(counter),1,""); printf("清除完畢..."); getchar(); getchar(); system("cls");}voidPaimingView(){ inti,num; printf("輸入要查詢的學號:"); scanf("%d",&num); getchar(); i=NumExist(student,num); if(i==-1) { printf("該學號不存在..."); getchar(); return; } if(PM==0) { printf("請先進行成績排名..."); getchar(); return; } printf("%s的平均分排名%d\n",student[i].name,student[i].paiming1); printf("%s的綜合測評分排名%d\n",student[i].name,student[i].paiming2); printf("按回車鍵返回..."); getchar(); return;}voidexits(){ printf("謝謝使用!\n");}structstudent_infoinput(){ structstudent_infostu,*sp; charYN; sp=&stu; while(1) { while(1) { printf("錄入學號:"); scanf("%d",&sp->num); getchar(); if(NumExist(student,sp->num)!=-1) { printf("該學號已存在,請重新輸入..."); getchar(); system("cls"); continue; } break; } printf("錄入姓名:"); gets(sp->name); printf("錄入性別:"); gets(sp->sex); printf("錄入家庭住址:"); gets(sp->adress); printf("錄入聯系電話:"); gets(sp->tel); printf("\n接下來錄入成績\n"); printf("語文:"); scanf("%d",&sp->chinese); printf("數學:"); scanf("%d",&sp->math); printf("英語:"); scanf("%d",&sp->english); sp->ave=(sp->chinese+sp->math+sp->english)/; printf("同學互評:"); scanf("%d",&sp->huping); printf("品德分數:"); scanf("%d",&sp->pingde); printf("教師評價:"); scanf("%d",&sp->jiaoping); getchar(); sp->zhongping=(sp->ave*+sp->huping*+sp->pingde*+sp->jiaoping*); printf("錄入完畢,確認信息是否正確(Y/N)"); YN=getchar(); getchar(); if(YN=='Y'||YN=='y') break; else { printf("按回車鍵重新錄入信息。"); getchar(); system("cls"); continue; } } system("cls"); returnstu;}voidSortInfo(structstudent_infostudent[]){ inti,j; structstudent_infotemp; for(i=0;i<counter-1;i++) for(j=i+1;j<=counter-1;j++) { if(student[i].num<student[j].num) { temp=student[i]; student[i]=student[j]; student[j]=temp; } }}voidViewInfo(structstudent_info*sp){ printf("學號\t姓名\t性別\t家庭住址\t聯系電話\n"); printf("%d\t%s\t%s\t%s\t\t%s\n",sp->num,sp->name,sp->sex,sp->adress,sp->tel); printf("語文\t數學\t英語\t互評\t品德\t教評\n"); printf("%d\t%d\t%d\t%d\t%d\t%d\t\n",sp->chinese,sp->math,sp->english,sp->huping,sp->pingde,sp->jiaoping); printf("平均分\t綜合分\n")
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 全新網絡游戲開發(fā)合同2篇
- 2024-2025學年新教材高中歷史第八單元20世紀下半葉世界的新變化第19課資本主義國家的新變化課時作業(yè)含解析新人教版必修中外歷史綱要下
- 2025不動產登記信息化改造項目合同3篇
- 2025年微信小程序企業(yè)客戶關系管理系統開發(fā)與應用合同3篇
- 2024銷售人員職業(yè)發(fā)展保障勞動合同3篇
- 二零二五年度醫(yī)療設施臨時借款合同參考樣本4篇
- 2025高溫粘合劑產業(yè)鏈金融服務平臺合作合同3篇
- 2025年度電信設備知識產權保護合同3篇
- 2025年度食品行業(yè)退換貨質量保證協議書
- 二零二五年度高層建筑樓頂廣告位使用權租賃合同3篇
- 臺資企業(yè)A股上市相關資料
- 電 梯 工 程 預 算 書
- 羅盤超高清圖
- 參會嘉賓簽到表
- 機械車間員工績效考核表
- 形式發(fā)票格式2 INVOICE
- 2.48低危胸痛患者后繼治療評估流程圖
- 人力資源管理之績效考核 一、什么是績效 所謂績效簡單的講就是對
- 山東省醫(yī)院目錄
- 云南地方本科高校部分基礎研究
- 廢品管理流程圖
評論
0/150
提交評論