成績(jī)記錄簿 C語(yǔ)言版_第1頁(yè)
成績(jī)記錄簿 C語(yǔ)言版_第2頁(yè)
成績(jī)記錄簿 C語(yǔ)言版_第3頁(yè)
成績(jī)記錄簿 C語(yǔ)言版_第4頁(yè)
成績(jī)記錄簿 C語(yǔ)言版_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、上海應(yīng)用技術(shù)學(xué)院1310300235 聶震成績(jī)記錄簿上海應(yīng)用技術(shù)學(xué)院課程設(shè)計(jì)20132014學(xué)年第二學(xué)期設(shè)計(jì)題目 成績(jī)記錄簿 院 (系) 工程創(chuàng)新學(xué)院 專 業(yè) 電氣工程及其自動(dòng)化 班 級(jí) 131032Y1 學(xué) 號(hào) 1310300235 學(xué)生姓名 聶 震 設(shè)計(jì)時(shí)間 2014.06.30 -2014.07.04 指導(dǎo)教師 朱 迅 提交日期 2014.07.04 一. 課程設(shè)計(jì)目的本課程設(shè)計(jì)是提高學(xué)生程序設(shè)計(jì)能力的重要實(shí)踐性環(huán)節(jié)之一,是在學(xué)生學(xué)習(xí)完程序設(shè)計(jì)基礎(chǔ)(C)課程后進(jìn)行的一次全面的綜合練習(xí)。本課程設(shè)計(jì)的目的和任務(wù):1. 鞏固和加深學(xué)生對(duì)C語(yǔ)言課程的基本知識(shí)的理解和掌握;2. 掌握C語(yǔ)言編程和程

2、序調(diào)試的基本技能;3. 利用C語(yǔ)言進(jìn)行基本的軟件設(shè)計(jì);4. 初步掌握書(shū)寫程序設(shè)計(jì)說(shuō)明文檔的能力5. 提高運(yùn)用C語(yǔ)言解決實(shí)際問(wèn)題的能力。二. 課程設(shè)計(jì)要求1. 分析課程設(shè)計(jì)題目的要求;2. 寫出詳細(xì)設(shè)計(jì)說(shuō)明;3. 編寫程序代碼,調(diào)試程序使其能正確運(yùn)行;4. 設(shè)計(jì)完成的軟件要便于操作和使用,有整齊、美觀的使用界面;5. 設(shè)計(jì)完成后提交課程設(shè)計(jì)報(bào)告(按學(xué)校要求裝訂)和源代碼文件的電子文檔。三 . 題目三 成績(jī)記錄簿1. 設(shè)計(jì)要求:成績(jī)記錄簿中記錄以下數(shù)據(jù):學(xué)號(hào)、姓名、課程編號(hào)、課程名稱、成績(jī)、學(xué)分,所有成績(jī)都以百分制計(jì)分。在程序中可以輸入新的成績(jī)記錄,可以按學(xué)號(hào)或姓名查詢一個(gè)學(xué)生的所有成績(jī),和已完成

3、的總學(xué)分。也可以按課程編號(hào)查出一個(gè)班的成績(jī)表,班成績(jī)表后面要統(tǒng)計(jì)平均分,和及格率。程序的主界面如下: 成績(jī)記錄簿1. 添加2. 刪除3. 查學(xué)生成績(jī)4. 查班成績(jī)表0. 退出2. 提高水平在程序中增加將數(shù)據(jù)寫入文本文件和從文件中讀入數(shù)據(jù)的功能,文件名由用戶輸入。3. 提示在沒(méi)有使用文件時(shí),數(shù)據(jù)可以保存在一個(gè)大的數(shù)組中,要注意的數(shù)據(jù)項(xiàng)的類型。四. 設(shè)計(jì)說(shuō)明F.1程序系統(tǒng)的結(jié)構(gòu)用一系列圖表列出本程序系統(tǒng)內(nèi)的每個(gè)程序(包括每個(gè)模塊和子程序)的名稱、標(biāo)識(shí)符。主函數(shù)刪除成績(jī)添加成績(jī)查詢學(xué)生查詢班級(jí)查詢按學(xué)號(hào)刪除按姓名刪除按學(xué)號(hào)查找按姓名查找課程編號(hào)輸入姓名,學(xué)號(hào)等信息刪除成功平均分,及格率,學(xué)生信息學(xué)生

