用VC++写一个学生成绩管理系统
时间: 2023-12-27 22:54:36 浏览: 75
学生成绩管理系统主要包括学生信息管理和成绩管理两个模块,下面是一个简单的基于VC++的学生成绩管理系统的实现。
1. 学生信息管理模块
学生信息包括学号、姓名、性别、出生日期、班级等基本信息。我们可以使用一个结构体来存储学生信息。同时,我们可以将学生信息保存在文件中,方便管理和查询。
```c++
struct student{
char id[20]; //学号
char name[20]; //姓名
char gender[10]; //性别
char birth[20]; //出生日期
char classname[20]; //班级
};
//学生信息管理类
class StudentManager {
public:
StudentManager() {};
~StudentManager() {};
//添加学生信息
void addStudent();
//删除学生信息
void deleteStudent();
//修改学生信息
void modifyStudent();
//查询学生信息
void queryStudent();
//显示所有学生信息
void showAllStudents();
private:
//保存学生信息的文件名
const char* fileName = "students.txt";
//读取学生信息
void readData();
//保存学生信息
void saveData();
//学生信息数组
student students[100];
//学生数量
int studentCount = 0;
};
```
通过读取和保存文件来实现学生信息的读取和保存。下面是读取文件的代码:
```c++
void StudentManager::readData()
{
FILE* file = nullptr;
fopen_s(&file, fileName, "r");
if (file == nullptr) {
printf("打开文件失败!\n");
return;
}
while (fscanf_s(file, "%s%s%s%s%s", students[studentCount].id, 20, students[studentCount].name, 20, students[studentCount].gender, 10, students[studentCount].birth, 20, students[studentCount].classname, 20) != EOF) {
studentCount++;
}
fclose(file);
}
```
保存文件的代码如下:
```c++
void StudentManager::saveData()
{
FILE* file = nullptr;
fopen_s(&file, fileName, "w");
if (file == nullptr) {
printf("打开文件失败!\n");
return;
}
for (int i = 0; i < studentCount; i++) {
fprintf_s(file, "%s %s %s %s %s\n", students[i].id, students[i].name, students[i].gender, students[i].birth, students[i].classname);
}
fclose(file);
}
```
2. 成绩管理模块
成绩管理包括学生成绩的录入、查询、修改、删除等功能。我们可以使用一个二维数组来保存学生成绩,其中第一维是学生,第二维是课程。
```c++
//成绩管理类
class ScoreManager {
public:
ScoreManager() {};
~ScoreManager() {};
//录入学生成绩
void inputScore();
//查询学生成绩
void queryScore();
//修改学生成绩
void modifyScore();
//删除学生成绩
void deleteScore();
//显示所有学生成绩
void showAllScores();
private:
//保存成绩的文件名
const char* fileName = "scores.txt";
//读取成绩
void readData();
//保存成绩
void saveData();
//学生成绩数组
int scores[100][5];
//学生成绩数量
int scoreCount = 0;
};
```
读取和保存成绩的代码与读取和保存学生信息的代码类似,这里不再赘述。
3. 主函数
在主函数中,我们可以通过菜单来选择学生信息管理和成绩管理两个模块。
```c++
int main()
{
StudentManager studentManager;
ScoreManager scoreManager;
int choice;
while (true) {
printf("请选择操作:\n");
printf("1. 学生信息管理\n");
printf("2. 成绩管理\n");
printf("3. 退出\n");
scanf_s("%d", &choice);
switch (choice) {
case 1:
studentManager.showMenu();
break;
case 2:
scoreManager.showMenu();
break;
case 3:
exit(0);
default:
printf("无效选择!\n");
break;
}
}
return 0;
}
```
在学生信息管理和成绩管理的菜单中,我们可以选择添加、删除、修改、查询或显示所有学生信息或成绩。
```c++
void StudentManager::showMenu()
{
int choice;
while (true) {
printf("请选择操作:\n");
printf("1. 添加学生信息\n");
printf("2. 删除学生信息\n");
printf("3. 修改学生信息\n");
printf("4. 查询学生信息\n");
printf("5. 显示所有学生信息\n");
printf("6. 返回\n");
scanf_s("%d", &choice);
switch (choice) {
case 1:
addStudent();
break;
case 2:
deleteStudent();
break;
case 3:
modifyStudent();
break;
case 4:
queryStudent();
break;
case 5:
showAllStudents();
break;
case 6:
return;
default:
printf("无效选择!\n");
break;
}
}
}
void ScoreManager::showMenu()
{
int choice;
while (true) {
printf("请选择操作:\n");
printf("1. 录入学生成绩\n");
printf("2. 查询学生成绩\n");
printf("3. 修改学生成绩\n");
printf("4. 删除学生成绩\n");
printf("5. 显示所有学生成绩\n");
printf("6. 返回\n");
scanf_s("%d", &choice);
switch (choice) {
case 1:
inputScore();
break;
case 2:
queryScore();
break;
case 3:
modifyScore();
break;
case 4:
deleteScore();
break;
case 5:
showAllScores();
break;
case 6:
return;
default:
printf("无效选择!\n");
break;
}
}
}
```
以上就是一个简单的基于VC++的学生成绩管理系统的实现,需要注意的是,代码中只是实现了基本的功能,还有很多细节需要完善。
阅读全文