题目描述
现有人数为10的学生,用c语言设计一个学生管理系统,要求在程序中使用指针
内容包括:
1,学生的基本资料:学生姓名,性别,绩点,账号,密码。
2,要有学生的注册,登录功能,登陆后可查询学生的基本资料,学生可以修改姓名,性别,密码。不可修改绩点,账号。
3,有一个管理员账号为langwang,密码为5678,管理员账号可查询所有的学生信息,也可以修改所有学生的任何信息。
源代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 10
#define MAX_NAME_LENGTH 20
#define MAX_ACCOUNT_LENGTH 20
#define MAX_PASSWORD_LENGTH 20
// 学生结构体
typedef struct {
char name[MAX_NAME_LENGTH];
char gender;
float gpa;
char account[MAX_ACCOUNT_LENGTH];
char password[MAX_PASSWORD_LENGTH];
} Student;
// 管理员账号信息
const char adminAccount[] = "langwang";
const char adminPassword[] = "5678";
// 学生数组
Student students[MAX_STUDENTS];
// 注册学生
void registerStudent() {
int i;
for (i = 0; i < MAX_STUDENTS; i++) {
if (strlen(students[i].account) == 0) {
printf("请输入学生姓名:");
scanf("%s", students[i].name);
printf("请输入学生性别:");
scanf(" %c", &students[i].gender);
printf("请输入学生绩点:");
scanf("%f", &students[i].gpa);
printf("请输入学生账号:");
scanf("%s", students[i].account);
printf("请输入学生密码:");
scanf("%s", students[i].password);
printf("注册成功!\n");
break;
}
}
if (i == MAX_STUDENTS) {
printf("学生人数已满,无法注册新学生!\n");
}
}
// 学生登录
Student* studentLogin() {
char account[MAX_ACCOUNT_LENGTH];
char password[MAX_PASSWORD_LENGTH];
printf("请输入学生账号:");
scanf("%s", account);
printf("请输入学生密码:");
scanf("%s", password);
int i;
for (i = 0; i < MAX_STUDENTS; i++) {
if (strcmp(students[i].account, account) == 0 && strcmp(students[i].password, password) == 0) {
return &students[i];
}
}
printf("账号或密码错误,登录失败!\n");
return NULL;
}
// 修改学生信息
void modifyStudentInfo(Student* student) {
printf("请输入新的姓名:");
scanf("%s", student->name);
printf("请输入新的性别:");
scanf(" %c", &student->gender);
printf("请输入新的密码:");
scanf("%s", student->password);
printf("修改成功!\n");
}
// 查询学生信息
void queryStudentInfo(Student* student) {
printf("姓名:%s\n", student->name);
printf("性别:%c\n", student->gender);
printf("绩点:%.2f\n", student->gpa);
printf("账号:%s\n", student->account);
printf("密码:%s\n", student->password);
}
// 管理员登录
int adminLogin() {
char account[MAX_ACCOUNT_LENGTH];
char password[MAX_PASSWORD_LENGTH];
printf("请输入管理员账号:");
scanf("%s", account);
printf("请输入管理员密码:");
scanf("%s", password);
if (strcmp(account, adminAccount) == 0 && strcmp(password, adminPassword) == 0) {
return 1;
}
printf("管理员账号或密码错误,登录失败!\n");
return 0;
}
// 管理员修改学生信息
void adminModifyStudentInfo(Student* student) {
printf("请输入新的姓名:");
scanf("%s", student->name);
printf("请输入新的性别:");
scanf(" %c", &student->gender);
printf("请输入新的绩点:");
scanf("%f", &student->gpa);
printf("请输入新的账号:");
scanf("%s", student->account);
printf("请输入新的密码:");
scanf("%s", student->password);
printf("修改成功!\n");
}
// 管理员查询学生信息
void adminQueryStudentInfo(Student* student) {
printf("姓名:%s\n", student->name);
printf("性别:%c\n", student->gender);
printf("绩点:%.2f\n", student->gpa);
printf("账号:%s\n", student->account);
printf("密码:%s\n", student->password);
}
int main() {
int choice;
Student* currentStudent = NULL;
while (1) {
printf("\n--- 学生管理系统 ---\n");
printf("1. 学生注册\n");
printf("2. 学生登录\n");
printf("3. 管理员登录\n");
printf("4. 退出\n");
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
registerStudent();
break;
case 2:
currentStudent = studentLogin();
if (currentStudent != NULL) {
while (1) {
printf("\n--- 学生菜单 ---\n");
printf("1. 查询个人信息\n");
printf("2. 修改个人信息\n");
printf("3. 注销登录\n");
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
queryStudentInfo(currentStudent);
break;
case 2:
modifyStudentInfo(currentStudent);
break;
case 3:
currentStudent = NULL;
printf("注销成功!\n");
break;
default:
printf("无效的选择!\n");
}
if (currentStudent == NULL) {
break;
}
}
}
break;
case 3:
if (adminLogin()) {
while (1) {
printf("\n--- 管理员菜单 ---\n");
printf("1. 查询学生信息\n");
printf("2. 修改学生信息\n");
printf("3. 注销登录\n");
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
for (int i = 0; i < MAX_STUDENTS; i++) {
if (strlen(students[i].account) != 0) {
adminQueryStudentInfo(&students[i]);
}
}
break;
case 2:
for (int i = 0; i < MAX_STUDENTS; i++) {
if (strlen(students[i].account) != 0) {
adminModifyStudentInfo(&students[i]);
}
}
break;
case 3:
printf("注销成功!\n");
break;
default:
printf("无效的选择!\n");
}
if (choice == 3) {
break;
}
}
}
break;
case 4:
printf("感谢使用学生管理系统,再见!\n");
exit(0);
default:
printf("无效的选择!\n");
}
}
return 0;
}
这个示例代码实现了学生管理系统的基本功能,包括学生注册、登录,学生修改个人信息,管理员登录,管理员查询和修改学生信息等。通过指针传递学生结构体,可以在函数内部对学生信息进行修改。
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END