學(xué)生成績管理系統(tǒng)C語言-課程設(shè)計_第1頁
學(xué)生成績管理系統(tǒng)C語言-課程設(shè)計_第2頁
學(xué)生成績管理系統(tǒng)C語言-課程設(shè)計_第3頁
學(xué)生成績管理系統(tǒng)C語言-課程設(shè)計_第4頁
學(xué)生成績管理系統(tǒng)C語言-課程設(shè)計_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

PAGE武漢長江工商學(xué)院計算機技術(shù)系項目名稱:學(xué)生成績管理系統(tǒng)學(xué)生姓名:學(xué)號:班級:指導(dǎo)教師:2013年6月18日

目錄TOC\o"1-2"\h\z\u1實驗?zāi)康暮鸵饬x 11.1目的 11.2意義 12系統(tǒng)功能描述及設(shè)計 23系統(tǒng)存儲結(jié)構(gòu)設(shè)計與描述 44系統(tǒng)功能實現(xiàn)及算法描述 74.1學(xué)生信息的錄入 74.2學(xué)生信息的瀏覽 84.3學(xué)生信息查詢 94.4學(xué)生信息排序 104.5對學(xué)生信息進行刪除 114.6對學(xué)生信息進行修改 124.7對學(xué)生信息進行添加 134.8對學(xué)生成績進行統(tǒng)計 145系統(tǒng)性能測試 155.1錄入學(xué)生信息功能測試 155.2瀏覽功能測試 155.3查詢學(xué)生信息 165.4學(xué)生成績排序 175.5實現(xiàn)對學(xué)生信息的刪除 185.6實現(xiàn)對學(xué)生信息的修改 195.7實現(xiàn)對學(xué)生信息的添加 205.8實現(xiàn)對學(xué)生信息的統(tǒng)計 206設(shè)計小結(jié) 21致謝 22參考文獻 23源代碼清單: 25武漢長江工商學(xué)院計算機科學(xué)與技術(shù)系PAGE461實驗?zāi)康暮鸵饬x1.1目的本課程設(shè)計的目的就是要通過一次集中的強化訓(xùn)練,使學(xué)生能及時鞏固已學(xué)的知識,補充未學(xué)的但又必要的內(nèi)容。進行課程設(shè)計目的在于加深對程序設(shè)計基礎(chǔ)理論和基本知識的理解,促進理論與實踐的結(jié)合,進一步提高程序設(shè)計能力。具體目的如下:使學(xué)生更深入地理解和掌握該課程中的有關(guān)基本概念,程序設(shè)計思想和方法。培養(yǎng)學(xué)生綜合運用所學(xué)知識獨立完成課程設(shè)計的能力。培養(yǎng)學(xué)生勇于探索、嚴謹推理、實事求是、有錯必改、用實踐來檢驗理論,全方位考慮問題等科學(xué)技術(shù)人員應(yīng)具備的素質(zhì)。提高學(xué)生對工作認真負責、一絲不茍,對同學(xué)團結(jié)友愛,協(xié)作攻關(guān)的基本素質(zhì)。培養(yǎng)學(xué)生從資料文獻、科學(xué)實驗中獲得知識的能力,提高學(xué)生從別人經(jīng)驗中找到解決問題的新途徑的悟性,出不培養(yǎng)工程意識和創(chuàng)新能力。對學(xué)生掌握知識的深度、運用理論去處理問題的能力、實驗?zāi)芰?、課程設(shè)計能力、書面及口頭表達能力進行考核。1.2意義隨著學(xué)校規(guī)模迅速擴大,學(xué)生管理工作信息量急劇增加,信息變化幅度大,依靠傳統(tǒng)的手工管理手段顯然已不能適應(yīng)新時期高校大學(xué)生的管理工作,無法完成大量的信息分析和處理。同時,隨著學(xué)校管理體制改革的深化,學(xué)校有關(guān)職能部門如何全面、準確、及時地了解和掌握學(xué)生的信息,建立科學(xué)公正的學(xué)生個體和院系學(xué)生工作評價體系,已經(jīng)成為新時期高校學(xué)生管理工作面臨的一個新課題。為此,建設(shè)一套切實可行的學(xué)生工作管理系統(tǒng),結(jié)合學(xué)校實際,充分利用校園網(wǎng)的資源優(yōu)勢,不僅使信息渠道更為暢通,而且可以資源共享。既為全面了解學(xué)生的綜合信息提供了方便,使得查詢統(tǒng)計更為準確便捷,又可以用電子檔案逐步代替或輔佐傳統(tǒng)的紙質(zhì)檔案,實現(xiàn)管理手段現(xiàn)代化。該系統(tǒng)提供學(xué)生的基本狀況、學(xué)習(xí)成績、在校表現(xiàn)和獎懲等全方位的信息資料。在此基礎(chǔ)上,構(gòu)建學(xué)生考核、測評標準,建立評價指標體系,對學(xué)生進行科學(xué)測評,減少傳統(tǒng)測評中的人為干擾,使對學(xué)生的評價更為客觀、全面和科學(xué)。提高學(xué)生工作辦公自動化程度,建立學(xué)生信息庫,把學(xué)生工作者從日常繁重重復(fù)的勞動中解放出來,減輕工作強度,提高工作效率。

