C语言用指针编写一个学生成绩管理系统
时间: 2023-09-17 22:13:56 浏览: 54
好的,下面是一个简单的学生成绩管理系统的示例代码,使用了指针来操作学生信息:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 100
typedef struct {
char name[20];
int id;
float score;
} Student;
void add_student(Student *students, int *num_students);
void print_students(Student *students, int num_students);
void search_student(Student *students, int num_students);
void delete_student(Student *students, int *num_students);
int main() {
Student students[MAX_STUDENTS];
int num_students = 0;
int option;
do {
printf("\n");
printf("1. Add student\n");
printf("2. Print students\n");
printf("3. Search student\n");
printf("4. Delete student\n");
printf("5. Exit\n");
printf("Enter option: ");
scanf("%d", &option);
switch (option) {
case 1:
add_student(students, &num_students);
break;
case 2:
print_students(students, num_students);
break;
case 3:
search_student(students, num_students);
break;
case 4:
delete_student(students, &num_students);
break;
case 5:
printf("Goodbye!\n");
break;
default:
printf("Invalid option!\n");
break;
}
} while (option != 5);
return 0;
}
void add_student(Student *students, int *num_students) {
if (*num_students == MAX_STUDENTS) {
printf("Maximum number of students reached!\n");
return;
}
Student new_student;
printf("Enter student name: ");
scanf("%s", new_student.name);
printf("Enter student ID: ");
scanf("%d", &new_student.id);
printf("Enter student score: ");
scanf("%f", &new_student.score);
students[*num_students] = new_student;
(*num_students)++;
printf("Student added!\n");
}
void print_students(Student *students, int num_students) {
if (num_students == 0) {
printf("No students found!\n");
return;
}
printf("Name\tID\tScore\n");
for (int i = 0; i < num_students; i++) {
printf("%s\t%d\t%.2f\n", students[i].name, students[i].id, students[i].score);
}
}
void search_student(Student *students, int num_students) {
if (num_students == 0) {
printf("No students found!\n");
return;
}
int search_id;
printf("Enter student ID: ");
scanf("%d", &search_id);
for (int i = 0; i < num_students; i++) {
if (students[i].id == search_id) {
printf("Name: %s\n", students[i].name);
printf("Score: %.2f\n", students[i].score);
return;
}
}
printf("Student not found!\n");
}
void delete_student(Student *students, int *num_students) {
if (*num_students == 0) {
printf("No students found!\n");
return;
}
int delete_id;
printf("Enter student ID: ");
scanf("%d", &delete_id);
for (int i = 0; i < *num_students; i++) {
if (students[i].id == delete_id) {
for (int j = i; j < *num_students - 1; j++) {
students[j] = students[j+1];
}
(*num_students)--;
printf("Student deleted!\n");
return;
}
}
printf("Student not found!\n");
}
```
这个学生成绩管理系统可以添加、打印、搜索和删除学生信息。在添加学生时,使用了指针来操作 `num_students` 变量,以便在函数内部修改它的值,并在函数调用结束后保留修改。在搜索和删除学生时,也使用了指针来操作 `num_students` 变量,以便在删除学生时更新它的值。