4、相關(guān)信息輸出學(xué)生信息輸出所查詢信息輸出剩余的學(xué)生信息退出F.2程序1(標(biāo)識(shí)符)設(shè)計(jì)說(shuō)明   F.2.1程序描述 記錄一些學(xué)生的學(xué)習(xí)情況,并保存下來(lái)。能保存,刪除,查詢學(xué)生的成績(jī),可以按班級(jí)查詢一門學(xué)科的學(xué)習(xí)狀況等。  F.2.2功能 1. 添加: 本程序可以一次輸入多個(gè)學(xué)生的成績(jī)。開(kāi)始時(shí),輸入計(jì)劃添加學(xué)生的個(gè)數(shù),然后依次輸入各個(gè)學(xué)生的基本信息,程序自動(dòng)記錄,輸出。2. 刪除:刪除分為按姓名和學(xué)號(hào)查找刪除兩種方法刪除,開(kāi)始時(shí),選擇刪除方法,根據(jù)提示輸入信息,系統(tǒng)自動(dòng)查找,刪除,用后一個(gè)來(lái)覆蓋前一個(gè)原理自動(dòng)操作,輸出剩余信息,并保存。3 . 查詢:查詢學(xué)生成績(jī)可以用3

5、種方法來(lái)進(jìn)行。1.學(xué)號(hào)2.姓名3.課程代號(hào)。學(xué)生可按學(xué)號(hào)和姓名查詢,按提示輸入相關(guān)信息查詢。班級(jí)查詢,可輸入課程代號(hào),可得班平均分以及班級(jí)及格率。  F.2.3性能所有成績(jī)都以百分制計(jì)分,學(xué)分精度是小數(shù)點(diǎn)后一位,學(xué)號(hào)和課程序號(hào)自己定義。操作靈活,沒(méi)有太大的時(shí)間要求  F.2.4輸人項(xiàng)    輸入時(shí),學(xué)號(hào),成績(jī),課程編號(hào)是整數(shù)型,學(xué)分是小數(shù)(浮點(diǎn)型),姓名和課程名稱是字符型,數(shù)據(jù)沒(méi)有范圍限制,比較自由,沒(méi)有數(shù)量限制。用鍵盤輸入,寫入文件my.txt  F. 2. 5輸出項(xiàng)    輸出時(shí),學(xué)號(hào),成績(jī),課程編號(hào)

6、是整數(shù)型,學(xué)分是小數(shù)(浮點(diǎn)型,保留一位小數(shù)),姓名和課程名稱是字符型,數(shù)據(jù)沒(méi)有范圍限制,比較自由,沒(méi)有數(shù)量限制。顯示器輸出,從文件my.txt讀取  F.2.6算法    計(jì)算平均值時(shí),先將所有數(shù)據(jù)循環(huán)相加,再除以總?cè)藬?shù)。計(jì)算及格率時(shí), 先計(jì)算有多少超過(guò)60分的人,累加,再除以總?cè)藬?shù)。  F.2.7流程邏輯    見(jiàn)F.1程序系統(tǒng)的結(jié)構(gòu)流程圖  F.2.8接口開(kāi)始提示輸入放入結(jié)構(gòu)體數(shù)組中寫入文件結(jié)束1 添加開(kāi)始提示學(xué)號(hào)調(diào)出學(xué)生信息刪除結(jié)束姓名輸入學(xué)號(hào)輸入姓名  2 刪除開(kāi)始提示學(xué)號(hào)調(diào)出學(xué)生信息刪

7、除結(jié)束姓名輸入學(xué)號(hào)輸入姓名3.學(xué)生查找開(kāi)始輸入查詢的課程序號(hào)輸出該班級(jí)所有成績(jī),學(xué)分 結(jié)束4.班級(jí)查找F.2.9存儲(chǔ)分配     本程序中結(jié)構(gòu)體最大容量是10000人,結(jié)構(gòu)體中,姓名分配了10個(gè)數(shù)組空間,課程名稱分配了10 個(gè)數(shù)組空間。  F.2.10注釋設(shè)計(jì)     說(shuō)明準(zhǔn)備在本程序中安排的注釋,如:    a. 加在模塊首部的注釋;    b加在各分枝點(diǎn)處的注釋; 對(duì)各變量的功能、范圍、缺省條件等所加的注釋;     d對(duì)使用的邏輯

8、所加的注釋等等。   F.2.11限制條件     基本沒(méi)有限制條件  F.2.12測(cè)試計(jì)劃 初始界面添加學(xué)生輸入添加選項(xiàng)1我添加了三個(gè)學(xué)生,學(xué)號(hào)分別是1,2,3,其他信息 上圖,添加完成。按學(xué)號(hào)刪除輸入刪除選項(xiàng)2 ,按提示選按1.學(xué)號(hào)查找,輸入學(xué)號(hào)1,查找成功,自動(dòng)刪除,顯示剩余信息按姓名刪除輸入刪除選項(xiàng)2 ,按提示選按2.按姓名查找.,輸入姓名fg,查找成功,自動(dòng)刪除,顯示剩余信息按學(xué)號(hào)查找輸入查找選項(xiàng)3,按提示選1.按學(xué)號(hào)查找,輸入學(xué)號(hào)3,自動(dòng)查找并顯示按姓名查找輸入查找選項(xiàng)3,按提示選2.按姓名查找,輸入姓名hj,自動(dòng)查找并顯示按課程序