2系統(tǒng)功能描述及設(shè)計本課程設(shè)計要求的幾個功能在程序里面都能實現(xiàn),有學(xué)生信息的輸入、瀏覽、排序、統(tǒng)計、修改、刪除、查詢、添加,退出等。根據(jù)用戶的需求來執(zhí)行程序。程序總體結(jié)構(gòu)如圖(2-1)所示:學(xué)生信息輸入負責將學(xué)生的信息存儲到對應(yīng)的文本文件中,對學(xué)生的信息排序就包括按總分排序和按計算機成績排序。統(tǒng)計也包括對計算機成績的統(tǒng)計和對數(shù)學(xué)和英語成績的統(tǒng)計。刪除就負責對學(xué)生信息的刪除。查詢就可實現(xiàn)對學(xué)號的查詢。進入主菜單由函數(shù)print();實現(xiàn)。里面有九個功能供其選擇菜單一:信息錄入功能,輸入選項一進入該功能,根據(jù)系統(tǒng)提示輸入相應(yīng)的數(shù)據(jù)。菜單二:為學(xué)生信息瀏覽功能,當用戶輸入二選項時,系統(tǒng)自動用戶輸入的數(shù)據(jù)調(diào)入內(nèi)存在輸出到顯示器上。供用戶瀏覽。菜單三:為學(xué)生信息查詢功能,當用戶選擇第三個功能后是按學(xué)號查詢。菜單四:對學(xué)生成績進行排序,當用戶進入該功能后有兩個選項供其選擇,分別是:按計算機和總分排序。菜單五:學(xué)生信息的刪除,一般刪除學(xué)生信息的時候是非常小心的,故當用戶選擇該功能后為了防止誤刪,只有按學(xué)號查找出要刪除信息的同學(xué)的信息進行刪除操作,操作成功后,系統(tǒng)會給出相應(yīng)的提示說明操作成功。菜單六:學(xué)生信息的修改,用戶在主菜單里里面可選擇此功能,進入功能后,會將所有的同學(xué)的信息輸出供用戶參考,當用戶輸入要查找的同學(xué)的學(xué)好后可進入選擇界面,提示用戶是要修改的項目,當用戶選擇完畢后,直接輸入新的數(shù)據(jù)即可,最后將數(shù)據(jù)保存到文件中。菜單五:學(xué)生信息的添加,用戶可以根據(jù)自己的需要來選擇添加學(xué)生的信息,此功能會調(diào)用學(xué)生信息的輸入來完成,事后給出提示添加成功!菜單八:學(xué)生信息的統(tǒng)計,此選項可以根據(jù)用戶的不同需要進行統(tǒng)計,可按計算機成績統(tǒng)計,按英語分數(shù)排序和數(shù)學(xué)分數(shù)統(tǒng)計。統(tǒng)計的項目包括:平均分、最高分、最低分、及格率和六十分以下的,還有各個分數(shù)段的人數(shù)。菜單九:用戶選擇此操作后可直接退出軟件。

3系統(tǒng)存儲結(jié)構(gòu)設(shè)計與描述

structstudent

{

longid;

charname[10];

charsex[10];

floatcomputer,math,english;

floattotal;

}stu[1000]此存儲結(jié)構(gòu)包括學(xué)生的姓名、學(xué)生的性別、學(xué)生的學(xué)號及學(xué)生給門功課的成績,并且記錄下該學(xué)生的總分。這些都用結(jié)構(gòu)體變量數(shù)組來存儲。

1.此外還有文件中數(shù)據(jù)的讀取,此功能用load()函數(shù)來實現(xiàn);

voidload()

{

FILE*fp;

inti;

if((fp=fopen("data.txt","rb"))==NULL)

{

printf("Cannotopenthefile!\n");

exit(0);

}

n=fgetc(fp);

for(i=0;i<n;i++)

{

if(fread(&stu[i],sizeof(structstudent),1,fp)!=1)

{

printf("Cannotopenthefile!\n");

exit(0);

}

}

fclose(fp);

}此函數(shù)會將文件中的數(shù)據(jù)讀取到內(nèi)存中,并將有多少個學(xué)生多為函數(shù)的返回值;

此外還用到save()函數(shù)對數(shù)據(jù)的存儲。

2.voidsave()

{

FILE*fp;

inti;

if((fp=fopen("data.txt","wb"))==NULL)

{

printf("Cannotopenthefile!\n");

exit(0);

}

fputc(n,fp);

for(i=0;i<n;i++)

{

if(fwrite(&stu[i],sizeof(structstudent),1,fp)!=1)

{

printf("Cannotopenthefile!\n");

exit(0);

}

}

fclose(fp);

}

3.文件中數(shù)據(jù)的連續(xù)輸出,此功能用and()函數(shù)來實現(xiàn)

voidand()

{

FILE*fp;

inti;

if((fp=fopen("data.txt","ab"))==NULL)

{

printf("Cannotopenthefile!\n");

exit(0);

}

fputc(n,fp);

for(i=0;i<n;i++)

if(fwrite(&stu[i],sizeof(structstudent),1,fp)!=1)

{

printf("Cannotopenthefile!\n");

exit(0);

}

}

4.每執(zhí)行完一個函數(shù)后,都要返回主菜單,這時要用back()函數(shù)來實現(xiàn),

voidback()//返回

