




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
西安科技大學計算機技能訓(xùn)練報告學院電氣與控制工程學院學號1206080116__姓名___班級微電子學1201__日期_2013.12.25___設(shè)計目的和任務(wù)(1)設(shè)計目的1.更深入的理解和掌握該課程中的基本概念,程序設(shè)計的思想、技術(shù)和方法。2.訓(xùn)練學生綜合運用所學知識獨立完成課題以及撰寫課程設(shè)計報告的能力。3.提高查詢資料文獻,從中獲得新知識的能力。4.培養(yǎng)實踐動手能力,利用理論去解決實際問題的能力。(2)設(shè)計任務(wù)1本系統(tǒng)采用一個結(jié)構(gòu)體數(shù)組,每個數(shù)據(jù)的結(jié)構(gòu)應(yīng)當包括:學號、姓名、M門課程名稱。2本系統(tǒng)顯示這樣的菜單:請選擇系統(tǒng)功能項:a、成績錄入b、成績顯示c、成績保存d、成績排序e、成績修改(要求先輸入密碼)f、成績統(tǒng)計1)顯示每門課程成績最高的學生的基本信息2)顯示每門課程的平均成績3)顯示超過某門課程平均成績的學生人數(shù)g、退出系統(tǒng)3執(zhí)行一個具體的功能之后,程序?qū)⒅匦嘛@示菜單。4將學生成績保存到文件中。二、總體設(shè)計此程序根據(jù)不同的功能設(shè)計幾個模塊,寫成相應(yīng)的函數(shù),然后利用函數(shù)的調(diào)用來實現(xiàn)。模塊(1):編輯由老師從鍵盤輸入成績并存于文件中模塊(2):顯示從文件中刪除已存的學生信息模塊(4):查詢可通過三種不同的方式查詢成績模塊(5):統(tǒng)計對已輸入的成績進行排序模塊(6):文件從文件中導(dǎo)出已輸入的數(shù)據(jù)編輯顯示文件排序統(tǒng)計查詢歡迎頁編輯顯示文件排序統(tǒng)計查詢歡迎頁退出退出按平均成績按姓名按英語成績按數(shù)學成績按語文成績按電路成績按平均成績按學號按平均成績按姓名按英語成績按數(shù)學成績按語文成績按電路成績按平均成績按學號詳細設(shè)計1)結(jié)構(gòu)體數(shù)組:存儲學生個人信息typedefstruct{charnum[10];charname[10];intchinese;intmath;intenglish; intdianlu; doubleaver;}Student;Studentstu[99];(2)intshuliang(統(tǒng)計錄入的總?cè)藬?shù))rs(統(tǒng)計錄入的人數(shù)),i,k(循環(huán)變量)xx(學號)choice(需要刪除的學生的學號)(3)數(shù)組:biaozhi[20](記錄用的選擇)yy[20](記錄學生的姓名)shanchuinfo[10](判定是否刪除學生的全部信息還是部分信息)(4)intshuru(Studentstud[],intn)/*輸入若干條記錄*/{ inti=0; charsign,x[10]; doublea=0.0;while(sign!='n'&&sign!='N'){printf("輸入學生學號:");scanf("%s",stu[n+i].num);printf("輸入學生姓名:");scanf("%s",stu[n+i].name);printf("輸入學生的語文、數(shù)學、英語、電路分數(shù):");scanf("%d%d%d%d",&stu[n+i].chinese,&stu[n+i].math,&stu[n+i].english,&stu[n+i].dianlu);a=1.0*(stu[n+i].chinese+stu[n+i].math+stu[n+i].english+stu[n+i].dianlu)/4;stu[n+i].aver=a;gets(x);/*清除多余的輸入*/printf("是否繼續(xù)輸入?(Y/N):\n");scanf("%c",&sign);i++;}return(n+i);}四.調(diào)試在調(diào)試程序的過程中出過一些錯誤,有事吧中英文標點符號弄混了,導(dǎo)致出現(xiàn)錯誤卻很難找出,只得全部替換。當有其他問題是找同學幫自己改。通過上機發(fā)現(xiàn)錯誤稱為動態(tài)檢查。在編譯時會給出語法錯誤的信息,調(diào)試時可以根據(jù)提示信息具體找出程序中出錯之處并改正。應(yīng)當注意的是有時提示出錯的地方并不是真正出錯的位置,如果在提示出錯的行找不到錯誤的話應(yīng)當?shù)缴弦恍性僬?。有時提示出錯的類型并非絕對準確,由于出錯的情況繁多且各種錯誤互有關(guān)聯(lián),因此要善于分析,找出真正的錯誤,而不要只從字面意義上找出錯信息,鉆牛角尖。當系統(tǒng)提示的出錯信息很多,應(yīng)當從上到下逐一改正。有時顯示出一大片出錯信息往往使人感到問題嚴重,無從下手。其實可能只有一二個錯誤。例如,對使用的變量未定義,編譯時就會對所有含該變量的語句發(fā)出出錯信息。這時只要加上一個變量定義,就所有錯誤都消除了。如果實在找不到錯誤,可以采用“分段檢查”的方法。在程序不同的位置設(shè)幾個printf函數(shù)語句,輸出有關(guān)變量的值,逐段往下檢查。直到找到在某一段中數(shù)據(jù)不對為止。這時就已經(jīng)把錯誤局限在這一段中了。不斷減小“查錯區(qū)”,就能發(fā)現(xiàn)錯誤所在。
五、源程序清單和執(zhí)行結(jié)果#include"stdio.h"#include<stdlib.h>#include<string.h>#include"process.h"#include"ctype.h"typedefstruct{charnum[10];charname[10];intchinese;intmath;intenglish; intdianlu; doubleaver;}Student;Studentstu[99];intshuru(Studentstud[],intn)/*輸入若干條記錄*/{ inti=0; charsign,x[10]; doublea=0.0;while(sign!='n'&&sign!='N'){printf("輸入學生學號:");scanf("%s",stu[n+i].num);printf("輸入學生姓名:");scanf("%s",stu[n+i].name);printf("輸入學生的語文、數(shù)學、英語、電路分數(shù):");scanf("%d%d%d%d",&stu[n+i].chinese,&stu[n+i].math,&stu[n+i].english,&stu[n+i].dianlu);a=1.0*(stu[n+i].chinese+stu[n+i].math+stu[n+i].english+stu[n+i].dianlu)/4;stu[n+i].aver=a;gets(x);/*清除多余的輸入*/printf("是否繼續(xù)輸入?(Y/N):\n");scanf("%c",&sign);i++;}return(n+i);}voidxianshi(Studentstud[],intn)/*顯示所有記錄*/{inti;printf("----------------------------------------------------------\n");/*格式頭*/printf("學號姓名語文數(shù)學英語電路平均成績\n");printf("----------------------------------------------------------\n");for(i=0;i<n;i++){printf("%-10s%-10s%-10d%-10d%-10d%-10d%-10.2lf\n",stu[i].num,stu[i].name,stu[i].chinese,stu[i].math,stu[i].english,stu[i].dianlu,stu[i].aver);}}voidxiugai(Studentstud[],intn)/*修改*/{inti=0,choice=1;charx[10];while(choice!=0){printf("請輸入您要修改的學生的學號:\n");scanf("%s",x); for(i=0;;i++) { if(strcmp(stu[i].num,x)==0)break; }printf("請選擇您要修改的內(nèi)容:\n");printf("----------------------\n"); printf("|姓名請按1|\n"); printf("|語文請按2|\n"); printf("|數(shù)學分數(shù)請按3|\n"); printf("|英語分數(shù)請按4|\n"); printf("|電路請按5|\n"); printf("|退出請按0|\n");printf("+----------------------+\n");printf("請輸入您的選擇:");scanf("%d",&choice);switch(choice){case0:break;case1:printf("請輸入新姓名:");scanf("%s",stu[i].name);break;case2:printf("請輸入新的語文分數(shù):");scanf("%d",&stu[i].chinese);break; case3:printf("請輸入新的數(shù)學分數(shù):");scanf("%d",&stu[i].math);break; case4:printf("請輸入新的英語分數(shù):");scanf("%d",&stu[i].english);break;case5:printf("請輸入新的電路分數(shù):");scanf("%d",&stu[i].dianlu);break;default:printf("\n無效選項!");break; }break; } return;}intshanchu(Studentstud[],intn)/*按姓名查找,刪除一條記錄*/{chars[20];inti;intj;i=0;printf("輸入要刪除記錄的姓名:");scanf("%s",s);while(strcmp(stu[i].name,s)!=0&&i<n)i++;if(i==n){printf("notfind!\n");return(n);}for(j=i;j<n-1;j++)/*刪除操作*/{strcpy(stu[j].num,stu[j+1].num);strcpy(stu[j].name,stu[j+1].name);stu[j].chinese=stu[j+1].chinese;stu[j].math=stu[j+1].math;stu[j].english=stu[j+1].english;stu[j].dianlu=stu[j+1].dianlu;stu[j].aver=stu[j+1].aver;}printf("DeleteSuccessed!\n");return(n-1);}voidchaxun_xingming(Studentstud[],intn)/*按姓名查找并顯示一個記錄*/{chars[20];inti=0;printf("輸入姓名:");scanf("%s",s);while(strcmp(stu[i].name,s)!=0&&i<n)i++;/*查找判斷*/if(i==n){printf("notfind!\n");/*輸入失敗信息*/return;}printf("他的姓名、學號是:%s%s\n",stu[i].name,stu[i].num);/*輸出該學生信息*/printf("語文高數(shù)英語電路平均成績是:%d,%d,%d,%d,%lf\n",stu[i].chinese,stu[i].math,stu[i].english,stu[i].dianlu,stu[i].aver);}voidchaxun_pingjun(Studentstud[],intn)/*按平均成績查找并顯示一個記錄*/{doubles;inti=0;printf("輸入平均成績:");scanf("%lf",&s);while(stu[i].aver!=s&&i<n)i++;if(i==n){printf("notfind!\n");/*輸入失敗信息*/return;}printf("他的學號是:%s\n",stu[i].num);/*輸出該學生信息*/printf("他的姓名是:%s\n",stu[i].name);printf("他的語文、數(shù)學、英語、電路分數(shù)是:%d%d%d%d\n",stu[i].chinese,stu[i].math,stu[i].english,stu[i].dianlu);}voidpaixu_xuehao(Studentstud[],intn)/*按學號排序*/{inti,j,p,q,r,w;doubley;charx[20],t[10];for(i=0;i<n-1;i++)/*冒泡法排序*/for(j=0;j<n-1-i;j++)if(strcmp(stud[j].num,stud[j+1].num)>0){strcpy(t,stud[j].num);strcpy(stud[j].num,stud[j+1].num);strcpy(stud[j+1].num,t);strcpy(x,stud[j].name);strcpy(stud[j].name,stud[j+1].name);strcpy(stud[j+1].name,x);y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;}return;}voidpaixu_pingjun(Studentstud[],intn)/*按平均成績排序*/{inti,j,p,q,r,w;doubley;charx[20],t[10];for(i=0;i<n-1;i++)/*冒泡法排序*/for(j=0;j<n-1-i;j++)if(stu[j].aver>stu[j+1].aver){y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q; r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;strcpy(x,stu[j].name); strcpy(stu[j].name,stu[j+1].name); strcpy(stu[j+1].name,x);strcpy(t,stu[j].num);strcpy(stu[j].num,stu[j+1].num); strcpy(stu[j+1].num,t); } return;}voidpaixu_chinese(Studentstud[],intn)/*按語文成績排序*/{inti,j,p,q,r,w;doubley;charx[20],t[10];for(i=0;i<n-1;i++)/*冒泡法排序*/for(j=0;j<n-1-i;j++)if(stu[j].chinese>stu[j+1].chinese){y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q; r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;strcpy(x,stu[j].name); strcpy(stu[j].name,stu[j+1].name); strcpy(stu[j+1].name,x);strcpy(t,stu[j].num);strcpy(stu[j].num,stu[j+1].num); strcpy(stu[j+1].num,t); } return;}voidpaixu_english(Studentstud[],intn)/*按英語成績排序*/{inti,j,p,q,r,w;doubley;charx[20],t[10];for(i=0;i<n-1;i++)/*冒泡法排序*/for(j=0;j<n-1-i;j++)if(stu[j].english>stu[j+1].english){y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q; r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;strcpy(x,stu[j].name); strcpy(stu[j].name,stu[j+1].name); strcpy(stu[j+1].name,x);strcpy(t,stu[j].num);strcpy(stu[j].num,stu[j+1].num); strcpy(stu[j+1].num,t); } return;}voidpaixu_math(Studentstud[],intn)/*按數(shù)學成績排序*/{inti,j,p,q,r,w;doubley;charx[20],t[10];for(i=0;i<n-1;i++)/*冒泡法排序*/for(j=0;j<n-1-i;j++)if(stu[j].math>stu[j+1].math){y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q; r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;strcpy(x,stu[j].name); strcpy(stu[j].name,stu[j+1].name); strcpy(stu[j+1].name,x);strcpy(t,stu[j].num);strcpy(stu[j].num,stu[j+1].num); strcpy(stu[j+1].num,t); } return;}voidpaixu_dianlu(Studentstud[],intn)/*按電路成績排序*/{inti,j,p,q,r,w;doubley;charx[20],t[10];for(i=0;i<n-1;i++)/*冒泡法排序*/for(j=0;j<n-1-i;j++)if(stu[j].dianlu>stu[j+1].dianlu){y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q; r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;strcpy(x,stu[j].name); strcpy(stu[j].name,stu[j+1].name); strcpy(stu[j+1].name,x);strcpy(t,stu[j].num);strcpy(stu[j].num,stu[j+1].num); strcpy(stu[j+1].num,t); } return;}voidtongji(Studentstud[],intn)//按分數(shù)段統(tǒng)計人數(shù){inti,j,a,max,min,k,l,q,p,w;k=0,l=0,p=0,q=0,w=0;printf("你想統(tǒng)計哪科成績:1語文2數(shù)學3英語4電路5平均\n");scanf("%d",&j);printf("input2score:\n");scanf("%d%d",&max,&min);if(max<min) {a=max;max=min;min=a; } if(j==1) { for(i=0;i<99;i++) { if(stu[i].chinese>min&&stu[i].chinese<max)k++; } printf("分數(shù)段的人數(shù)為:%d",k); } elseif(j==2) { for(i=0;i<99;i++) { if(stu[i].math>min&&stu[i].math<max)l++; } printf("分數(shù)段的人數(shù)為:%d",l); } elseif(j==3) { for(i=0;i<99;i++) { if(stu[i].english>min&&stu[i].english<max)p++; } printf("分數(shù)段的人數(shù)為:%d",p); }elseif(j==4) { for(i=0;i<99;i++) { if(stu[i].dianlu>min&&stu[i].dianlu<max) w++; } printf("分數(shù)段的人數(shù)為:%d",w); } elseif(j==5) { for(i=0;i<99;i++) { if(stu[i].aver>min&&stu[i].aver<max)q++; } printf("分數(shù)段的人數(shù)為:%d",q); }return;}intwenjian2(Studentstud[],intn)/*從文件中讀入數(shù)據(jù)*/{inti=0,num;FILE*fp;/*定義文件指針*/charfilename[20];/*定義文件名*/printf("\t\t\tInputthefilename:");scanf("\t\t\t%s",filename);/*輸入文件名*/if((fp=fopen(filename,"rb"))==NULL)/*打開文件*/{printf("\t\t\tcann'topenthefile\n");/*打開失敗信息*/printf("\t\t\t");system("pause");return(n);}fscanf(fp,"%d",&num);/*讀入總記錄量*/while(i<num)/*循環(huán)讀入數(shù)據(jù)*/{fscanf(fp,"%s%s%d%d%d%d%lf\n",stu[n+i].num,stu[n+i].name,&stu[n+i].chinese,&stu[n+i].math,&stu[n+i].english,&stu[n+i].dianlu,&stu[n+i].aver);i++;}n+=num;fclose(fp);/*關(guān)閉文件*/printf("\t\t\tSuccessed!\n");printf("\t\t\t");system("pause");return(n);}voidwenjian1(Studentstud[],intn)/*將所有記錄寫入文件*/{inti=0;FILE*fp;/*定義文件指針*/charfilename[20];/*定義文件名*/printf("Inputthefilename:");/*輸入文件名*/scanf("%s",filename);if((fp=fopen(filename,"w"))==NULL)/*打開文件*/{printf("cann'topenthefile\n");return;}fprintf(fp,"%d\n",n);/*循環(huán)寫入數(shù)據(jù)*/while(i<n){fprintf(fp,"%s%s%d%d%d%d%lf\n",stu[i].num,stu[i].name,stu[i].chinese,stu[i].math,stu[i].english,stu[i].dianlu,stu[i].aver);i++;}fclose(fp);/*關(guān)閉文件*/printf("Successed!\n");/*返回成功信息*/}intmenu()/*菜單函數(shù)*/{intc;do{printf("\t\t****學生信息管理系統(tǒng)菜單****\n");printf("\t\t1.編輯\n");printf("\t\t2.顯示\n");printf("\t\t3.查詢\n");printf("\t\t4.排序\n");printf("\t\t5.統(tǒng)計\n");printf("\t\t6.文件\n");printf("\t\t0.退出\n");printf("************************************************************\n");printf("\t\t\t請選擇(0-6):");scanf("%d",&c);}while(c<0||c>6);return(c-0);/*返回選擇*/}intbianji(){printf("\t\t1.錄入\n");printf("\t\t2.修改\n");printf("\t\t3.刪除\n");printf("\t\t按其它數(shù)字鍵退出\n");inti;scanf("%d",&i);returni;}intchaxun(){printf("\t\t1.按姓名查詢\n");printf("\t\t2.按平均成績查詢\n");printf("\t\t按其它數(shù)字鍵退出\n");inti;scanf("%d",&i);returni;}intpaixu(){printf("\t\t1.按學號\n");printf("\t\t2.按語文成績\n");printf("\t\t3.按數(shù)學成績\n");printf("\t\t4.按英語成績\n");printf("\t\t5.按電路成績\n"); printf("\t\t6.按平均成績\n");printf("\t\t按其它數(shù)字鍵退出\n");inti;scanf("%d",&i);returni;}intwenjian(){printf("\t\t1.從文件中讀入數(shù)據(jù)\n");printf("\t\t2.將
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度互聯(lián)網(wǎng)企業(yè)股權(quán)收購與整合協(xié)議
- 二零二五年度農(nóng)業(yè)科技企業(yè)員工借調(diào)與種植技術(shù)合同
- 二零二五年度智能硬件委托擔保服務(wù)協(xié)議
- 2025年度高空作業(yè)安全協(xié)議承諾書與高空作業(yè)設(shè)備檢測維修合同
- 2025年度智慧城市保安員聘用合同范本
- 2025年度高校學生社會實踐基地實習服務(wù)合同
- 2025年普洱貨運從業(yè)資格證考些什么內(nèi)容
- 2025年福建貨運從業(yè)資格證考試試題
- 2025年沈陽貨運從業(yè)資格證考試題答案大全及解析
- 2025年黃山貨運從業(yè)資格考題
- 公務(wù)員面試真題之材料題有解析有材料
- 矛盾論實踐論導(dǎo)讀
- 危重癥護理小組成員及職責
- 冠心病患者運動恐懼的現(xiàn)狀及影響因素分析
- 全國2018年10月自考00043經(jīng)濟法概論(財經(jīng)類)試題及答案
- 2019年10月自學考試00040法學概論試題及答案
- 《又見平遙》課件
- 噴涂設(shè)備點檢表
- GB/T 2831-2009光學零件的面形偏差
- 廣東省佛山市《綜合基礎(chǔ)知識》事業(yè)單位國考真題
- 第9課《魚我所欲也》課件(30張PPT) 部編版語文九年級下冊
評論
0/150
提交評論