C語言程序設(shè)計學(xué)生成績記錄簿_第1頁
C語言程序設(shè)計學(xué)生成績記錄簿_第2頁
C語言程序設(shè)計學(xué)生成績記錄簿_第3頁
C語言程序設(shè)計學(xué)生成績記錄簿_第4頁
C語言程序設(shè)計學(xué)生成績記錄簿_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、課程實(shí)驗(yàn)報告課程13 新能源實(shí)驗(yàn)日期2013年8月 1C 語言程序設(shè)計班級2 班號名稱姓6實(shí)驗(yàn)成績許鑫學(xué)號名實(shí)驗(yàn)學(xué)生成績記錄簿系統(tǒng)名稱本程序是非數(shù)值計算型算法設(shè)計, 我設(shè)計出了學(xué)生成績記錄簿系統(tǒng)的基實(shí) 本功能,并設(shè)計了簡單的界面。本程序主要考察對自定義函數(shù)的熟悉程度,驗(yàn) 本程序主要使用的是鏈表的相關(guān)操作, 包括結(jié)構(gòu)體鏈表的創(chuàng)建、 輸入、輸出、題 查找、刪除等。我設(shè)計的這個成績記錄簿系統(tǒng)也初步實(shí)現(xiàn)了學(xué)生成績信息的目 顯示、輸入、刪除、查找等必要的功能。描1. 建立一個主界面述2. 用 switch 語句進(jìn)行分類討論3. 分別進(jìn)入錄入,查詢,刪除,等子函數(shù)。4. 將子函數(shù)與主函數(shù)相連即可。該程序可

2、以建立學(xué)生的成績記錄??梢苑奖憷蠋熀屯瑢W(xué)方便的查閱成績;這個程序有錄入和刪除的功能;還可以求出平均成績,并排序成績記錄簿中記錄以下數(shù)據(jù):學(xué)號、姓名、課程編號、課程名稱、成績、學(xué)分添加成績:需要輸入學(xué)生的學(xué)號或姓名、課程編號及成績,如已有該門課程成績給出提示;查詢(班級或個人)成績:查詢個人成績:以學(xué)號或姓名作為關(guān)鍵字,可查詢一個學(xué)生的所有成績,和已完成的總學(xué)分。查詢班級成績:以課程編號為關(guān)鍵字,成績表后面要統(tǒng)計平均分、及格率及全班同學(xué)不同課程在不同分?jǐn)?shù)段分布的人數(shù)及百分比。拓展功能:a) 程序啟動時先從文件讀入數(shù)據(jù),如果文件中沒有數(shù)據(jù)則給出提示;b) 每次修改的數(shù)據(jù)寫入文件以自己的電腦為主要的

3、實(shí)驗(yàn)平臺,運(yùn)用Visual C+這個軟件進(jìn)行反復(fù)的編寫實(shí)驗(yàn)。實(shí)驗(yàn)環(huán)境實(shí)驗(yàn)界面截圖1、開始時2、添加3、查詢4、查詢成績5、寫文本6、讀取主程序提供一個界面,允許用戶選擇。使用switch 語句,用時直接輸入數(shù)字即可。算增加函數(shù),功能是插入學(xué)生成績。使用一個無窮循環(huán),直到錄入”n”法時結(jié)束。描刪除函數(shù),功能是刪除,分為兩步,先找后刪。找,用 strcmp 函數(shù)來述做如果找到記錄 i 值,反之記為 -1 ;刪除可以從 i 項(xiàng)開始將數(shù)組的后一項(xiàng)賦及值給前一項(xiàng)。前一項(xiàng)自動被刪掉。這樣完成刪除。實(shí)查詢函數(shù)與之類似,將刪除改為輸出即可;驗(yàn)求平均值函數(shù)與查詢類似只是輸出時只輸出平均值而已。步按平均值排序只要