{

printf("是否返回主菜單(yes或no)?");

gets(str);

do

{

scanf("%s",str);

if(strcmp(str1,str)==0)

{

system("cls");

main();

}

elseif(strcmp(str2,str)==0)

{

printf("請按任意鍵退出!\n");

exit(0);

}

else

printf("您輸入的數(shù)據(jù)不正確!請重新輸入:");

}while(1);

}

5.進入功能選項,需用select()函數(shù);

voidselect()//選擇

{

inta;

scanf("%d",&a);

switch(a)

{

case1:write();break;

case2:scan();break;

case3:numrefer();break;

case4:sort();break;

case5:remove();break;

case6:revamp();break;

case7:add();break;

case8:statistics();break;

case9:exit(0);break;

default:printf("非法操作!\n");back();break;

}

}4系統(tǒng)功能實現(xiàn)及算法描述4.1學(xué)生信息的錄入首先打開文件,用一個循環(huán)實現(xiàn)對學(xué)生信息的循環(huán)錄入,再循環(huán)內(nèi)部實現(xiàn)對單個學(xué)生信息的錄入,然后調(diào)用save();函數(shù)將內(nèi)存中的信息存入文件;流程圖4-1如下:圖4-1信息錄入函數(shù)流程圖4.2學(xué)生信息的瀏覽首先用只讀的方式打開文件,調(diào)用load();函數(shù)將文件中的信息讀入內(nèi)存,再將內(nèi)存中的信息逐個輸出到顯示器上。返回主菜單;流程圖4-2如下:圖4-2信息瀏覽函數(shù)4.3學(xué)生信息查詢首先用只讀的方式打開文件,調(diào)用load();函數(shù)將文件中的信息讀入內(nèi)存,按照學(xué)號查詢,當兩個學(xué)號相等時就輸出,否則就輸出“沒有照此同學(xué)的信息”流程圖4-3如下:圖4-3查詢函數(shù)流程圖4.4學(xué)生信息排序首先用只讀的方式打開文件,調(diào)用load();函數(shù)將文件中的信息讀入內(nèi)存,由用戶選擇要排序的項目(1.為對學(xué)號排序。2.為對計算機成績的排序。)最后將排好序的信息按要求一一輸出;流程圖4-4如下:圖4-4排序函數(shù)流程圖4.5對學(xué)生信息進行刪除首先用只讀的方式打開文件,調(diào)用load();函數(shù)將文件中的信息讀入內(nèi)存,由用戶輸入要刪除同學(xué)的學(xué)號,得到此同學(xué)的信息后,將此同學(xué)的信息輸出,在進行一次確認“確實要刪除此同學(xué)的信息嗎(Yes/No)”若用戶選擇yes。則進行刪除操作。并最終提示“信息刪除成功”,接著詢問“還需要刪除其他同學(xué)的信息嗎?(Yes/No)”,若選擇“y”,則重復(fù)刪除操作。若為“no”,則退出,流程圖4-5如下所示:圖4-5信息刪除函數(shù)流程圖4.6對學(xué)生信息進行修改首先用只讀的方式打開文件,調(diào)用load();函數(shù)將文件中的信息讀入內(nèi)存,由用戶輸入要修改的學(xué)生學(xué)號,系統(tǒng)找到對應(yīng)的學(xué)生信息后輸出:然后由用戶選擇要修改的項目(1:修改學(xué)號;2:修改姓名;3:修改性別;4:修改計算機成績;5修改英語成績;6:修改數(shù)學(xué)成績)再由用戶輸入新的值將來的值覆蓋掉,將修改后的數(shù)據(jù)寫入文件;流程圖4-6如下:圖4-6修改函數(shù)流程圖4.7對學(xué)生信息進行添加先進入選項,后直接用and()函數(shù),提示用戶想輸入多少人,依次輸入學(xué)號,姓名,性別,計算機分數(shù),英語分數(shù),數(shù)學(xué)分數(shù);流程圖4-7如下:圖4-7添加函數(shù)流程圖4.8對學(xué)生成績進行統(tǒng)計首先用只讀的方式打開文件,調(diào)用load();函數(shù)將文件中的信息讀入內(nèi)存,由用戶選擇需要統(tǒng)計的項目(1:對計算機成績進行統(tǒng)計2:對英語成績進行統(tǒng)計3:對數(shù)學(xué)成績進行統(tǒng)計),流程圖4-8、4-9如下:圖4-8統(tǒng)計函數(shù)流程圖

5系統(tǒng)性能測試5.1錄入學(xué)生信息功能測試

用戶按要求輸入學(xué)生的人數(shù),輸完后可根據(jù)提示分別輸出他們的姓名,性別,計算機分數(shù),數(shù)學(xué)分數(shù),英語分數(shù),并且用戶決定是否返回主菜單如圖5-1

圖5-1信息錄入功能測試

5.2瀏覽功能測試

用戶選二后進入,體統(tǒng)會將文件中的學(xué)生的信息讀入內(nèi)存,再將內(nèi)存中的信息再輸出到顯示器上如圖5-2

圖5-2瀏覽功能測學(xué)生信息一目了然;

5.3查詢學(xué)生信息

選項三是查詢學(xué)生信息功能,系統(tǒng)會根據(jù)用戶輸入的學(xué)號,再和內(nèi)存中的數(shù)據(jù)一一比較直到找到符合要求的學(xué)生信息,按學(xué)號查詢測試如圖5-3

