void addRecord() { if(studentCount==100) { printf("已达到最大学生数量,无法添加更多成绩!\n"); return; } struct Student newStudent; printf("请输入学生的学号:"); scanf("%d", &newStudent.id); printf("请输入学生的姓名:"); scanf("%s", newStudent.name); printf("请输入学生的三门课成绩,用空格分隔:"); scanf("%d %d %d",&newStudent.scores[0],&newStudent.scores[1],&newStudent.scores[2]); newStudent.average =(float)(newStudent.scores[0]+newStudent.scores[1]+newStudent.scores[2])/3; students[studentCount]=newStudent; studentCount++; printf("成绩添加成功!\n"); }的算法思想
时间: 2023-06-27 14:04:37 浏览: 60
该函数的算法思想为:
1. 判断学生数量是否达到上限100,如果达到,输出提示信息并结束函数。
2. 定义一个新的学生结构体变量newStudent。
3. 分别输入新学生的学号、姓名和三门课成绩(使用scanf函数)。
4. 计算新学生的平均成绩(三门课成绩之和除以3)。
5. 将新学生的信息添加到学生数组students中,并将学生数量studentCount加1。
6. 输出添加成功的提示信息。
该算法实现了添加学生的功能,通过输入学生的信息,将学生的信息存储在一个结构体数组中。
相关问题
创建一个c语言程序学生成绩管理系统包括添加学生成绩,查询学生成绩,更新学生成绩,统计学生成绩,输出学生成绩,退出系统
好的,以下是一个简单的 C 语言学生成绩管理系统的代码示例,包括添加学生成绩,查询学生成绩,更新学生成绩,统计学生成绩,输出学生成绩,退出系统等功能。
```
#include <stdio.h>
#include <stdlib.h>
struct student {
char name[50];
int roll;
float marks;
} s;
void addRecord() {
FILE *fptr;
fptr = fopen("database.txt", "a");
printf("Enter name: ");
scanf("%s", s.name);
printf("Enter roll number: ");
scanf("%d", &s.roll);
printf("Enter marks: ");
scanf("%f", &s.marks);
fprintf(fptr, "%s %d %.2f\n", s.name, s.roll, s.marks);
fclose(fptr);
}
void searchRecord() {
FILE *fptr;
int r, flag = 0;
fptr = fopen("database.txt", "r");
printf("Enter roll number to search: ");
scanf("%d", &r);
while (fscanf(fptr, "%s %d %f\n", s.name, &s.roll, &s.marks) != EOF) {
if (s.roll == r) {
printf("Name: %s\nRoll number: %d\nMarks: %.2f\n", s.name, s.roll, s.marks);
flag = 1;
}
}
fclose(fptr);
if (flag == 0) {
printf("Record not found!\n");
}
}
void updateRecord() {
FILE *fptr, *fptr2;
int r, flag = 0;
fptr = fopen("database.txt", "r");
fptr2 = fopen("temp.txt", "w");
printf("Enter roll number to update: ");
scanf("%d", &r);
while (fscanf(fptr, "%s %d %f\n", s.name, &s.roll, &s.marks) != EOF) {
if (s.roll == r) {
printf("Enter new name: ");
scanf("%s", s.name);
printf("Enter new marks: ");
scanf("%f", &s.marks);
fprintf(fptr2, "%s %d %.2f\n", s.name, s.roll, s.marks);
flag = 1;
}
else {
fprintf(fptr2, "%s %d %.2f\n", s.name, s.roll, s.marks);
}
}
fclose(fptr);
fclose(fptr2);
remove("database.txt");
rename("temp.txt", "database.txt");
if (flag == 0) {
printf("Record not found!\n");
}
}
void countRecord() {
FILE *fptr;
int count = 0;
float total = 0, avg;
fptr = fopen("database.txt", "r");
while (fscanf(fptr, "%s %d %f\n", s.name, &s.roll, &s.marks) != EOF) {
count++;
total += s.marks;
}
fclose(fptr);
avg = total / count;
printf("Total students: %d\n", count);
printf("Average marks: %.2f\n", avg);
}
void displayRecord() {
FILE *fptr;
fptr = fopen("database.txt", "r");
printf("Name\tRoll\tMarks\n");
while (fscanf(fptr, "%s %d %f\n", s.name, &s.roll, &s.marks) != EOF) {
printf("%s\t%d\t%.2f\n", s.name, s.roll, s.marks);
}
fclose(fptr);
}
int main() {
int ch;
while (1) {
printf("\n1. Add record\n");
printf("2. Search record\n");
printf("3. Update record\n");
printf("4. Count record\n");
printf("5. Display record\n");
printf("6. Exit\n");
printf("Enter your choice: ");
scanf("%d", &ch);
switch (ch) {
case 1:
addRecord();
break;
case 2:
searchRecord();
break;
case 3:
updateRecord();
break;
case 4:
countRecord();
break;
case 5:
displayRecord();
break;
case 6:
exit(0);
default:
printf("Invalid choice!\n");
}
}
return 0;
}
```
注意:该程序只是一个简单的示例,实际应用中还需要进行错误处理、数据验证等工作。
1.添加学生成绩记录 2.显示学生成绩记录 3.查找学生成绩记录 4.删除学生成绩记录 5.保存学生成绩记录 6.导出学生成绩记录 0.退出学生成绩管理系统
好的,下面是一个简单的学生成绩管理系统的 C++ 代码框架,包括上述功能,你可以参考一下:
```c++
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// 学生信息结构体
struct Student {
string name; // 姓名
int id; // 学号
float score; // 成绩
};
// 学生成绩管理系统类
class ScoreManagementSystem {
public:
ScoreManagementSystem();
~ScoreManagementSystem();
void addRecord(); // 添加学生记录
void showRecord(); // 显示学生记录
void findRecord(); // 查找学生记录
void deleteRecord(); // 删除学生记录
void saveRecord(); // 保存学生记录
void exportRecord(); // 导出学生记录
void exitSystem(); // 退出系统
private:
vector<Student> students; // 学生信息数组
};
// 构造函数
ScoreManagementSystem::ScoreManagementSystem() {
ifstream file("score.txt");
if (file.is_open()) {
Student student;
while (file >> student.name >> student.id >> student.score) {
students.push_back(student);
}
file.close();
}
}
// 析构函数
ScoreManagementSystem::~ScoreManagementSystem() {
saveRecord();
}
// 添加学生记录
void ScoreManagementSystem::addRecord() {
Student student;
cout << "请输入姓名:";
cin >> student.name;
cout << "请输入学号:";
cin >> student.id;
cout << "请输入成绩:";
cin >> student.score;
students.push_back(student);
cout << "添加成功!" << endl;
}
// 显示学生记录
void ScoreManagementSystem::showRecord() {
if (students.empty()) {
cout << "暂无记录!" << endl;
}
else {
cout << "姓名\t学号\t成绩" << endl;
for (auto s : students) {
cout << s.name << "\t" << s.id << "\t" << s.score << endl;
}
}
}
// 查找学生记录
void ScoreManagementSystem::findRecord() {
int id;
cout << "请输入要查找的学生学号:";
cin >> id;
auto it = find_if(students.begin(), students.end(), [id](Student s) { return s.id == id; });
if (it == students.end()) {
cout << "未找到该学生!" << endl;
}
else {
cout << "姓名\t学号\t成绩" << endl;
cout << it->name << "\t" << it->id << "\t" << it->score << endl;
}
}
// 删除学生记录
void ScoreManagementSystem::deleteRecord() {
int id;
cout << "请输入要删除的学生学号:";
cin >> id;
auto it = find_if(students.begin(), students.end(), [id](Student s) { return s.id == id; });
if (it == students.end()) {
cout << "未找到该学生!" << endl;
}
else {
students.erase(it);
cout << "删除成功!" << endl;
}
}
// 保存学生记录
void ScoreManagementSystem::saveRecord() {
ofstream file("score.txt");
for (auto s : students) {
file << s.name << " " << s.id << " " << s.score << endl;
}
file.close();
}
// 导出学生记录
void ScoreManagementSystem::exportRecord() {
ofstream file("score.csv");
file << "姓名,学号,成绩" << endl;
for (auto s : students) {
file << s.name << "," << s.id << "," << s.score << endl;
}
file.close();
cout << "导出成功!" << endl;
}
// 退出系统
void ScoreManagementSystem::exitSystem() {
exit(0);
}
int main() {
ScoreManagementSystem system;
int choice;
do {
cout << "请选择功能:\n1.添加学生成绩记录\n2.显示学生成绩记录\n3.查找学生成绩记录\n4.删除学生成绩记录\n5.保存学生成绩记录\n6.导出学生成绩记录\n0.退出学生成绩管理系统\n";
cin >> choice;
switch (choice) {
case 1:
system.addRecord();
break;
case 2:
system.showRecord();
break;
case 3:
system.findRecord();
break;
case 4:
system.deleteRecord();
break;
case 5:
system.saveRecord();
break;
case 6:
system.exportRecord();
break;
case 0:
system.exitSystem();
break;
default:
cout << "输入有误,请重新选择!" << endl;
break;
}
} while (choice != 0);
return 0;
}
```
这个代码框架包含了一个学生信息结构体和一个学生成绩管理系统类。其中,构造函数从文件中读取之前保存的学生信息,析构函数在程序结束时将当前的学生信息保存到文件中。每个成员函数实现了一个具体的功能。在主函数中,我们通过循环不断接收用户的选择,并调用相应的成员函数实现相应的功能。你可以根据自己的需求进行修改和完善。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)