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

下載本文檔

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

文檔簡介

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

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

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

4、除改為輸出即可;求平均值函數(shù)與查詢類似只是輸出時只輸出平均值而已。按平均值排序只要加一個排序函數(shù)即可。退出函數(shù)什么都不寫,即可。程序流程圖查詢成績添加成績 添加學(xué)生成績添加課程編號添加學(xué)生姓名添加學(xué)生學(xué)號查詢班級成績查詢學(xué)生成績查詢班級成績查詢學(xué)生成績課程編號學(xué)號查詢姓名查詢調(diào)試過程及實驗結(jié)果總結(jié)經(jīng)過一個多星期的編譯原理課程設(shè)計,在我的努力下,順利完成該課程設(shè)計。通過該課程設(shè)計,掌握了編譯程序工作的基本過程及其各階段的基本任務(wù),熟悉了編譯程序總流程框圖,了解了編譯程序的生成過程及其相關(guān)的技術(shù),對課本上的知識也有了更深的理解。老師常說,課本上的知識是機械的,表面的,要學(xué)會去運用,要舉一反三?,F(xiàn)在

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

6、想是寫出的代碼能運行,需要耐心細(xì)心,毅力以及充沛的體力。只有經(jīng)過多次編輯,多次編譯,再多次運行,才能編寫出更好的程序,有時候需要多次的更正才能達(dá)到所要的運行結(jié)果。附錄#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX 1000 struct Lesson char LessonName100; char LessonNumber100; int LessonMark; float LessonCredit;struct Student char Name100; char N

7、umber100; int LessonCount; struct Lesson L100;struct Student SMAX;int StudentCount = 0; void PrintInterface(); int Student_Insert(); int Student_Delete(); void Student_Select();void Class_Select();void WriteFile(); void ReadFile(); int main() int n; PrintInterface(); scanf("%d", &n); v

8、oid 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| 4、查班成績表 |n"); printf("n| 5、寫入文本文件 |n"); printf("n| 6、讀取文本文件 |n"); printf("n| 0

9、、退出 |n"); printf("n - "); printf("n選擇操作:"); scanf("%d",&n); switch(n) case 1: if (Student_Insert() printf("n添加成功.回車?yán)^續(xù)n"); else printf("n添加失敗.回車?yán)^續(xù)n"); break; case 2: Student_Delete(); break; case 3: Student_Select(); break; case 4: Class_Sele

10、ct(); break; case 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 = St

11、udentCount; i < StudentCount + n; +i) printf("nt第%d個學(xué)生:n", i - StudentCount + 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(&qu

12、ot;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(Si.Lj.LessonNumber)!=5) printf("輸入錯誤,請重新輸入!"); return 0; printf(

13、"ntt課程名稱:"); scanf("%s",Si.Lj.LessonName); printf("ntt課程成績:"); scanf("%d", &Si.Lj.LessonMark); if(Si.Lj.LessonMark<0 | Si.Lj.LessonMark>100) printf("輸入錯誤,請重新輸入!"); return 0; printf("ntt課程學(xué)分:"); scanf("%f", &Si.Lj.Les

14、sonCredit);if(Si.Lj.LessonCredit<1 | Si.Lj.LessonCredit>5) printf("輸入錯誤,請重新輸入!"); return 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é)生姓名:");

15、 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) && 0=strcmp(Si.Number, b) printf("n找到,刪除n"); for (j = i + 1; j < StudentCount; j+

16、) Sj - 1 = Sj; break; if (i = StudentCount | i > StudentCount) printf("n未找到該學(xué)生nn"); return 0; else StudentCount-; 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 =

17、1) printf("n姓名:");fflush(stdin); gets(a); for (i = 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%

18、fn", Si.Lj.LessonNumber, Si.Lj.LessonName, Si.Lj.LessonMark, Si.Lj.LessonCredit); printf("-n"); printf("nn"); else printf("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

19、.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"); break; printf("查找完畢.回車?yán)^

20、續(xù)n"); getchar(); else printf("選擇錯誤.回車?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 < Stud

21、entCount; i+) for (j = 0; j < Si.LessonCount; j+) if (strcmp(Si.Lj.LessonNumber,a)=0) printf("%st%st%stt%dtt%fn", Si.Number, Si.Name, Si.Lj.LessonName, Si.Lj.LessonMark, Si.Lj.LessonCredit); printf("-n"); z+=Si.Lj.LessonMark; x+; if (Si.Lj.LessonMark >= 60)y+; break; printf

22、("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地址輸入格式:例如d:Student.txt:"); 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.Number, Si.Name,Si.LessonCount); for (j = 0; j < Si.LessonCount; j+) fprintf(fp,"%st%st%dt%fn", Si.Lj.LessonNumber,Si.Lj.Les

溫馨提示

  • 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

提交評論