圖5-3查詢信息測試

根據(jù)學(xué)號查找精確,速度快,可靠性高;

5.4學(xué)生成績排序

進入對學(xué)生成績排序的界面后,用戶可以根據(jù)自己的需要選擇相應(yīng)的功能:對計算機成績排序,對總分排序。當用戶選擇了相應(yīng)的功能后,可根據(jù)需要選擇從高到低排序。如圖5-5對計算機進行降序排列功能測試:

圖5-5成績排序測試

可以再次循環(huán)排序,功能多;

如圖5-6對總分成績進行降序排列:

圖5-6成績降序測試

5.5實現(xiàn)對學(xué)生信息的刪除

如果用戶需要對學(xué)生信息進行刪除的話,可以按5,然后根據(jù)系統(tǒng)的提示輸入需要刪除的學(xué)生的信息,當系統(tǒng)找出要刪除同學(xué)的信息后,用戶按確定,此時,學(xué)生的信息就被徹底刪除了。學(xué)生信息刪除功能測試如圖5-7:

圖5-7信息刪除測試

學(xué)生信息的刪除后的圖片

5.6實現(xiàn)對學(xué)生信息的修改

輸入要修改的信息的學(xué)生的學(xué)號,系統(tǒng)會自動找出,然后用戶根據(jù)需要選擇需要修改的項目,可以修改姓名,性別,計算機分數(shù),英語分數(shù),數(shù)學(xué)分數(shù),選擇后輸入新數(shù)據(jù)就行了。信息修改功能測試如圖5-8:

圖5-8信息修改測試

修改后的信息如圖5-9:

圖5-9修改后測試

5.7實現(xiàn)對學(xué)生信息的添加

當選擇了7后,會進入學(xué)生信息添加界面,此時用戶根據(jù)學(xué)生的信息錄入系統(tǒng)就行了。完成后系統(tǒng)會自動將新的數(shù)據(jù)保存。學(xué)生信息添加功能測試如圖5-10:

圖5-10信息添加測試

能實現(xiàn)對學(xué)生信息的循環(huán)添加,并且會有相應(yīng)的提示;

5.8實現(xiàn)對學(xué)生信息的統(tǒng)計

統(tǒng)計可是對不同科目進行統(tǒng)計,統(tǒng)計的項目計算機,英語,數(shù)學(xué)中的一門的最高分、最低分、平均分以及各分數(shù)段之間人數(shù)的比例,返回后還可以繼續(xù)對其他科目進行統(tǒng)計。如圖5-8:

6設(shè)計小結(jié)經(jīng)過一周的課程設(shè)計,我學(xué)到了很多東西:(1)定義全局變量N后如果后面的函數(shù)中需要使用全局變量N的時候不能再定義局部變量N了,要不然局部變量N與全局變量N的性質(zhì)不同?。。。?)培養(yǎng)了我選用參考書,查閱手冊及文獻資料的能力。培養(yǎng)獨立思考,深入研究,分析問題、解決問題的能力。(3)過實際編譯系統(tǒng)的分析設(shè)計、編程調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計方法。(4)用#include“stdlib.h”做頭文件,用exit可以結(jié)束整個程序?。?!

致謝課程設(shè)計是把我們所學(xué)的理論知識進行系統(tǒng)的總結(jié)并應(yīng)用于實踐的良好機會,有利于加強我們用知識理論來分析實際問題的能力,進而加強了我們對知識認識的實踐度,鞏固了我們的理論知識,深化了對知識的認識,并為走向社會打下一個良好的基礎(chǔ)。在這次課程設(shè)計中我遇到許多問題和麻煩,得到了老師的幫助和指導(dǎo),才能夠使得這次課程設(shè)計順利的進行下去,另外,在程序調(diào)試過程中,也得到很多同學(xué)的幫助,給我及時指出錯誤,提出許多寶貴意見。在此對老師和同學(xué)們表示感謝!參考文獻[1]譚浩強,C語言課程設(shè)計(第三版),北京:清華大學(xué)出版社,1996.5[2]楊路明,從語言程序設(shè)計教程(第二版),北京:郵電大學(xué)出版社,2009.7[3]譚浩強,C語言課程設(shè)計(第二版),北京:清華大學(xué)出版社,1991.5[4]譚浩強,C語言程序設(shè)計題解與上機指導(dǎo),北京:清華大學(xué)出版社,1991.3

