C語言學生成績管理系統設計 《C語言程序設計》實訓報告「建議收藏」一、課程設計題目《學生成績管理系統設計》二、實訓目的(1)掌握結構化程序設計的基本方法,基本掌握面向對象程序設計的基本思路和方法。(2)掌握C++的基本概念和基礎知識。(3)通過訓練能夠讀懂較為復雜的C++語言源程序并具備基本C++語言程序設計的能力。(4)通過實訓,培養自己編寫、調試、分析程序的能力。(5)培養自己獨立解決問題,查找資料的能力。同學之間相互幫助,相互交流,相互合作的團隊精神。(6)培養自己良好的學習興趣,獨立的編程風格。(7)通過實訓檢查自己學習上的
大家好,我是架構君,一個會寫代碼吟詩的架構師。今天說一說C語言學生成績管理系統設計 《C語言程序設計》實訓報告「建議收藏」,希望能夠幫助大家進步!!!
很多朋友私信要一份C語言學生成績管理系統設計報告,提供一下獲取方法吧
更多管理系統相關專題請點擊 ------>管理系統專題庫入口
后續也會把之前搜集到的優質管理系統相關資料分享出來,大家一起學習,下面是作者自己的一份實訓報告,希望能幫助到大家
一、課程設計題目
《學生成績管理系統設計》
二、實訓目的
(1)掌握結構化程序設計的基本方法,基本掌握面向對象程序設計的基本思路和方法。
(2)掌握C++的基本概念和基礎知識。
(3)通過訓練能夠讀懂較為復雜的C++語言源程序并具備基本C++語言程序設計的能力。
(4)通過實訓,培養自己編寫、調試、分析程序的能力。
(5)培養自己獨立解決問題,查找資料的能力。同學之間相互幫助,相互交流,相互合作的團隊精神。
(6) 培養自己良好的學習興趣,獨立的編程風格。
(7) 通過實訓檢查自己學習上的不足,達到熟練掌握C++語言的基本知識和技能。
三、課程設計報告內容
3.1功能要求
該系統運行在DOS環境下,人機界面為命令行文本界面。完成的任務是對若干人的成績信息進行管理,且數據保存到文件中。
實現的主要功能是:
系統以菜單方式進行工作
學生信息和成績輸入功能
學生信息和成績輸出功能
學生信息和成績瀏覽功能
查詢學生信息及成績功能
修改學生信息及成績功能
學生成績排序
以穩健的形式進行保存
3.2 設計環境
所使用的語言采用標準C,開發工具可選用在DOS環境下的Turbo C
3.3 數據結構
本系統是對學生成績的信息進行管理,學生成績信息采用C的結構體數據類型描述,定義如下:
struct students
{
int num; //學號-整型//
char name[8]; //姓名-字符型//
char chinese; //大學語文-字符型//
char math; //大學數學-字符型//
char computer; //計算機-字符型//
char sum; //總成績-字符型//
char ave; //平均分-字符型//
}
只聽到從架構師辦公室傳來架構君的聲音:
燕子雙飛來又去。有誰來對上聯或下聯?
3.4實現方法及主要算法分析
(1)主界面的設計:主界面采用文本菜單的形式,各功能調用通過菜單進行選擇。采用循環處理,以便執行完某項處理后,仍可選擇其他項處理。在循環內先顯示提示信息,然后讀取用戶輸入,使用語句對用戶的輸入進行判斷,分別調用相應的模塊,當某模塊結束后再次回到文本菜單,直到用戶選擇結束程序菜單,才退出循環,從而退出系統。
(2) 外部文件的類型:文件采用的二進制的文件,對文件的讀寫采用順序文件的方式,并使用fread和等函數對文件進行操作。
(3)清屏函數:一般由上一級菜單屏幕進入下一級菜單屏幕或由下一級菜單屏幕返回上一級菜單屏幕都需要清除屏幕原來顯示的內容。同時在調用程序的過程中,記錄需要清屏的位置,然后修改代碼,加入()函數清屏。
(4)提示信息:一般的輸入與輸出需有相應的提示信息,以增加用戶的交互性,增加輸出的可讀性,以幫助用戶使用程序。
3.5模塊設計
根據功能要求,本系統為五大主要模塊,具體模塊如表所示。
表 學生信息成績管理系統的模塊
3.6處理流程
(1)學生成績管理系統主界面模塊
(2)成績輸入模塊和(3)成績排序模塊
(4)刪除記錄
(5)修改記錄
(6)查找信息
四、結論
學生成績管理系統的編寫,看似雜亂無頭緒,實際上卻并不如此。它的每一個功能都能分成模塊,有句話說的好,大事化小,小事化了。C語言編程也正式如此,把一個大的程序分為若干相互獨立的模塊,這樣使完成每一個模塊的工作變得單純而明確,這樣不僅降低了難度還使得思路清晰,很容易編寫出要做的程序,從而為設計一些較大的軟件打下了良好的基礎。
分析問題:
學生成績管理系統的整體功能都包括、增加成員、刪除成員、查看成員、修改成員、登陸口令五大板塊,而查看有包括學號,姓名,大學語文成績,大學數學成績,計算機成績,總成績,平均分七個模塊。
設計的數據對象包括整形:學號。字符型:姓名、3門課程成績、總成績、平均成績。數據結構線性數據結構,定義人數上限為1000.
算法的設計:
自頂向下
現有全局,在進行整體設計,然后再進行下層的設計,逐步實現精細化。采用這種方法能夠做到胸有全局,能全盤考慮,不至于顧此失彼,頭重腳輕。
逐步細化
一步步地將上層的任務分解成較小的、易于實現的任務,知道可以很簡單實現為止。
編寫源程序:
不求速度,但求質量!一步一個腳印,編寫程序時候寧可速度慢些也要盡量保證質量,做到盡量不出錯。精力集中,全神貫注!寫程序時候最忌諱三心二意,這樣才能思路清晰保證質量。保持一個良好的編程心態,不要被長長的代碼嚇到
程序的編譯與運行:
查找錯誤是一件讓人鬧心的事,但是要注重技巧,注意平時經驗的積累。程序編譯成功不要滿足現狀通訊錄c語言程序設計,要積極測試程序的可用性,對功能不理想,存在缺點的地方,積極的改進,完善。
五、結束語
在實訓過程中,使我良好的鍛煉了自己,首先是興趣方面,通過編寫通訊錄管理系統使我更加喜歡編程,使我從以前的迷茫狀態中解脫出來,使我了解了編程的真正意義。我想這對我以后的人生有著很大的幫助。其次通過編寫通訊錄管理系統使我對寫程序有了一定的思路,不像以前無從下手,使我理解了算法的意義,使我懂得了模塊化思想的好處。
通過一個星期的編寫代碼通訊錄c語言程序設計,使我對書本上的知識有了更深的理解,甚至有很多不懂的問題在這過程中自然而然的理解了。對期末考試更有了信心。在朱老師的悉心指導下,我對C語言有了更深刻的理解,對程序的算法,數據的定義,程序的改錯等方面的能力有了很大提高,自身的注意力,耐心,和對編程的興趣有了很大增長,使我獲益匪淺。
六、參考書目:
[1]譚浩強,《C語言程序設計》,清華大學出版社
附完整代碼:
此代碼由Java架構師必看網-架構君整理#include
#include //比較字符串頭文件// #include //實時檢測總數頭文件// #define N 1000 //控制最大輸入// int n=0; //實時檢測的總數n// /*定義結構體students*/ struct students { int num; //學號-整型// char name[8]; //姓名-字符型// char chinese; //大學語文-字符型// char math; //大學數學-字符型// char computer; //計算機-字符型// char sum; //總成績-字符型// char ave; //平均分-字符型// }student[N],student1; //student[N]是結構體數組student1是結構體的初始化// /*實時檢測總數n*/ void count() { FILE *fp; //定義一個文件指針fp// fp=fopen("students.txt","at+"); //以“追加”方式打開students文本文件// if(fp==NULL) //判斷文件是否為空// printf("Cannot open file!"); struct students stu1; n=0; //初始化// while(1) { if(feof(fp)) //檢測文件是否結束// break; fread(&stu1,sizeof(struct students),1,fp); //讀取文件// n++; //讀取文件數// } n--; //關閉文件數// fclose(fp); //關閉文件// } /*菜單*/ void main() { int i; //獲取用戶在菜單中的選擇// while(i!=0) { system("cls"); //清屏// printf("\t\t歡迎進入學生信息管理系統\n"); printf("\t\t==============================\n"); printf("\t\t*請擇操作 *\n"); printf("\t\t*1輸入學生信息 *\n"); printf("\t\t*2輸出學生信息 *\n"); printf("\t\t*3修改學生信息 *\n"); printf("\t\t*4查詢學生信息 *\n"); printf("\t\t*5排序學生信息 *\n"); printf("\t\t*6退出 *\n"); printf("\t\t==============================\n"); scanf("%d",&i); system("cls"); //清屏// count(); //實時檢測總數n// switch(i) { case 1:input();break; //輸入學生信息// case 2:output();break; //輸出學生信息// case 3:xiugai();output();break; //修改學生信息// case 4:query();break; //查詢學生信息*/ case 5:paixu();output();break; //成績排序// default: printf("輸入有錯\n"); //錯誤糾正// } } if(i==0) tuichu(); //退出系統// } /*成績輸入*/ void input() { int i=0; //學生人數初始化// char c; FILE *fp; //定義一個文件指針fp// count(); //實時檢測總數n// fp=fopen("students.txt","at+"); //以“追加”方式打開students文本文件// do { printf("請輸入學生的個人信息:\n"); printf("\n請輸入第%d學生的信息:\n",n+1); printf("請輸入學生的學號:"); scanf("%d",&student[i].num); printf("請輸入學生的姓名:"); scanf("%s",student[i].name);getchar(); printf("請輸入學生的大學語文成績"); scanf("%s",student[i].chinese); printf("請輸入學生的大學數學成績:"); scanf("%d",&student[i].math); printf("請輸入學生的計算機成績:"); scanf("%s",student[i].computer); getchar(); student[i].sum=student[i].chinese+student[i].math+student[i].computer; student[i].ave=student[i].sum/3; fwrite(&student[i],sizeof(struct students),1,fp); //以方式將其寫入students文本文件// i++; n++; printf("\n\n\t\t\t\t是否繼續輸入(Y/N):");getchar(); //提示是否繼續,從鍵盤 獲得一個字符// scanf("%c",&c); } while(c=='y'||c=='Y'); fclose(fp); } /*成績輸出*/ void output() { int i; char c; FILE *fp; //定義一個文件指針fp// fp=fopen("students.txt","rt"); //以“讀取的” 方式打開students文本文件// system("cls"); //清屏// getchar(); printf("||------||-----||-----||-----||------||-------||-------||------||"); printf("|#學號-----姓名------大學語文------大學數學------計算機------總成績 -----平均分---#|\n"); do{ for(i=0;i
printf("|------||-----||------||-----||-----||-----||-----||------ |"); printf("\n\n\t\t\t\t是否繼續其它操作(Y/N):"); //提示是否繼續// scanf("%c",&c); c=getchar(); }while(c=='y'||c=='Y'); fclose(fp); //關閉文件// } /*成績修改*/ void xiugai() { int i,tp,num1; char c; FILE *fp; //定義一個文件指針fp// lb: printf("\n按學號修改\n\n"); printf("請輸入要修改的學生學號\n"); scanf("%d",&num1); for(i=0;i
scanf("%s",student[i].ave); goto la; } } }while (tp<8); la: printf("是否繼續修改(y/n)\n"); //提示是否繼續// getchar(); scanf("%c",&c); if(c=='y'||c=='Y') goto lb; } } fp=fopen("students.txt","w+"); //以“讀寫” 方式打開students文本文件// for(i=0; i
>>查無此人!"); //提示是否繼續// printf ("\n是否繼續查找(Y/N)?"); getchar(); getchar();}break; case 2:{ printf("請輸入要查詢學生的學號:"); scanf("%d",&findnum); for(i=0;i
>>查無此人!"); else { printf("\n查尋到的學生為:\n") ; if(j==1) printf("|-------||------||------||-------||-------||-------||-------||------|"); //僅在第一次顯示// printf("|學號-----姓名------大學語文------大學數學------計算機------總成績-----平均分---|\n"); printf("%4d%d%d%d%d%d%d%d",student[i].num,student[i].name, student[i].chinese,student[i].math,student[i].sum,student[i].ave); } //提示是否繼續// printf ("\n是否繼續查找(Y/N)?"); getchar(); findct=getchar(); //從鍵盤輸入一個判斷字符,并將它賦值給字符變量 findct,用于以下的if語句的判斷 // if(findct=='Y' || findct=='y') query(); } } fclose(fp); //關閉文件// } /*成績排序*/ void paixu() { int i, j; FILE *fp; //定義一個文件指針fp// system("cls"); //清屏// count(); //實時檢測總數n// for(i=0;i student[j+1].num) //整型數字的比較// { student1=student[j]; student[j]=student[j+1]; student[j+1]=student1; } } fp=fopen("students.txt","w+"); //以 “讀寫”方式打開students文本文件// for(i=0;i
需要實訓報告的同學,請在下方留言,看到會一個個回復的。
或者直接掃描下方公號,發送成績系統三個字,獲取下載源碼。
如果失效了,再請直接私信或留言,歡迎大家一起探討學習。