9、號(hào)班級(jí)查找輸入查找選項(xiàng)4,根據(jù)提示輸入課程序號(hào),輸入124,自動(dòng)查找并顯示,同時(shí)計(jì)算平均分和及格率并顯示。退出按退出選項(xiàng)0 退出程序。最后寫入的文本文件從文件中讀取的數(shù)據(jù)輸入查找選項(xiàng)3,輸入學(xué)號(hào)3,自動(dòng)從文件中讀取數(shù)據(jù)并顯示。五源代碼#include <stdio.h>#include <string.h>#include<stdlib.h>struct stu int id; char name10; 定義結(jié)構(gòu)體 int subnum; char subname10;int score; float credit;f10000;int x=0,n,choo

10、se,s=0,score=0,c; long int id,subnum; 定義變量char name10,subname10;void add() 定義“添加”函數(shù)printf("你要添加幾個(gè)學(xué)生的成績(jī)"); scanf("%d",&n); 對(duì)添加的幾個(gè)學(xué)生n賦值 printf("學(xué)號(hào) 姓名 課程編號(hào) 課程名稱 成績(jī) 學(xué)分n"); n=n+s; 計(jì)算共有幾個(gè)學(xué)生 for (x=0;x<n;x+) 在0n之間循環(huán) scanf ("%ld%s%ld%s%d%f",&fx.id,&fx.n

11、ame,&fx.subnum,&fx.subname,&fx.score,&fx.credit); 對(duì)結(jié)構(gòu)體中學(xué)生信息賦值 s+; 循環(huán)一次學(xué)生人數(shù)增加一 for (x=0;x<s;x+) 在0s之間循環(huán) printf("學(xué)號(hào)t姓名t課程編號(hào)t課程名稱t成績(jī)t學(xué)分n"); printf("%ldt%st%ldtt%stt%dt%.0fn",fx.id,,fx.subnum,fx.subname,fx.score,fx.credit); 輸出學(xué)生信息 FILE *fp;fp=fopen("my.

12、txt","wb");寫入文件my.txtfor(x=0;x<s;x+)fwrite(&fx,sizeof(fx),1,fp);fclose(fp); void cut() 定義“刪除”函數(shù)int y=0;printf("1.按學(xué)號(hào)查找;2.按姓名查找n");scanf ("%d",&choose); 為選擇函數(shù)賦值switch(choose) case 1:printf("輸入學(xué)號(hào):n");scanf ("%ld",&id); 輸入要查找的學(xué)號(hào)for (

13、x=0;x<s;x+)if (fx.id=id) 判斷數(shù)據(jù)里的學(xué)號(hào)與要查詢的是否一致 printf("學(xué)號(hào)t姓名t課程編號(hào)t課程名稱t成績(jī)t學(xué)分n"); printf("%ldt%st%ldtt%stt%dt%.0fn",fx.id,,fx.subnum,fx.subname,fx.score,fx.credit); printf("nn");y+;for (y=0;y<s;y+)strcpy(,fy+1.name);fy.id=fy+1.id;把后一項(xiàng)的數(shù)據(jù)賦給前一項(xiàng)fy.subnum=fy+

14、1.subnum;strcpy(fy.subname,fy+1.subname);fy.score=fy+1.score;fy.credit=fy+1.credit;s-;for (x=0;x<s;x+)printf("學(xué)號(hào)t姓名t課程編號(hào)t課程名稱t成績(jī)t學(xué)分n"); printf("%ldt%st%ldtt%stt%dt%.0fn",fx.id,,fx.subnum,fx.subname,fx.score,fx.credit); 輸出刪除后的數(shù)據(jù)printf("刪除成功n");break;case 2:prin

15、tf ("輸入姓名:");scanf ("%s",&name); 輸入要查詢的姓名for (x=0;x<s;x+) if (strcmp(,name)=0) 判斷數(shù)據(jù)里的姓名與要查詢的是否一致 printf("學(xué)號(hào)t姓名t課程編號(hào)t課程名稱t成績(jī)t學(xué)分n"); printf("%ldt%st%ldtt%stt%dt%.0fn",fx.id,,fx.subnum,fx.subname,fx.score,fx.credit); printf("nn"); y

