学生管理系统
建立三个文件 ,mymain.c list.c list .h
mymain.c
#include "list.h"
int main(){
student stu[MAX];
student *s = stu;
int choice;
while (1) {
printf("------学生管理系统------\n");
printf("1. 添加学生信息\n");
printf("2. 删除学生信息\n");
printf("3. 修改学生信息\n");
printf("4. 查询学生信息\n");
printf("5. 最高成绩学生\n");
printf("6. 学生平均成绩\n");
printf("7. 学生成绩排序\n");
printf("8. 显示学生信息\n");
printf("9. 退出\n");
printf("请输入你的选择: ");
scanf("%d", &choice);
switch (choice){
case 1:addstu(s);break;
case 2:deletestu(s);break;
case 3:updatestu(s);break;
case 4:querystu(s);break;
case 5:Maxstu(s);break;
case 6:Avgstu(s);break;
case 7:Sortstu(s);break;
case 8:showAll(s);break;
case 9: return 0;
default : printf("输入错误!");break;
}
}
return 0;
}
list.c
#include "list.h"
int stu_count = 0;
int addstu(student *s){
printf("请输入学生ID:");
scanf("%d",&(s+stu_count)->id);
printf("请输入学生姓名:");
scanf("%s",(s+stu_count)->name);
printf("请输入学生年龄:");
scanf("%d",&(s+stu_count)->age);
printf("请输入学生性别:");
scanf("%s",(s+stu_count)->sex);
printf("请输入学生成绩:");
scanf("%f",&(s+stu_count)->grade);
if(stu_count!=0){
for(int i=0;i<stu_count;i++){
if((s+i)->id == (s+stu_count)->id){
printf("ID重复,请重新选择");
return -1;
}
}
}
stu_count++;
return 0;
}
int deletestu(student *s){
int found = 0;
int id;
printf("请输入需要删除的学生ID:");
scanf("%d",&id);
for(int i=0;i<stu_count;i++){
if((s+i)->id == id){
found = 1;
for(int j=i;j<stu_count;j++){
*(s+j)=*(s+j+1);
}
stu_count--;
printf("学生信息删除成功!\n");
break;
}
}
if(found != 1){
printf("未找到id为%d的学生!\n",id);
}
}
int updatestu(student *s){
int found = 0,id,age;
char name[20];
char sex[10];
float grade;
printf("请输入需要修改信息的学生ID:");
scanf("%d",&id);
for(int i=0;i<stu_count;i++){
if((s+i)->id == id){
found = 1;
printf("请输入学生姓名:");
scanf("%s",name);
strcpy((s+i)->name,name);
printf("请输入学生年龄:");
scanf("%d",&age);
(s+i)->age = age;
printf("请输入学生性别:");
scanf("%s",sex);
strcpy((s+i)->sex,sex);
printf("请输入学生成绩:");
scanf("%f",&grade);
(s+i)->grade = grade;
printf("学生信息修改成功!\n");
break;
}
}
if(found != 1){
printf("未找到id为%d的学生!\n",id);
}
}
int querystu(student *s){
int found = 0;
char name[20];
printf("请输入查询学生姓名:");
scanf("%s",name);
for(int i=0;i<stu_count;i++){
if( (strcmp((s+i)->name,name)) == 0){
found = 1;
printf("%s的学生信息:\n",(s+i)->name);
printf("--------------\n");
printf("|ID :%d |\n",(s+i)->id);
printf("|姓名 :%s |\n",(s+i)->name);
printf("|年龄 :%d |\n",(s+i)->age);
printf("|性别 :%s |\n",(s+i)->sex);
printf("|总分 :%.2f|\n",(s+i)->grade);
printf("--------------\n");
break;
}
}
if(found != 1){
printf("未找到%s学生!\n",name);
}
}
int Maxstu(student *s){
int max = 0;
for(int i=0;i<stu_count;i++){
if((s+i)->grade > (s+max)->grade){
max = i;
}
}
printf("最高成绩学生信息:\n");
printf("--------------\n");
printf("|ID :%d |\n",(s+max)->id);
printf("|姓名 :%s |\n",(s+max)->name);
printf("|年龄 :%d |\n",(s+max)->age);
printf("|性别 :%s |\n",(s+max)->sex);
printf("|总分 :%.2f|\n",(s+max)->grade);
printf("--------------\n");
}
int Avgstu(student *s){
float sum = 0;
for(int i=0;i<stu_count;i++){
sum += (s+i)->grade;
}
printf("学生平均成绩为:%.2f\n",sum/stu_count);
}
int Sortstu(student *s){
int i,j;
student t;
for(i=0;i<stu_count-1;i++){
for(j=0;j<stu_count-i-1;j++){
if((s+j)->grade < (s+j+1)->grade ){
t = *(s+j);
*(s+j) = *(s+j+1);
*(s+j+1) = t;
}
}
}
printf("排序完成!\n");
showAll(s);
}
int showAll(student *s){
if (stu_count == 0) {
printf("没有学生信息!\n");
} else {
for (int i = 0; i < stu_count; i++) {
printf("--------------\n");
printf("|ID :%d |\n",(s+i)->id);
printf("|姓名 :%s |\n",(s+i)->name);
printf("|年龄 :%d |\n",(s+i)->age);
printf("|性别 :%s |\n",(s+i)->sex);
printf("|总分 :%.2f|\n",(s+i)->grade);
printf("--------------\n");
}
}
}
list.h
#ifndef _LIST_H_
#define _LIST_H_
#include <myhead.h>
#define MAX 100
typedef struct student{
int id;
char name[20];
int age;
char sex[10];
float grade;
}student;
int addstu(student *);
int showAll(student *);
int deletestu(student *);
int updatestu(student *);
int querystu(student *);
int Maxstu(student *);
int Avgstu(student *);
int Sortstu(student *);
#endif
运行结果
添加学生信息
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b35f813063664cf28a38d562ed6dcbf8.png)
删除学生信息
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/09e5b5b6bb154306af6a5a900c7d048c.png)
修改学生信息
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7e63691b9083485a8ab5b28e047d03a6.png)
查询学生信息
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/101c406082294e4a9a5add578b7e3e92.png)
学生最高成绩
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a17728e11776471e9a9786e8edcdd8fb.png)
学生成绩平均值
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/08aeb81c2d8c4c508bc06c7190a099db.png)
按学生成绩降序排列
![降序排列](https://i-blog.csdnimg.cn/direct/675716a2d8da455fb013d88b28a31294.png)
查询全部学生信息
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b58cceb8fa8e4e579a1451996c24d289.png)