4、加一個排序函數(shù)即可。驟退出函數(shù)什么都不寫,即可。程序流程圖添加成績添添添添加加加加學(xué)學(xué)課學(xué)生生程生查詢學(xué)生成績學(xué)姓號名查查調(diào)試過程及實(shí)查詢成績查查詢詢學(xué)班生級查詢班級成績課程編驗(yàn)結(jié)果經(jīng)過一個多星期的編譯原理課程設(shè)計, 在我的努力下, 順利完成該課程總 設(shè)計。通過該課程設(shè)計, 掌握了編譯程序工作的基本過程及其各階段的基本任務(wù),熟悉了編譯程序總流程框圖,了解了編譯程序的生成過程及其相關(guān)的技結(jié)術(shù),對課本上的知識也有了更深的理解。 老師常說,課本上的知識是機(jī)械的,表面的,要學(xué)會去運(yùn)用,要舉一反三?,F(xiàn)在終于深刻的了解了這句話。經(jīng)過這次的課程設(shè)計,發(fā)現(xiàn)書本上很深奧的知識變的更為簡單,同樣,對實(shí)驗(yàn)原理也了有

5、更深的理解。知道和理解了該理論在計算機(jī)中是怎樣執(zhí)行的, 對該理論在實(shí)踐中的應(yīng)用有深刻的理解 。通過該課程設(shè)計,把死板的課本知識變得生動有趣, 激發(fā)了學(xué)習(xí)的積極性。 能夠把課堂上學(xué)的知識通過自己設(shè)計的程序表示出來,加深了對理論知識的理解。課程設(shè)計中程序比較復(fù)雜,在調(diào)試時應(yīng)該仔細(xì),在程序調(diào)試時,注意指針,將不必要的命令去除。除了課堂外,課程設(shè)計是最能學(xué)到東西的,最考驗(yàn)人的。在做課程設(shè)計的這段時間,時刻都感到自己學(xué)的知識有多么的貧瘠。經(jīng)過這次課程設(shè)計,讓我對 C+這門語言有了更深的認(rèn)識,操作能力有了提高要想是寫出的代碼能運(yùn)行,需要耐心細(xì)心,毅力以及充沛的體力。只有經(jīng)過多次編輯,多次編譯,再多次運(yùn)行,

6、才能編寫出更好的程序,有時候需要多次的更正才能達(dá)到所要的運(yùn)行結(jié)果。#include 附 #include 錄 #include #define MAX 1000struct Lessonchar LessonName100;char LessonNumber100;int LessonMark;float LessonCredit;struct Studentchar Name100;char Number100;int LessonCount;struct Lesson L100;struct Student SMAX;int StudentCount = 0;void PrintInter

7、face();int Student_Insert();int Student_Delete();void Student_Select();void Class_Select();void WriteFile();void ReadFile();int main()int n;PrintInterface();scanf(%d, &n);void PrintInterface()int n;while (1)printf(n -歡迎使用學(xué)生成績記錄簿系統(tǒng) - );printf(n| 1、添加|n);printf(n| 2、刪除|n);printf(n| 3、查學(xué)生成績|n);printf(n

8、| 4、查班成績表|n);printf(n| 5、寫入文本文件|n);printf(n| 6、讀取文本文件|n);printf(n| 0、退出|n);printf(n - );printf(n選擇操作 :);scanf(%d,&n);switch(n)case 1:if (Student_Insert()printf(n添加成功 .回車?yán)^續(xù) n);elseprintf(n添加失敗 .回車?yán)^續(xù) n);break;case 2:Student_Delete();break;case 3:Student_Select();break;case 4:Class_Select();break;case

9、5:WriteFile();break;case 6:ReadFile();break;case 0:exit(1);break;default:printf(無此功能 , 請重新選擇 , 按回車確定 n);return 0;int Student_Insert()int i,j,n;printf(n請輸入所添加的學(xué)生人數(shù):);scanf(%d, &n);if (StudentCount + n = MAX)return 0;for (i = StudentCount; i StudentCount + n; +i)printf(nt第 %d個學(xué)生: n, i - StudentCount +

10、 1);printf(nt學(xué)生學(xué)號: );scanf(%s, &Si.Number);if(strlen(Si.Number)!=8)printf(輸入錯誤 , 請重新輸入 );return 0;printf(nt學(xué)生姓名: );scanf(%s, Si.Name);printf(nt該學(xué)生所修課程數(shù):);scanf(%d, &Si.LessonCount);for (j = 0; j Si.LessonCount; +j)printf(nt第 %d門課: n, j + 1);printf(ntt課程編號: );scanf(%s, Si.Lj.LessonNumber);if(strlen(S

11、i.Lj.LessonNumber)!=5)printf(輸入錯誤 , 請重新輸入 !);return 0;printf(ntt課程名稱: );scanf(%s,Si.Lj.LessonName);printf(ntt課程成績: );scanf(%d, &Si.Lj.LessonMark);if(Si.Lj.LessonMark100)printf(輸入錯誤 , 請重新輸入 !);return 0;printf(ntt課程學(xué)分: );scanf(%f, &Si.Lj.LessonCredit);if(Si.Lj.LessonCredit5)printf(輸入錯誤 , 請重新輸入 !);retu