源代碼清單:#include"stdio.h"#include"stdlib.h"#include"time.h"#include"string.h"voidselect();//選擇voidwrite();//錄入voidscan();//瀏覽voidnumrefer();//查詢voidsort();//分類voidremove();//刪除voidrevamp();//修改voidadd();//添加voidstatistics();//統(tǒng)計voidmenu();//菜單voidmain();//主函數(shù)voidsave();//保存voidload();//導(dǎo)出voidback();//返回voidand();//繼續(xù)intn;charstr[10];charstr1[10]="yes",str2[10]="no";structstudent{ longid; charname[10]; charsex[10]; floatcomputer,math,english; floattotal;}stu[1000],temp;voidmain()//主函數(shù){ menu(); printf("請輸入您的選擇:"); select();}voidsave()//保存{ FILE*fp; inti; if((fp=fopen("data.txt","wb"))==NULL) { printf("Cannotopenthefile!\n"); exit(0); } fputc(n,fp); for(i=0;i<n;i++) { if(fwrite(&stu[i],sizeof(structstudent),1,fp)!=1) { printf("Cannotopenthefile!\n"); exit(0); } } fclose(fp);}voidload()//導(dǎo)出{ FILE*fp; inti; if((fp=fopen("data.txt","rb"))==NULL) { printf("Cannotopenthefile!\n"); exit(0); } n=fgetc(fp); for(i=0;i<n;i++) { if(fread(&stu[i],sizeof(structstudent),1,fp)!=1) { printf("Cannotopenthefile!\n"); exit(0); } } fclose(fp);}voidand()//繼續(xù){ FILE*fp;inti; if((fp=fopen("data.txt","ab"))==NULL) { printf("Cannotopenthefile!\n"); exit(0); }fputc(n,fp);for(i=0;i<n;i++) if(fwrite(&stu[i],sizeof(structstudent),1,fp)!=1) { printf("Cannotopenthefile!\n"); exit(0); }}voidback()//返回{ printf("是否返回主菜單(yes或no)?"); gets(str); do { scanf("%s",str); if(strcmp(str1,str)==0) { system("cls"); main(); } elseif(strcmp(str2,str)==0) { printf("請按任意鍵退出!\n"); exit(0); } else printf("您輸入的數(shù)據(jù)不正確!請重新輸入:"); }while(1);}voidwrite()//錄入{ inti,num,j; charstr3[5]="girl"; charstr4[5]="boy"; printf("請輸入您要錄入多少個同學(xué)的信息:"); scanf("%d",&num); for(n=0,i=0;i<num;i++) { n++; printf("該同學(xué)的學(xué)號被系統(tǒng)自動定為:"); srand(time(NULL)); for(j=0;j<1000;j++){ stu[i].id=rand()%1000+2011000; if(stu[j].id!=stu[i].id) break; }printf("%ld\n",stu[i].id); printf("請輸入學(xué)生姓名:"); scanf("%s",stu[i].name); printf("請輸入學(xué)生性別(girl或boy):"); gets(stu[i].sex); do { scanf("%s",stu[i].sex); if(strcmp(stu[i].sex,str3)==0||strcmp(stu[i].sex,str4)==0) break; else printf("您輸入的數(shù)據(jù)不合法!請重新輸入:"); }while(1); printf("計算機分數(shù)[0-100]:"); scanf("%f",&stu[i].computer); printf("數(shù)學(xué)分數(shù)[0-100]:"); scanf("%f",&stu[i].math); printf("英語分數(shù)[0-100]:"); scanf("%f",&stu[i].english); printf("總分:"); stu[i].total=stu[i].computer+stu[i].math+stu[i].english; printf("%.2f\n",stu[i].total); } save(); back();}voidmenu()//菜單{printf("********************************************************************************");printf("學(xué)生成績管理系統(tǒng)\n");printf("********************************************************************************");printf("1.學(xué)生信息的錄入2.學(xué)生信息的瀏覽\n");printf("3.學(xué)生信息的查詢4.學(xué)生信息的排序\n");printf("5.學(xué)生成績刪除6學(xué)生成績修改\n");printf("7.學(xué)生成績添加8.學(xué)生信息的統(tǒng)計\n");printf("9.退出系統(tǒng)\n");printf("********************************************************************************"); } voidselect()//選擇{ inta; scanf("%d",&a); switch(a) { case1:write();break; case2:scan();break; case3:numrefer();break; case4:sort();break; case5:remove();break; case6:revamp();break; case7:add();break; case8:statistics();break; case9:exit(0);break; default:printf("非法操作!\n");back();break; }}voidscan()//瀏覽{ load(); inti; if(n==0) { printf("沒有學(xué)生信息!"); printf("是否返回主菜單(yes或no)?"); gets(str); do { scanf("%s",str); if(strcmp(str1,str)==0) { system("cls"); main(); } elseif(strcmp(str2,str)==0) { printf("請按任意鍵退出!\n"); exit(0); } else printf("您輸入的數(shù)據(jù)不正確!請重新輸入:"); }while(1); } printf("學(xué)號\t姓名性別\t計算機\t數(shù)學(xué)英語總分\n"); for(i=0;i<n;i++) printf("%ld%8s%7s%7.2f%9.2f%8.2f%9.2f\n",stu[i].id,stu[i].name,stu[i].sex,stu[i].computer,stu[i].math,stu[i].english,stu[i].total); back();}voidnumrefer()//學(xué)號查詢{ load(); longID,i; printf("請輸入您要查詢該學(xué)生的學(xué)號:"); scanf("%ld",&ID); for(i=0;i<n;i++) { if(stu[i].id==ID) { printf("學(xué)號\t姓名性別\t計算機\t數(shù)學(xué)英語總分\n"); printf("%ld%8s%7s%7.2f%9.2f%8.2f%9.2f\n",stu[i].id,stu[i].name,stu[i].sex,stu[i].computer,stu[i].math,stu[i].english,stu[i].total); break; } if(i==n-1) printf("沒有該同學(xué)信息!\n"); } back();}voidsort()//排序{ load(); inti,j,a; printf("1.按照總分從大到小排序\n"); printf("2.按照計算機分數(shù)從大到小排序\n"); printf("請輸入您要按照哪種方式排序:"); scanf("%d",&a); if(a==1) { for(i=0;i<n-1;i++) for(j=0;j<n-1-i;j++) if(stu[j].total<stu[j+1].total) { temp=stu[j]; stu[j]=stu[j+1]; stu[j+1]=temp; } printf("學(xué)號\t姓名性別\t計算機\t數(shù)學(xué)英語總分\n"); for(i=0;i<n;i++) printf("%ld%8s%7s%7.2f%9.2f%8.2f%9.2f\n",stu[i].id,stu[i].name,stu[i].sex,stu[i].computer,stu[i].math,stu[i].english,stu[i].total); } elseif(a==2) { for(i=0;i<n-1;i++) for(j=0;j<n-1-i;j++) if(stu[j].computer<stu[j+1].computer) { temp=stu[j]; stu[j]=stu[j+1]; stu[j+1]=temp; } printf("學(xué)號\t姓名性別\t計算機\t數(shù)學(xué)英語總分\n"); for(i=0;i<n;i++) printf("%ld%8s%7s%7.2f%9.2f%8.2f%9.2f\n",stu[i].id,stu[i].name,stu[i].sex,stu[i].computer,stu[i].math,stu[i].english,stu[i].total); }}voidremove()//刪除{ load(); longID,i,j; printf("請輸入您要刪除的學(xué)生的學(xué)號:"); scanf("%ld",&ID); for(i=0;i<n;i++) { if(stu[i].id==ID) { printf("學(xué)號\t姓名性別\t計算機\t數(shù)學(xué)英語總分\n"); printf("%ld%8s%7s%7.2f%9.2f%8.2f%9.2f\n",stu[i].id,stu[i].name,stu[i].sex,stu[i].computer,stu[i].math,stu[i].english,stu[i].total); break; } if(i==n-1) { printf("沒有該同學(xué)信息!\n"); back(); } } printf("您確定要刪除該同學(xué)的信息(yes或no)???\n"); gets(str); do { scanf("%s",str); if(strcmp(str1,str)==0) { for(j=i;j<n;j++) stu[j]=stu[j+1]; printf("該同學(xué)的信息被刪除了!\n"); n--; save(); break; } elseif(strcmp(str2,str)==0) exit(0); else printf("您輸入的數(shù)據(jù)不正確!請重新輸入:"); }while(1); back();}voidrevamp()//修改{ load(); longID,i,a; charstr3[5]="girl"; charstr4[5]="boy"; printf("請輸入您要修改的學(xué)生的學(xué)號:"); scanf("%ld",&ID); for(i=0;i<n;i++) { if(stu[i].id==ID) { printf("學(xué)號\t姓名性別\t計算機\t數(shù)學(xué)英語總分\n"); printf("%ld%8s%7s%7.2f%9.2f%8.2f%9.2f\n",stu[i].id,stu[i].name,stu[i].sex,stu[i].computer,stu[i].math,stu[i].english,stu[i].total); break; } if(i==n-1) { printf("沒有該同學(xué)信息!\n"); back(); } } printf("1.修改姓名\n"); printf("2.修改性別\n"); printf("3.修改計算機分數(shù)\n"); printf("4.修改數(shù)學(xué)分數(shù)\n"); printf("5.修改英語分數(shù)\n"); do { printf("請輸入您要修改的位置:"); scanf("%ld",&a); if(a==1) { printf("請重新輸入姓名:"); scanf("%s",stu[i].name); printf("\r"); } elseif(a==2) { printf("請重新輸入性別(girl或boy):"); scanf("%s",stu[i].sex); do { printf("\r"); if(strcmp(stu[i].sex,str3)==0||strcmp(stu[i].sex,str4)==0) break; else printf("您輸入的數(shù)據(jù)不合法!請重新輸入:"); }while(1); } elseif(a==3) { printf("請重新輸入計算機分數(shù):"); scanf("%f",&stu[i].computer); } elseif(a==4) { printf("請重新輸入數(shù)學(xué)分數(shù):"); scanf("%f",&stu[i].math); } elseif(a==5) { printf("請重新輸入英語分數(shù):"); scanf("%f",&stu[i].english); } else break; stu[i].total=stu[i].computer+stu[i].math+stu[i].english; printf("修改成功!\n"); save(); printf("是否繼續(xù)修改(yes或no)???"); gets(str); scanf("%s",str); if(strcmp(str1,str)==0) continue; elseif(strcmp(str2,str)==0) break; else printf("您輸入的數(shù)據(jù)不正確!請重新輸入:"); }while(1); back();}voidadd()//添加{ inti,j,a,k=0; printf("請輸入您要添加多少個同學(xué)的信息:"); scanf("%d",&a); load(); and(); charstr3[5]="girl"; charstr4[5]="boy"; for(i=n;i<n+a;i++) { printf("該同學(xué)的學(xué)號被系統(tǒng)自動定為:"); srand(time(NULL)); for(j=0;j<1000;j++) { stu[i].id=rand()%1000+2011000; if(stu[j].id!=stu[i].id) break; } printf("%ld\n",stu[i].id); printf("請輸入學(xué)生姓名:"); scanf("%s",stu[i].name); printf("請輸入學(xué)生性別(girl或boy):"); gets(stu[i].sex); do { scanf("%s",stu[i].sex); if(strcmp(stu[i].sex,str3)==0||strcmp(stu[i].sex,str4)==0) break; else printf("您輸入的數(shù)據(jù)不合法!請重新輸入:"); }while(1); printf("計算機分數(shù)[0-100]:"); scanf("%f",&stu[i].computer); printf("數(shù)學(xué)分數(shù)[0-100]:"); scanf("%f",&stu[i].math); printf("英語分數(shù)[0-100]:"); scanf("%f",&stu[i].english); stu[i].total=stu[i].computer+stu[i].math+stu[i].english; n++; printf("添加成功!\n"); save(); k++; if(k==a) break; else continue; } back();}voidstatistics()//統(tǒng)計{ load(); inti,g,b=0,c=0,d=0,e=0,f=0; floatmax,min,sum=0,a=0; floatpassrate,ave; max=min=stu[0].computer; printf("1.按照學(xué)生計算機分數(shù)進行統(tǒng)計\n"); printf("2.按照學(xué)生英語分數(shù)進行統(tǒng)計\n"); printf("3.按照學(xué)生數(shù)學(xué)分數(shù)進行統(tǒng)計\n"); printf("請輸入您要按照哪種要求進行統(tǒng)計:"); scanf("%d",&g); if(g==1) { for(i=0;i<n;i++) { if(stu[i].computer>max) max=stu[i].computer; if(stu[i].computer<min) min=stu[i].computer; if(stu[i].computer>=60) a++; if(stu[i].computer>=0&&stu[i].computer<=59) b++; if(stu[i].computer>=60&&stu[i].computer<=69) c++; if(stu[i].computer>=70&&stu[i].computer<=79) d++; if(stu[i].computer>=80&&stu[i].computer<=89) e++; if(stu[i].computer>=90&&stu[i].computer<=100) f++; sum+=stu[i].computer; } ave=sum/n; passrate=a/n; printf("最高分是%.2f\n最低分是%.2f\n平均分是%.2f\n及格率是%.2f\n",max,min,ave,passrate); printf("計算機分數(shù)在[0,59]分數(shù)段的學(xué)生人數(shù)是%d\n",b); printf("計算機分數(shù)在[60,69]分數(shù)段的學(xué)生人數(shù)是%d\n",c); printf("計算機分數(shù)在[70,79]分數(shù)段的學(xué)生人數(shù)是%d\n",d); printf("計算機分數(shù)在[80,89]分數(shù)段的學(xué)生人數(shù)是%d\n",e); printf("計算機分數(shù)在[90,100]分數(shù)段的學(xué)生人數(shù)是%d\n",f); } elseif(g==2) { for(i=0;i<n;i++) { if(stu[i].english>max) max=stu[i].english; if(stu[i].english<min) min=stu[i].english; if(stu[i].english>=60) a++; if(stu[i].english>=0&&stu[i].english<=59) b++; if(stu[i].english>=60&&stu[i].english<=69) c++; if(stu[i].english>=70&&stu[i].english<=79) d++; if(stu[i].english>=80&&stu[i].english<=89) e++; if(stu[i].english>=90&&stu[i].english<=100) f++; sum+=stu[i].english; } ave=sum/n; passrate=a/n; printf("最高分是%.2f\n最低分是%.2f\n平均分是%.2f\n及格率是%.2f\n",max,min,ave,passrate); printf("英語分數(shù)在[0,59]分數(shù)段的學(xué)生人數(shù)是%d\n",b); printf("英語分數(shù)在[60,69]分數(shù)段的學(xué)生人數(shù)是%d\n",c); printf("英語分數(shù)在[70,79]分數(shù)段的學(xué)生人數(shù)是%d\n",d); printf("英語分數(shù)在[80,89]分數(shù)段的學(xué)生人數(shù)是%d\n",e); printf("英語分數(shù)在[90,100]分數(shù)段的學(xué)生人數(shù)是%d\n",f); } elseif(g==3) { for(i=0;i<n;i++) { if(stu[i].math>max) max=stu[i].math; if(stu[i].math<min) min=stu[i].math; if(stu[i].math>=60) a++; if(stu[i].math>=0&&stu[i].math<=59) b++; if(stu[i].math>=60&&stu[i].math<=69) c++; if(stu[i].math>=70&&stu[i].math<=79) d++; if(stu[i].math>=80&&stu[i].math<=89) e++; if(stu[i].math>=90&&stu[i].math<=100) f++; sum+=stu[i].math; } ave=sum/n; passrate=a/n; printf("最高分是%.2f\n最低分是%.2f\n平均分是%.2f\n及格率是%.2f\n",max,min,ave,passrate); printf("數(shù)學(xué)分數(shù)在[0,59]分數(shù)段的學(xué)生人數(shù)是%d\n",b); printf("數(shù)學(xué)分數(shù)在[60,69]分數(shù)段的學(xué)生人數(shù)是%d\n",c); printf("數(shù)學(xué)分數(shù)在[70,79]分數(shù)段的學(xué)生人數(shù)是%d\n",d); printf("數(shù)學(xué)分數(shù)在[80,89]分數(shù)段的學(xué)生人數(shù)是%d\n",e); printf("數(shù)學(xué)分數(shù)在[90,100]分數(shù)段的學(xué)生人數(shù)是%d\n",f); } back(); }