16、+;for (y=0;y<s;y+)strcpy(,fy+1.name);fy.id=fy+1.id;把后一項(xiàng)的數(shù)據(jù)賦給前一項(xiàng)fy.subnum=fy+1.subnum;strcpy(fy.subname,fy+1.subname);fy.score=fy+1.score;fy.credit=fy+1.credit;s-;for (x=0;x<s;x+)printf("學(xué)號(hào)t姓名t課程編號(hào)t課程名稱t成績(jī)t學(xué)分n"); printf("%ldt%st%ldtt%stt%dt%.0fn",fx.id,,fx.subn

17、um,fx.subname,fx.score,fx.credit);printf("刪除成功n");break;FILE *fp;寫入文件my.txtfp=fopen("my.txt","wb");for(x=0;x<s;x+)fwrite(&fx,sizeof(fx),1,fp);fclose(fp);void student()printf ("1.按學(xué)號(hào)查找。2.按姓名查找。");scanf ("%d",&choose); 給查找條件賦值switch(choose)c

18、ase 1:printf("輸入學(xué)號(hào):n");scanf ("%ld",&id); 輸入學(xué)號(hào)for (x=0;x<s;x+) if (fx.id=id) 判斷數(shù)據(jù)里的學(xué)號(hào)與要查詢的是否一致printf("學(xué)號(hào)t姓名t課程編號(hào)t課程名稱t成績(jī)t學(xué)分n"); printf("%ldt%st%ldtt%stt%dt%.0fn",fx.id,,fx.subnum,fx.subname,fx.score,fx.credit); 輸出查詢結(jié)果 break; case 2:printf ("

19、輸入姓名:");scanf ("%s",&name); 輸入姓名for (x=0;x<s;x+) if (strcmp(,name)=0) 判斷數(shù)據(jù)里的學(xué)號(hào)與要查詢的是否一致 printf("學(xué)號(hào)t姓名t課程編號(hào)t課程名稱t成績(jī)t學(xué)分n");printf("%ldt%st%ldtt%stt%dt%.0fn",fx.id,,fx.subnum,fx.subname,fx.score,fx.credit); 輸出查詢結(jié)果 break;void classes()int sum=0,b=0

20、;float ave,c;printf ("輸入課程序號(hào):n");scanf ("%ld",&subnum); 輸入課程序號(hào)for (x=0;x<s;x+)if(fx.subnum=subnum) 判斷數(shù)據(jù)里課程序號(hào)和與查詢序號(hào)是否一致printf("學(xué)號(hào)t姓名t課程編號(hào)t課程名稱t成績(jī)t學(xué)分n"); printf("%ldt%st%ldtt%stt%dt%.0fn",fx.id,,fx.subnum,fx.subname,fx.score,fx.credit); 輸出查詢結(jié)果sum+=

21、fx.score; 計(jì)算總成績(jī)ave=(float)sum/s; 計(jì)算平均成績(jī)printf ("平均分:%.3fn",ave); for (x=0;x<s;x+)if(fx.score>=60) 判斷成績(jī)是否超過(guò)60b+; 成績(jī)超過(guò)60,人數(shù)加一c=(float)b/s; 計(jì)算及格率printf("及格率:%.3f",c);int main() 主函數(shù)unsigned a;FILE *fp;fp=fopen("my.txt","rb");fread(&fs,sizeof(fs),1,fp);讀取

22、文本my.txt中的數(shù)據(jù) while(!feof(fp)s+;fread(&fs,sizeof(fs),1,fp);fclose(fp);while(1) printf("nnn");printf(" 成績(jī)記錄簿n");printf(" 1: 添 加n");輸出目錄printf(" 2: 刪 除n");printf(" 3: 查學(xué)生成績(jī)n");printf(" 4: 查班成績(jī)表n");printf(" 0: 退 出n");printf(" 請(qǐng)輸入數(shù)字選擇: ");scanf("%d",&a); switch(a) case 1: add(); break; case 2: cut();break; 目錄對(duì)應(yīng)的結(jié)構(gòu) case 3:student();break; case 4:classes(); break; case 0:exit(0); default: ; 六. 使用說(shuō)明使用時(shí),目錄會(huì)自動(dòng)顯示成績(jī)記錄簿1. 添加2. 刪除3. 查學(xué)生成績(jī)4. 查班成績(jī)表0. 退出選擇1 時(shí),添加學(xué)生,進(jìn)入后會(huì)提示用戶輸入要添加學(xué)生的數(shù)目,輸入后,依次輸入學(xué)生

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論