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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

9、號班級查找輸入查找選項4,根據(jù)提示輸入課程序號,輸入124,自動查找并顯示,同時計算平均分和及格率并顯示。退出按退出選項0 退出程序。最后寫入的文本文件從文件中讀取的數(shù)據(jù)輸入查找選項3,輸入學號3,自動從文件中讀取數(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("你要添加幾個學生的成績"); scanf("%d",&n); 對添加的幾個學生n賦值 printf("學號 姓名 課程編號 課程名稱 成績 學分n"); n=n+s; 計算共有幾個學生 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); 對結(jié)構(gòu)體中學生信息賦值 s+; 循環(huán)一次學生人數(shù)增加一 for (x=0;x<s;x+) 在0s之間循環(huán) printf("學號t姓名t課程編號t課程名稱t成績t學分n"); printf("%ldt%st%ldtt%stt%dt%.0fn",fx.id,,fx.subnum,fx.subname,fx.score,fx.credit); 輸出學生信息 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.按學號查找;2.按姓名查找n");scanf ("%d",&choose); 為選擇函數(shù)賦值switch(choose) case 1:printf("輸入學號:n");scanf ("%ld",&id); 輸入要查找的學號for (

13、x=0;x<s;x+)if (fx.id=id) 判斷數(shù)據(jù)里的學號與要查詢的是否一致 printf("學號t姓名t課程編號t課程名稱t成績t學分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;把后一項的數(shù)據(jù)賦給前一項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("學號t姓名t課程編號t課程名稱t成績t學分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("學號t姓名t課程編號t課程名稱t成績t學分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;把后一項的數(shù)據(jù)賦給前一項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("學號t姓名t課程編號t課程名稱t成績t學分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.按學號查找。2.按姓名查找。");scanf ("%d",&choose); 給查找條件賦值switch(choose)c

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

21、fx.score; 計算總成績ave=(float)sum/s; 計算平均成績printf ("平均分:%.3fn",ave); for (x=0;x<s;x+)if(fx.score>=60) 判斷成績是否超過60b+; 成績超過60,人數(shù)加一c=(float)b/s; 計算及格率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(" 成績記錄簿n");printf(" 1: 添 加n");輸出目錄printf(" 2: 刪 除n");printf(" 3: 查學生成績n");printf(" 4: 查班成績表n");printf(" 0: 退 出n");printf(" 請輸入數(shù)字選擇: ");scanf("%d",&a); switch(a) case 1: add(); break; case 2: cut();break; 目錄對應(yīng)的結(jié)構(gòu) case 3:student();break; case 4:classes(); break; case 0:exit(0); default: ; 六. 使用說明使用時,目錄會自動顯示成績記錄簿1. 添加2. 刪除3. 查學生成績4. 查班成績表0. 退出選擇1 時,添加學生,進入后會提示用戶輸入要添加學生的數(shù)目,輸入后,依次輸入學生

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論