班级成绩管理系统 (1)利用结构体和简单的链表,实现一个班学生成绩的管理。 (2)成绩管理功能包括:输入、输出,利用new和delete运算符添加/删除学生信息。
时间: 2023-03-30 11:04:28 浏览: 99
我可以回答这个问题。班级成绩管理系统可以使用结构体和链表来实现。可以定义一个结构体来存储学生的信息,包括学生的姓名、学号和成绩等。然后使用链表来存储所有学生的信息,并且可以使用new和delete运算符来添加或删除学生信息。通过输入和输出功能,可以方便地管理班级学生成绩。
相关问题
用c++语音写一个班级成绩管理系统的代码,要求 (1)利用结构体和简单的链表,实现一个班学生成绩的管理。 (2)成绩管理功能包括:输入、输出,利用new和delete运算符添加/删除学生信息。
好的,以下是班级成绩管理系统的代码:
#include <stdio.h>
#include <stdlib.h>
#define MAX_NAME_LEN 20
// 学生信息结构体
typedef struct student {
char name[MAX_NAME_LEN]; // 学生姓名
int score; // 学生成绩
struct student *next; // 指向下一个学生的指针
} Student;
// 添加学生信息
void add_student(Student **head) {
Student *new_student = (Student *) malloc(sizeof(Student));
printf("请输入学生姓名:");
scanf("%s", new_student->name);
printf("请输入学生成绩:");
scanf("%d", &new_student->score);
new_student->next = *head;
*head = new_student;
}
// 删除学生信息
void delete_student(Student **head) {
char name[MAX_NAME_LEN];
printf("请输入要删除的学生姓名:");
scanf("%s", name);
Student *prev = NULL;
Student *curr = *head;
while (curr != NULL) {
if (strcmp(curr->name, name) == ) {
if (prev == NULL) {
*head = curr->next;
} else {
prev->next = curr->next;
}
free(curr);
printf("删除成功!\n");
return;
}
prev = curr;
curr = curr->next;
}
printf("未找到该学生!\n");
}
// 输出学生信息
void print_student(Student *student) {
printf("姓名:%s,成绩:%d\n", student->name, student->score);
}
// 输出所有学生信息
void print_all_students(Student *head) {
printf("所有学生信息如下:\n");
Student *curr = head;
while (curr != NULL) {
print_student(curr);
curr = curr->next;
}
}
int main() {
Student *head = NULL;
int choice;
while (1) {
printf("请选择操作:\n");
printf("1. 添加学生信息\n");
printf("2. 删除学生信息\n");
printf("3. 输出所有学生信息\n");
printf("4. 退出程序\n");
scanf("%d", &choice);
switch (choice) {
case 1:
add_student(&head);
break;
case 2:
delete_student(&head);
break;
case 3:
print_all_students(head);
break;
case 4:
return ;
default:
printf("无效的选择!\n");
}
}
return ;
}
优化以下代码,要求:班级成绩管理系统 (1)利用结构体和简单的链表,实现一个班学生成绩的管理,至少可以输入20个学生的成绩。 (2)成绩管理功能包括:输入、输出,利用new和delete运算符添加和删除班级成绩 (1)利用结构体和简单的链表(关于链表的知识,自己查阅资料学习),实现一个班学生成绩的管理。#include<stdio.h> #include<iostream> #include<windows.h> using namespace std; typedef struct student { char name[20]; int score; student* next; }stu; stu* head; void input() { stu* p1, * p2; p1 = (stu*)new stu; head = p1; while (p1 != NULL) { cout << "输入姓名" << endl; cin >> p1->name; cout << "输入成绩" << endl; cin >> p1->score; cout << "是否继续输入?(1.是 2.否)"; int a; cin >> a; if (a == 1) { p2 = p1; p1 = (stu*)new stu; p2->next = p1; continue; } else if (a == 2) { p1->next = NULL; break; } } } void listprint() { stu* p1 = head; while (p1 != NULL) { cout << 1; cout << "姓名: " << p1->name << " 成绩:" << p1->score << endl; p1 = p1->next; } } void shanchu() { char c[20]; cout << "请输入删除的学生姓名" << endl; cin >> c; stu* p1 = head, * p2; while (p1 != NULL) { p2 = p1->next; if (strcmp(p2->name, c) == 0) { p1->next = p2->next; break; }p1 = p1->next; } } int main() { int a = 0; while (1) { cout << "1.输入成绩 2.输出成绩 3.删除" << endl;cin >> a; switch (a) { case 1: { input(); system ("cls"); continue; } case 2: { listprint(); continue; } case 3: { shanchu(); continue; } default: { break; } } break; } }
以下是优化后的代码:
#include <iostream>
#include <string>
using namespace std;
struct Student {
string name;
int score;
Student* next;
};
void addStudent(Student*& head, string name, int score) {
Student* newStudent = new Student;
newStudent->name = name;
newStudent->score = score;
newStudent->next = head;
head = newStudent;
}
void deleteStudent(Student*& head, string name) {
if (head == NULL) {
return;
}
if (head->name == name) {
Student* temp = head;
head = head->next;
delete temp;
return;
}
Student* current = head;
while (current->next != NULL && current->next->name != name) {
current = current->next;
}
if (current->next == NULL) {
return;
}
Student* temp = current->next;
current->next = current->next->next;
delete temp;
}
void printStudents(Student* head) {
while (head != NULL) {
cout << head->name << " " << head->score << endl;
head = head->next;
}
}
int main() {
Student* head = NULL;
int choice;
string name;
int score;
while (true) {
cout << "1. Add student" << endl;
cout << "2. Delete student" << endl;
cout << "3. Print students" << endl;
cout << "4. Exit" << endl;
cout << "Enter your choice: ";
cin >> choice;
switch (choice) {
case 1:
cout << "Enter student name: ";
cin >> name;
cout << "Enter student score: ";
cin >> score;
addStudent(head, name, score);
break;
case 2:
cout << "Enter student name: ";
cin >> name;
deleteStudent(head, name);
break;
case 3:
printStudents(head);
break;
case 4:
return 0;
default:
cout << "Invalid choice" << endl;
}
}
return 0;
}
优化后的代码使用了指针和动态内存分配,可以更好地管理学生信息。同时,使用了switch语句来实现菜单功能,代码更加简洁易懂。
阅读全文
相关推荐
















