C语言编程
每个学生信息包括:学号、姓名、性别、籍贯、年龄。具体功能:
1、信息录入;
2、信息浏览;
3、信息查询(a 按籍贯查询 b按年龄查询)
4、信息排序(a 按年龄排序(从高到低)b 按姓名排序 )
5、信息统计(统计用户要求的某籍贯的学生人数)
6、信息删除(删除指定学号的学生籍贯信息)
0、 退出
该回答引用自ChatGPT:下面是一个使用C语言编写的学生信息管理程序的示例代码,实现了你提到的各项功能:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 100
typedef struct {
int studentId;
char name[50];
char gender;
char hometown[50];
int age;
} Student;
Student students[MAX_STUDENTS];
int numStudents = 0;
void inputStudentInfo();
void displayAllStudents();
void searchByHometown();
void searchByAge();
void sortByAge();
void sortByName();
void countByHometown();
void deleteByStudentId();
int main() {
int choice;
do {
printf("\n------ 学生信息管理系统 ------\n");
printf("1. 信息录入\n");
printf("2. 信息浏览\n");
printf("3. 信息查询\n");
printf("4. 信息排序\n");
printf("5. 信息统计\n");
printf("6. 信息删除\n");
printf("0. 退出\n");
printf("请输入选项:");
scanf("%d", &choice);
switch (choice) {
case 1:
inputStudentInfo();
break;
case 2:
displayAllStudents();
break;
case 3:
printf("\n------ 信息查询 ------\n");
printf("a. 按籍贯查询\n");
printf("b. 按年龄查询\n");
printf("请选择查询方式:");
scanf(" %c", &choice);
if (choice == 'a') {
searchByHometown();
} else if (choice == 'b') {
searchByAge();
} else {
printf("无效的选项!\n");
}
break;
case 4:
printf("\n------ 信息排序 ------\n");
printf("a. 按年龄排序(从高到低)\n");
printf("b. 按姓名排序\n");
printf("请选择排序方式:");
scanf(" %c", &choice);
if (choice == 'a') {
sortByAge();
} else if (choice == 'b') {
sortByName();
} else {
printf("无效的选项!\n");
}
break;
case 5:
countByHometown();
break;
case 6:
deleteByStudentId();
break;
case 0:
printf("程序已退出。\n");
break;
default:
printf("无效的选项!\n");
break;
}
} while (choice != 0);
return 0;
}
void inputStudentInfo() {
if (numStudents >= MAX_STUDENTS) {
printf("学生信息已达到上限,无法继续添加。\n");
return;
}
Student student;
printf("\n------ 信息录入 ------\n");
printf("请输入学号:");
scanf("%d", &student.studentId);
printf("请输入姓名:");
scanf("%s", student.name);
printf("请输入性别(M/F):");
scanf(" %c", &student.gender);
printf("请输入籍贯:");
scanf("%s", student.hometown);
printf("请输入年龄:");
scanf("%d", &student.age);
students[numStudents] = student;
numStudents++;
printf("学生信息录入成功!\n");
}
void displayAllStudents() {
if (numStudents == 0) {
printf("没有学生信息可显示。\n");
return;
}
printf("\n------ 信息浏览 ------\n");
for (int i = 0; i < numStudents; i++) {
Student student = students[i];
printf("学号:%d\n", student.studentId);
printf("姓名:%s\n", student.name);
printf("性别:%c\n", student.gender);
printf("籍贯:%s\n", student.hometown);
printf("年龄:%d\n", student.age);
printf("--------------------\n");
}
}
void searchByHometown() {
char searchHometown[50];
printf("请输入要查询的籍贯:");
scanf("%s", searchHometown);
printf("\n------ 按籍贯查询 ------\n");
int count = 0;
for (int i = 0; i < numStudents; i++) {
Student student = students[i];
if (strcmp(student.hometown, searchHometown) == 0) {
printf("学号:%d\n", student.studentId);
printf("姓名:%s\n", student.name);
printf("性别:%c\n", student.gender);
printf("籍贯:%s\n", student.hometown);
printf("年龄:%d\n", student.age);
printf("--------------------\n");
count++;
}
}
if (count == 0) {
printf("没有找到该籍贯的学生。\n");
} else {
printf("共找到%d个学生。\n", count);
}
}
void searchByAge() {
int searchAge;
printf("请输入要查询的年龄:");
scanf("%d", &searchAge);
printf("\n------ 按年龄查询 ------\n");
int count = 0;
for (int i = 0; i < numStudents; i++) {
Student student = students[i];
if (student.age == searchAge) {
printf("学号:%d\n", student.studentId);
printf("姓名:%s\n", student.name);
printf("性别:%c\n", student.gender);
printf("籍贯:%s\n", student.hometown);
printf("年龄:%d\n", student.age);
printf("--------------------\n");
count++;
}
}
if (count == 0) {
printf("没有找到该年龄的学生。\n");
} else {
printf("共找到%d个学生。\n", count);
}
}
void sortByAge() {
for (int i = 0; i < numStudents - 1; i++) {
for (int j = 0; j < numStudents - i - 1; j++) {
if (students[j].age < students[j + 1].age) {
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
printf("\n------ 按年龄排序(从高到低) ------\n");
displayAllStudents();
}
void sortByName() {
for (int i = 0; i < numStudents - 1; i++) {
for (int j = 0; j < numStudents - i - 1; j++) {
if (strcmp(students[j].name, students[j + 1].name) > 0) {
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
printf("\n------ 按姓名排序 ------\n");
displayAllStudents();
}
void countByHometown() {
char searchHometown[50];
printf("请输入要统计的籍贯:");
scanf("%s", searchHometown);
int count = 0;
for (int i = 0; i < numStudents; i++) {
Student student = students[i];
if (strcmp(student.hometown, searchHometown) == 0) {
count++;
}
}
printf("籍贯为%s的学生人数:%d\n", searchHometown, count);
}
void deleteByStudentId() {
int studentId;
printf("请输入要删除的学号:");
scanf("%d", &studentId);
int foundIndex = -1;
for (int i = 0; i < numStudents; i++) {
if (students[i].studentId == studentId) {
foundIndex = i;
break;
}
}
if (foundIndex == -1) {
printf("找不到学号为%d的学生。\n", studentId);
} else {
for (int i = foundIndex; i < numStudents - 1; i++) {
students[i] = students[i + 1];
}
numStudents--;
printf("学号为%d的学生信息删除成功!\n", studentId);
}
}
以上是一个简单的学生信息管理系统的C语言实现。你可以根据需要在main函数中选择相应的功能进行操作。具体功能包括信息录入、信息浏览、信息查询(按籍贯查询和按年龄查询)、信息排序(按年龄排序和按姓名排序)、信息统计和信息删除。
参考:https://blog.csdn.net/qq_45556665/article/details/104122099