彭 莉
(武漢工程職業(yè)技術學院 湖北 武漢:430080)
基于C語言的學生成績管理系統(tǒng)的實現(xiàn)
彭 莉
(武漢工程職業(yè)技術學院 湖北 武漢:430080)
學生成績管理是高校教學管理的重要環(huán)節(jié)。在VC環(huán)境下開發(fā)的基于C語言的學生成績管理系統(tǒng)能夠實現(xiàn)對學生記錄的增、刪、改、查等功能。對系統(tǒng)主要功能模塊的設計思想進行了闡述,并給出了部分關鍵代碼。
C語言;學生成績;系統(tǒng);實現(xiàn);成績管理;教學管理
成績管理是高校教學管理中的重要組成部分。隨著計算機的迅速發(fā)展,傳統(tǒng)的人工管理方式已被計算機管理所替代。在VC++6.0環(huán)境下開發(fā)的基于C語言的學生成績管理系統(tǒng)能夠實現(xiàn)對學生成績的科學化管理,方便教務員快速的添加、修改、查找、刪除以及保存學生的成績信息,從而推動校園信息化。
為了對學生的成績進行管理,根據(jù)實際需要設計一個學生成績管理系統(tǒng),系統(tǒng)實現(xiàn)的主要功能包括:增加學生記錄、修改學生記錄、刪除學生記錄、查詢學生記錄和保存學生記錄等,功能分析如下:
(1)增加學生記錄:增加學生信息,包括學號,姓名,計算機成績,數(shù)學成績。
(2)修改學生記錄:通過學號查找到學生,然后對學生信息進行修改。
(3)刪除學生記錄:刪除指定學生記錄。
(4)查詢學生記錄:根據(jù)學生學號,查找學生的基本信息。
(5)保存學生記錄:將學生信息保存到文件中,從而實現(xiàn)永久保存。
(6)退出系統(tǒng):退出學生成績管理系統(tǒng)。
設計一個主菜單,方便用戶依據(jù)菜單項來進行相應的操作,主菜單界面如圖1所示。
圖1 系統(tǒng)主菜單
用戶選擇如圖1所示的菜單[2]后,可以添加學生的記錄信息。在每一條學生記錄中,保存的學生信息如表1所示。
表1 學生信息表
在學生信息表中,每一條學生記錄,都包含四個屬性:學號、姓名、計算機成績和數(shù)學成績。可以使用結構體來定義一名學生的記錄,如下:
{
int ID; /*學生編號*/
char Name[9]; /*學生姓名*/
int ComPuter; /*計算機成績*/
int Math; /*數(shù)學成績*/
};
因為學生可能有很多,需要定義一個數(shù)組來保存所有學生的信息,學生的個數(shù)用一個宏來定義,程序如下:
#define STUDENT_NUMBER 1000 /*定義一個符號常量,代表學生的個數(shù)*/
/*定義一個數(shù)組,保存所有的學生信息,數(shù)組中保存的是結構體記錄,代表學生信息*/
struct StudentRecord students[STUDENT_NUMBER];
int num = 0; /*用一個變量記錄當前已有的學生記錄的個數(shù)*/
然后,實現(xiàn)添加學生記錄的功能函數(shù),函數(shù)代碼如下:
/*增加學生記錄*/
void AddStuRecord()
{
while(1)
{
printf("請輸入編號[4位數(shù)字]:");
scanf("%d",&students[num].ID);
getchar();
printf("請輸入姓名:");
scanf("%s",&students[num].Name);
getchar();
printf("請輸入計算機成績:");
scanf("%d",&students[num].ComPuter);
getchar();
printf("請輸入數(shù)學成績:");
scanf("%d",&students[num].Math);
getchar();
/*增加一個學生后,學生記錄的個數(shù)加1*/
num++;
/*是否繼續(xù)增加學生記錄,如果輸入'n',表示不繼續(xù),退出循環(huán)*/
printf("是否繼續(xù)增加記錄?(y/n) ");
if (getchar()=='n')
{
break;
}
}
運行的結果如圖2所示。
圖2 添加學生記錄
查找學生記錄可以依據(jù)該學生的學號,在所有的學生記錄中,查詢指定學號的學生記錄。然后返回這個記錄在學生記錄數(shù)組中的下標值。查找指定學號學生記錄的程序如下:
*查找學生記錄,返回該記錄的下標*/
int FindStuRecord(int id)
{
int i;
/*遍歷所有的學生記錄,查找出指定編號的記錄*/
for (i=0;i { if (students[i].ID == id) { return i; } } return -1; } /*顯示指定下標的記錄內(nèi)容*/ void DisplayStuRecord(int index) { printf("-------------------------------------------------------------
"); printf("編號:%d
",students[index].ID); printf("姓名:%s
",students[index].Name); printf("計算機成績:%d
",students[index].ComPuter); printf("數(shù)學成績:%d
",students[index].Math); printf("-------------------------------------------------------------
"); } 修改學生記錄時,首先需找到該學生的記錄。修改之前,輸入需要修改的學生的學號,然后根據(jù)學號,查找到這個學生記錄在數(shù)組中的下標。通過此下標,即可獲取需要修改的學生信息。最后修改這些信息使其成為新的信息。具體實現(xiàn)代碼如下: /*修改學生記錄*/ void ModifyStuRecord() { int id; int index; while(1) { printf("請輸入要修改的記錄編號[4位數(shù)字]:"); scanf("%d",&id); /*查找指定編號的學生記錄的下標*/ index=FindStuRecord(id); if (index == -1) { printf("學生記錄不存在!
"); } else { printf("學生記錄信息如下:
"); DisplayStuRecord(index); printf("請輸入新編號[4位數(shù)字]:"); scanf("%d",&students[index].ID); getchar(); printf("請輸入新姓名:"); scanf("%s",&students[index].Name); getchar(); printf("請輸入新計算機成績:"); scanf("%d",&students[index].ComPuter); getchar(); printf("請輸入新數(shù)學成績:"); scanf("%d",&students[index].Math); getchar(); } printf("是否繼續(xù)修改其它記錄?(y/n)"); if (getchar()=='n') { break; } } } 運行的結果如圖3所示。 圖3 修改學生記錄 想要刪除學生的記錄,首先要找到該記錄,可以按照修改學生記錄同樣的方法,通過調(diào)用查找學生記錄的函數(shù)找到需要刪除的學生記錄在數(shù)組中的下標,然后在數(shù)組中刪除相應的記錄。刪除學生記錄的方法很簡單,只需將要刪除的記錄之后的記錄向前移動一個位置,后面的記錄就可以覆蓋前面的記錄,從而實現(xiàn)刪除功能。 不論是增加或刪除學生的記錄,都會將這些信息保存到一個數(shù)組中。關閉程序后,這些數(shù)據(jù)就消失了,下次打開程序又要重新輸入學生的信息。為了讓這些信息能永久性保存,可以將學生的信息保存到文件中。這樣,下次打開文件,就可以讀取文件中已經(jīng)保存的學生信息。 保存信息到文件,分為兩個步驟:先保存學生記錄的個數(shù);然后將數(shù)組中的每條學生記錄都保存到文件中。具體保存到文件的代碼如下: /*將學生記錄保存到文件*/ void SaveStuInfo() { FILE *fp; int i; if ((fp=fopen("StuInfo.data","wb"))==NULL) { printf("打開文件失敗!
"); return; } if (fwrite(&num,sizeof(int),1,fp)!=1) { printf("寫入文件時發(fā)生錯誤!
"); fclose(fp); return; } for (i=0;i { /*寫入每一個學生記錄信息*/ if (fwrite(&students[i],sizeof(struct StudentRecord),1,fp)!=1) { printf("寫入文件時發(fā)生錯誤!
"); fclose(fp); return; } } printf("保存記錄成功
"); fclose(fp); } 使用C語言開發(fā)的學生成績管理系統(tǒng)實現(xiàn)了教學的信息化管理,節(jié)約了時間,提高了管理人員的工作效率。該系統(tǒng)功能完整,能夠滿足成績管理的基本要求。但是仍然存在不足,例如可增加系統(tǒng)管理員,使其功能進一步細分和完善。如何推進校園的整體信息化,是將來努力的方向。 [1] 楊立君.C語言程序學生成績管理系統(tǒng)設計與實現(xiàn)[J].電腦編程技巧與維護,2017,(8):60-22 [2] 楊蘭.基于C語言開發(fā)的自動翻譯軟件系統(tǒng)設計與實現(xiàn)[J].電子設計工程,2016,24(22):74-76. [3] 韓凱譯.基于C語言的圖書管理系統(tǒng)[J].電子技術與軟件工程,2016,(15):256-256. [4] 陳晶晶,陳華,范宜標.C語言智能評分系統(tǒng)的開發(fā)[J].龍巖學院學報,2016,34(2):75-80. [5] 楊海濤.《C語言程序設計》網(wǎng)上考試系統(tǒng)的設計與實現(xiàn)[J].信息與電腦,2015,(12):114-115. ImplementationofStudentAchievementManagementSystemBasedonCLanguage Peng Li (Wuhan Engineering Institute,Wuhan 430080, Hubei) The student achievement management is an important process for college teaching management. Under the background of VC and based on C language, developing student achievement management system could achieve functions of addition, deletion, amendment, search etc. of student information Stating from the need of users, this article clarified the design thoughts on its main functional modules and provided some key codes. C Language; student achievement; system; realization; student achievement managment; teaching managment 李文英) 2017-09-05 2017-11-15 本文為2017年武漢工程職業(yè)技術學院教學研究項目“公共專業(yè)課《C語言程序設計》教學改革與探索”(項目編號201703)的研究成果 彭 莉(1981~),女,碩士,副教授.E-mail:pl@wgxy.net. TP311.52 A 1671-3524(2017)04-0036-042.3 修改學生記錄
2.4 刪除學生記錄
2.5 打開與保存學生記錄
3 結語