基于C语言的学生成绩管理系统的实现
2018-01-02彭莉
彭 莉
(武汉工程职业技术学院 湖北 武汉:430080)
基于C语言的学生成绩管理系统的实现
彭 莉
(武汉工程职业技术学院 湖北 武汉:430080)
学生成绩管理是高校教学管理的重要环节。在VC环境下开发的基于C语言的学生成绩管理系统能够实现对学生记录的增、删、改、查等功能。对系统主要功能模块的设计思想进行了阐述,并给出了部分关键代码。
C语言;学生成绩;系统;实现;成绩管理;教学管理
成绩管理是高校教学管理中的重要组成部分。随着计算机的迅速发展,传统的人工管理方式已被计算机管理所替代。在VC++6.0环境下开发的基于C语言的学生成绩管理系统能够实现对学生成绩的科学化管理,方便教务员快速的添加、修改、查找、删除以及保存学生的成绩信息,从而推动校园信息化。
1 系统功能分析
为了对学生的成绩进行管理,根据实际需要设计一个学生成绩管理系统,系统实现的主要功能包括:增加学生记录、修改学生记录、删除学生记录、查询学生记录和保存学生记录等,功能分析如下:
(1)增加学生记录:增加学生信息,包括学号,姓名,计算机成绩,数学成绩。
(2)修改学生记录:通过学号查找到学生,然后对学生信息进行修改。
(3)删除学生记录:删除指定学生记录。
(4)查询学生记录:根据学生学号,查找学生的基本信息。
(5)保存学生记录:将学生信息保存到文件中,从而实现永久保存。
(6)退出系统:退出学生成绩管理系统。
设计一个主菜单,方便用户依据菜单项来进行相应的操作,主菜单界面如图1所示。
图1 系统主菜单
2 系统设计与实现
2.1 增加学生记录
用户选择如图1所示的菜单[2]后,可以添加学生的记录信息。在每一条学生记录中,保存的学生信息如表1所示。
表1 学生信息表
在学生信息表中,每一条学生记录,都包含四个属性:学号、姓名、计算机成绩和数学成绩。可以使用结构体来定义一名学生的记录,如下:
{
int ID; /*学生编号*/
char Name[9]; /*学生姓名*/
int ComPuter; /*计算机成绩*/
int Math; /*数学成绩*/
};
因为学生可能有很多,需要定义一个数组来保存所有学生的信息,学生的个数用一个宏来定义,程序如下:
#define STUDENT_NUMBER 1000 /*定义一个符号常量,代表学生的个数*/
/*定义一个数组,保存所有的学生信息,数组中保存的是结构体记录,代表学生信息*/
struct StudentRecord students[STUDENT_NUMBER];
int num = 0; /*用一个变量记录当前已有的学生记录的个数*/
然后,实现添加学生记录的功能函数,函数代码如下:
/*增加学生记录*/
void AddStuRecord()
{
while(1)
{
printf("请输入编号[4位数字]:");
scanf("%d",&students[num].ID);
getchar();
printf("请输入姓名:");
scanf("%s",&students[num].Name);
getchar();
printf("请输入计算机成绩:");
scanf("%d",&students[num].ComPuter);
getchar();
printf("请输入数学成绩:");
scanf("%d",&students[num].Math);
getchar();
/*增加一个学生后,学生记录的个数加1*/
num++;
/*是否继续增加学生记录,如果输入'n',表示不继续,退出循环*/
printf("是否继续增加记录?(y/n) ");
if (getchar()=='n')
{
break;
}
}
运行的结果如图2所示。
图2 添加学生记录
2.2 查询学生记录
查找学生记录可以依据该学生的学号,在所有的学生记录中,查询指定学号的学生记录。然后返回这个记录在学生记录数组中的下标值。查找指定学号学生记录的程序如下:
*查找学生记录,返回该记录的下标*/
int FindStuRecord(int id)
{
int i;
/*遍历所有的学生记录,查找出指定编号的记录*/
for (i=0;i { if (students[i].ID == id) { return i; } } return -1; } /*显示指定下标的记录内容*/ void DisplayStuRecord(int index) { printf("-------------------------------------------------------------
"); printf("编号:%d
",students[index].ID); printf("姓名:%s
",students[index].Name); printf("计算机成绩:%d
",students[index].ComPuter); printf("数学成绩:%d
",students[index].Math); printf("-------------------------------------------------------------
"); } 修改学生记录时,首先需找到该学生的记录。修改之前,输入需要修改的学生的学号,然后根据学号,查找到这个学生记录在数组中的下标。通过此下标,即可获取需要修改的学生信息。最后修改这些信息使其成为新的信息。具体实现代码如下: /*修改学生记录*/ void ModifyStuRecord() { int id; int index; while(1) { printf("请输入要修改的记录编号[4位数字]:"); scanf("%d",&id); /*查找指定编号的学生记录的下标*/ index=FindStuRecord(id); if (index == -1) { printf("学生记录不存在!
"); } else { printf("学生记录信息如下:
"); DisplayStuRecord(index); printf("请输入新编号[4位数字]:"); scanf("%d",&students[index].ID); getchar(); printf("请输入新姓名:"); scanf("%s",&students[index].Name); getchar(); printf("请输入新计算机成绩:"); scanf("%d",&students[index].ComPuter); getchar(); printf("请输入新数学成绩:"); scanf("%d",&students[index].Math); getchar(); } printf("是否继续修改其它记录?(y/n)"); if (getchar()=='n') { break; } } } 运行的结果如图3所示。 图3 修改学生记录 想要删除学生的记录,首先要找到该记录,可以按照修改学生记录同样的方法,通过调用查找学生记录的函数找到需要删除的学生记录在数组中的下标,然后在数组中删除相应的记录。删除学生记录的方法很简单,只需将要删除的记录之后的记录向前移动一个位置,后面的记录就可以覆盖前面的记录,从而实现删除功能。 不论是增加或删除学生的记录,都会将这些信息保存到一个数组中。关闭程序后,这些数据就消失了,下次打开程序又要重新输入学生的信息。为了让这些信息能永久性保存,可以将学生的信息保存到文件中。这样,下次打开文件,就可以读取文件中已经保存的学生信息。 保存信息到文件,分为两个步骤:先保存学生记录的个数;然后将数组中的每条学生记录都保存到文件中。具体保存到文件的代码如下: /*将学生记录保存到文件*/ void SaveStuInfo() { FILE *fp; int i; if ((fp=fopen("StuInfo.data","wb"))==NULL) { printf("打开文件失败!
"); return; } if (fwrite(&num,sizeof(int),1,fp)!=1) { printf("写入文件时发生错误!
"); fclose(fp); return; } for (i=0;i { /*写入每一个学生记录信息*/ if (fwrite(&students[i],sizeof(struct StudentRecord),1,fp)!=1) { printf("写入文件时发生错误!
"); fclose(fp); return; } } printf("保存记录成功
"); fclose(fp); } 使用C语言开发的学生成绩管理系统实现了教学的信息化管理,节约了时间,提高了管理人员的工作效率。该系统功能完整,能够满足成绩管理的基本要求。但是仍然存在不足,例如可增加系统管理员,使其功能进一步细分和完善。如何推进校园的整体信息化,是将来努力的方向。 [1] 杨立君.C语言程序学生成绩管理系统设计与实现[J].电脑编程技巧与维护,2017,(8):60-22 [2] 杨兰.基于C语言开发的自动翻译软件系统设计与实现[J].电子设计工程,2016,24(22):74-76. [3] 韩凯译.基于C语言的图书管理系统[J].电子技术与软件工程,2016,(15):256-256. [4] 陈晶晶,陈华,范宜标.C语言智能评分系统的开发[J].龙岩学院学报,2016,34(2):75-80. [5] 杨海涛.《C语言程序设计》网上考试系统的设计与实现[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年武汉工程职业技术学院教学研究项目“公共专业课《C语言程序设计》教学改革与探索”(项目编号201703)的研究成果 彭 莉(1981~),女,硕士,副教授.E-mail:pl@wgxy.net. TP311.52 A 1671-3524(2017)04-0036-042.3 修改学生记录
2.4 删除学生记录
2.5 打开与保存学生记录
3 结语