C語言程序設(shè)計課程設(shè)計成績評定項目名稱:成績評定:(百分制)成績等級:指導(dǎo)教師簽字:檢查時間:系部簽章:基于C8051F單片機直流電動機反饋控制系統(tǒng)的設(shè)計與研究基于單片機的嵌入式Web服務(wù)器的研究MOTOROLA單片機MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機溫度控制系統(tǒng)的研制基于MCS-51系列單片機的通用控制模塊的研究基于單片機實現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機控制的二級倒立擺系統(tǒng)的研究基于增強型51系列單片機的TCP/IP協(xié)議棧的實現(xiàn)基于單片機的蓄電池自動監(jiān)測系統(tǒng)基于32位嵌入式單片機系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機的交流伺服電機運動控制系統(tǒng)研究與開發(fā)基于單片機的泵管內(nèi)壁硬度測試儀的研制基于單片機的自動找平控制系統(tǒng)研究基于C8051F040單片機的嵌入式系統(tǒng)開發(fā)基于單片機的液壓動力系統(tǒng)狀態(tài)監(jiān)測儀開發(fā)模糊Smith智能控制方法的研究及其單片機實現(xiàn)一種基于單片機的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機的在線間歇式濁度儀的研制基于單片機的噴油泵試驗臺控制器的研制基于單片機的軟起動器的研究和設(shè)計基于單片機控制的高速快走絲電火花線切割機床短循環(huán)走絲方式研究基于單片機的機電產(chǎn)品控制系統(tǒng)開發(fā)基于PIC單片機的智能手機充電器基于單片機的實時內(nèi)核設(shè)計及其應(yīng)用研究基于單片機的遠程抄表系統(tǒng)的設(shè)計與研究基于單片機的煙氣二氧化硫濃度檢測儀的研制基于微型光譜儀的單片機系統(tǒng)單片機系統(tǒng)軟件構(gòu)件開發(fā)的技術(shù)研究基于單片機的液體點滴速度自動檢測儀的研制基于單片機系統(tǒng)的多功能溫度測量儀的研制基于PIC單片機的電能采集終端的設(shè)計和應(yīng)用基于單片機的光纖光柵解調(diào)儀的研制氣壓式線性摩擦焊機單片機控制系統(tǒng)的研制基于單片機的數(shù)字磁通門傳感器基于單片機的旋轉(zhuǎn)變壓器-數(shù)字轉(zhuǎn)換器的研究基于單片機的光纖Bragg光柵解調(diào)系統(tǒng)的研究單片機控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機的多生理信號檢測儀基于單片機的電機運動控制系統(tǒng)設(shè)計Pico專用單片機核的可測性設(shè)計研究基于MCS-51單片機的熱量計基于雙單片機的智能遙測微型氣象站MCS-51單片機構(gòu)建機器人的實踐研究基于單片機的輪軌力檢測基于單片機的GPS定位儀的研究與實現(xiàn)基于單片機的電液伺服控制系統(tǒng)用于單片機系統(tǒng)的MMC卡文件系統(tǒng)研制基于單片機的時控和計數(shù)系統(tǒng)性能優(yōu)化的研究基于單片機和CPLD的粗光柵位移測量系統(tǒng)研究單片機控制的后備式方波UPS提升高職學(xué)生單片機應(yīng)用能力的探究基于單片機控制的自動低頻減載裝置研究基于單片機控制的水下焊接電源的研究基于單片機的多通道數(shù)據(jù)采集系統(tǒng)基于uPSD3234單片機的氚表面污染測量儀的研制基于單片機的紅外測油儀的研究96系列單片機仿真器研究與設(shè)計基于單片機的單晶金剛石刀具刃磨設(shè)備的數(shù)控改造基于單片機的溫度智能控制系統(tǒng)的設(shè)計與實現(xiàn)基于MSP430單片機的電梯門機控制器的研制基于單片機的氣體測漏儀的研究基于三菱M16C/6N系列單片機的CAN/USB協(xié)議轉(zhuǎn)換器基于單片機和DSP的變壓器油色譜在線監(jiān)測技術(shù)研究基于單片機的膛壁溫度報警系統(tǒng)設(shè)計基于AVR單片機的低壓無功補償控制器的設(shè)計基于單片機船舶電力推進電機監(jiān)測系統(tǒng)基于單片機網(wǎng)絡(luò)的振動信號的采集系統(tǒng)基于單片機的大容量數(shù)據(jù)存儲技術(shù)的應(yīng)用研究基于單片機的疊圖機研究與教學(xué)方法實踐基于單片機嵌入式Web服務(wù)器技術(shù)的研究及實現(xiàn)基于AT89S52單片機的通用數(shù)據(jù)采集系統(tǒng)基于單片機的多道脈沖幅度分析儀研究機器人旋轉(zhuǎn)電弧傳感角焊縫跟蹤單片機控制系統(tǒng)基于單片機的控制系統(tǒng)在PLC虛擬教學(xué)實驗中的應(yīng)用研究基于單片機系統(tǒng)的網(wǎng)絡(luò)通信研究與應(yīng)用HYPER

溫馨提示

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

評論

0/150

提交評論