12、rn 0;if (Si.Lj.LessonMark 60)Si.Lj.LessonCredit = 0;StudentCount += n ;return 1;int Student_Delete()char a100;char b100;int i, j;printf(n刪除學(xué)生: n);printf(n學(xué)生姓名: );scanf(%s,a);printf(n學(xué)生學(xué)號: );scanf(%s,b);if(strlen(b)!=8)printf(輸入錯誤請重新輸入);return 0;for (i = 0; i StudentCount; i+)if (0=strcmp(Si.Name, a)

13、 & 0=strcmp(Si.Number, b)printf(n找到,刪除 n);for (j = i + 1; j StudentCount)printf(n未找到該學(xué)生nn);return 0;elseStudentCount-;return 1;void Student_Select()int x;char y100;char a100;int i, j;printf(n輸入所查學(xué)生信息(1. 姓名2.學(xué)號)選擇:);scanf(%d, &x);if (x = 1 | x = 2)if (x = 1)printf(n姓名: );fflush(stdin);gets(a);for (i

14、= 0; i StudentCount; i+)if (0=strcmp(Si.Name,a)printf(n學(xué) 號 : %st姓 名 : %sn,Si.Number,Si.Name);printf(n課程編號 t課程名稱 t課程成績 t課程學(xué)分 n);printf(-n);for (j = 0; j Si.LessonCount; j+)printf(%stt%stt%dtt%fn,Si.Lj.LessonNumber,Si.Lj.LessonName,Si.Lj.LessonMark,Si.Lj.LessonCredit);printf(-n);printf(nn);elseprintf(

15、n學(xué)號: );fflush(stdin);gets(y);for (i = 0; i StudentCount; i+)if (strcmp(Si.Number,y)=0)printf(n學(xué) 號 : %st姓 名 : %sn,Si.Number,Si.Name);printf(n課程編號 t課程名稱 t課程成績 t課程學(xué)分 n);printf(-n);for (j = 0; j Si.LessonCount; j+)printf(%stt%stt%dtt%fn,Si.Lj.LessonNumber,Si.Lj.LessonName,Si.Lj.LessonMark,Si.Lj.LessonCr

16、edit);printf(-n);printf(nn);break;printf(查找完畢 .回車?yán)^續(xù) n);getchar();elseprintf(選擇錯誤 .回車?yán)^續(xù) n);getchar();return;void Class_Select()char a100;double x=0,y=0,z=0;int i, j;printf(n請輸入課程編號:);fflush(stdin);scanf(%s,a);printf(學(xué)號 t姓名 t課程名稱 t課程成績 t課程學(xué)分 n);printf(-n);for (i = 0; i StudentCount; i+)for (j = 0; j =

17、 60)y+;break;printf(n平均分: %ft及格率: %f%nn, z/x, y/x*100);printf(n查找完畢 .回車?yán)^續(xù) n);getchar();void WriteFile()FILE *fp;int i, j;char a100;printf(n請輸入寫入的文件地址:nn地址輸入格式:例如: );scanf(%s,&a);printf(n寫入中 .n);if (fp = fopen(a,w)fprintf(fp,%dn,StudentCount);for (i = 0; i StudentCount; i+)fprintf(fp,%st%st%dn,Si.Num

18、ber,Si.Name,Si.LessonCount);for (j = 0; j Si.LessonCount; j+)fprintf(fp,%st%st%dt%fn,Si.Lj.LessonNumber,Si.Lj.LessonName,Si.Lj.LessonMark,Si.Lj.LessonCredit);printf(n寫入完成 .回車?yán)^續(xù) n);fclose(fp);elseprintf(n寫入失敗 .回車?yán)^續(xù) n);getchar();void ReadFile()FILE *fp;int i, j;char a100;printf(n請輸入讀取的文件地址:nn地址輸入格式:例如: );scanf(%s,&a);printf(n讀取中 .n);if (fp = fopen(a,r)fscanf(fp,%d,&StudentCo

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論