c语言编辑用户登录:输入用户名和密码,三次输入错误,则自动退出系统,否则显示系统菜单然后调研 选择一个典型学生学籍(成绩)信息管理案例,实现以班为单位的学生成绩信息管理。学生成绩的基本信息包括:学号,姓名,M门课程成绩,成绩总分,平均成绩等
时间: 2023-11-27 16:03:08 浏览: 93
好的,这是一个比较复杂的问题,需要分步骤来回答。
首先,关于C语言的用户登录功能,可以使用if语句和循环语句实现。以下是一个简单的示例代码:
```
#include <stdio.h>
#include <string.h>
int main() {
char username[20], password[20];
int count = 0;
while (count < 3) {
printf("请输入用户名:");
scanf("%s", username);
printf("请输入密码:");
scanf("%s", password);
if (strcmp(username, "admin") == 0 && strcmp(password, "123456") == 0) {
printf("登录成功!\n");
// 进入系统菜单
break;
} else {
printf("用户名或密码错误,请重新输入!\n");
count++;
}
}
if (count == 3) {
printf("登录失败,系统退出!\n");
}
return 0;
}
```
上述代码中,我们使用了while循环语句来实现用户登录的三次机会限制。每次输入用户名和密码之后,使用strcmp函数比较输入的用户名和密码是否正确。如果正确,则进入系统菜单,否则输出错误提示信息,count变量加1,进入下一次循环。如果count等于3,则表示登录失败,系统退出。
接下来,我们来看如何实现以班为单位的学生成绩信息管理。这个问题可以使用结构体和数组来解决。以下是一个简单的示例代码:
```
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 100
typedef struct {
char id[20]; // 学号
char name[20]; // 姓名
int scores[5]; // 五门课程成绩
int total; // 总分
double average; // 平均分
} Student;
int main() {
Student students[MAX_STUDENTS];
int count = 0;
while (1) {
printf("--------------------\n");
printf("1. 添加学生信息\n");
printf("2. 查询学生信息\n");
printf("3. 显示所有学生信息\n");
printf("4. 退出\n");
printf("--------------------\n");
int choice;
printf("请输入选项:");
scanf("%d", &choice);
switch (choice) {
case 1: {
if (count >= MAX_STUDENTS) {
printf("学生数量已达到最大值,无法继续添加!\n");
break;
}
Student student;
printf("请输入学号:");
scanf("%s", student.id);
printf("请输入姓名:");
scanf("%s", student.name);
printf("请输入五门课程成绩:");
for (int i = 0; i < 5; i++) {
scanf("%d", &student.scores[i]);
}
student.total = 0;
for (int i = 0; i < 5; i++) {
student.total += student.scores[i];
}
student.average = (double)student.total / 5;
students[count] = student;
count++;
printf("添加成功!\n");
break;
}
case 2: {
char id[20];
printf("请输入要查询的学生学号:");
scanf("%s", id);
int index = -1;
for (int i = 0; i < count; i++) {
if (strcmp(students[i].id, id) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到该学生!\n");
} else {
printf("学号:%s\t姓名:%s\t五门课程成绩:", students[index].id, students[index].name);
for (int i = 0; i < 5; i++) {
printf("%d ", students[index].scores[i]);
}
printf("\t总分:%d\t平均分:%.2f\n", students[index].total, students[index].average);
}
break;
}
case 3: {
printf("学号\t姓名\t五门课程成绩\t总分\t平均分\n");
for (int i = 0; i < count; i++) {
printf("%s\t%s\t", students[i].id, students[i].name);
for (int j = 0; j < 5; j++) {
printf("%d ", students[i].scores[j]);
}
printf("\t%d\t%.2f\n", students[i].total, students[i].average);
}
break;
}
case 4: {
printf("退出系统!\n");
return 0;
}
default: {
printf("无效选项,请重新输入!\n");
break;
}
}
}
}
```
上述代码中,我们定义了一个Student结构体,用来存储学生的基本信息和成绩信息。在主函数中,使用一个Student类型的数组来存储所有学生的信息。当用户选择添加学生信息时,通过scanf函数依次输入学号、姓名和五门课程成绩,然后计算总分和平均分,并将学生信息存储到数组中。当用户选择查询学生信息时,通过scanf函数输入要查询的学生学号,然后在数组中查找该学生的信息并输出。当用户选择显示所有学生信息时,遍历数组中所有学生的信息并输出。当用户选择退出时,程序结束。
希望这个示例代码能够对你有所帮助!
阅读全文