⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 student.cpp

📁 学生信息管理系统
💻 CPP
字号:
#include<stdio.h> /*引用库函数*/ 
#include<stdlib.h> 
#include<ctype.h> 
#include<string.h> 
typedef struct /*定义结构体数组*/ 
{ 
int num; /*学号*/ 
char name[20]; /*姓名*/ 
char born_place[20];//出生地 
char sex[20];//性别 
int score; /*成绩*/ 
}Student; 
Student stu[80]; /*结构体数组变量*/ 
int menu_select() /*菜单函数*/ 
{ 
char c; 
do 
{ 
system("cls"); /*运行前清屏*/ 
printf("\t\t****学生信息管理系统****\n"); /*菜单选择*/ 
printf("\t\t | 1. 输入档案 |\n"); 
printf("\t\t | 2. 显示所有档案 |\n"); 
printf("\t\t | 3. 插入新档案 |\n"); 
printf("\t\t | 4. 删除档案 |\n"); 
printf("\t\t | 5. 查询 |\n"); 
printf("\t\t | 6. 排序 |\n"); 
printf("\t\t | 7. 修改 |\n"); 
printf("\t\t | 8. 查看最高分,最低分,平均值 |\n"); 
printf("\t\t | 0. 退出 |\n"); 
printf("\t\t*****************************************\n"); 
printf("\t\t\t输入你的选择(0-8):"); 
c=getchar(); /*读入选择*/ 
}while(c<'0'||c>'8'); 
return(c-'0'); /*返回选择*/ 
} 
int Input(Student stud[],int n) /*输入若干条记录*/ 
{ 
int i=0; 
char sign,x[10]; /*x[10]为清除多余的数据所用*/ 
while(sign!='n'&&sign!='N') /*判断*/ 
{ 
printf("\t\t\t学号:"); /*交互输入*/ 
scanf("\t\t\t%d",&stud[n+i].num); 
printf("\t\t\t姓名:"); 
scanf("\t\t\t%s",stud[n+i].name); 
printf("\t\t\t出生地:"); 
scanf("\t\t\t%s",stud[n+i].born_place); 
printf("\t\t\t性别:"); 
scanf("\t\t\t%s",stud[n+i].sex); 
printf("\t\t\t成绩:"); 
scanf("\t\t\t%d",&stud[n+i].score); 
gets(x); /*清除多余的输入*/ 
printf("\t\t\t是否还要继续输入?(Y/N)"); 
scanf("\t\t\t%c",&sign); /*输入判断*/ 
i++; 
} 
return(n+i); 
} 
int Delete_a_record(Student stud[],int n) /*按姓名查找,删除一条记录*/ 
{ 
char s[20]; 
int i=0,j; 
int a=0,b=0; 
printf("\t\t\t输入要删除的姓名:"); /*交互式问寻*/ 
scanf("%s",s); 
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/ 
if(i==n) 
{ 
printf("\t\t\t没有发现!\n"); /*返回失败信息*/ 
return(n); 
} 
for(j=i;j<n-1;j++) /*删除操作*/ 
{ 
b=stud[j+1].num; 
stud[j].num=b; 
//strcpy(stud[j].num,stud[j+1].num); 
strcpy(stud[j].name,stud[j+1].name); 
strcpy(stud[j].born_place,stud[j+1].born_place); 
strcpy(stud[j].sex,stud[j+1].sex); 
a=stud[j+1].score ; 
stud[j].score=a; 
} 
printf("\t\t\t删除成功!\n"); /*返回成功信息*/ 
return(n-1); 
} 
void Query_a_record(Student stud[],int n) /*查找并显示一个记录*/ 
{ 
char s[20]; 
int i=0; 
printf("\t\t\t请输入姓名:"); /*交互式输入*/ 
scanf("\t\t\t%s",s); 
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/ 
if(i==n) 
{ 
printf("\t\t\t没有发现!\n"); /*输入失败信息*/ 
return; 
} 
printf("\t\t学号:%d\n",stud[i].num); 
printf("\t\t姓名:%s\n",stud[i].name); 
printf("\t\t出生地:%s\n",stud[i].born_place); 
printf("\t\t性别:%s\n",stud[i].sex); /*输出该学生信息*/ 
printf("\t\t成绩:%d\n",stud[i].score); 
} 
void Display(Student stud[],int n) /*显示所有记录*/ 
{ 
int i; 
printf("\t\t\t-----------------------------------\n"); /*格式头*/ 
printf("\t\t\t学生信息\n"); 
printf("\t\t\t-----------------------------------\n"); 
printf("\t\t学号\t姓名\t出生地\t\t性别\t\t成绩\n"); 
printf("\t\t\t-----------------------------------\n"); 
for(i=1;i<n+1;i++) /*循环输入*/ 
{ 
printf("\t\t%-6d% -15s%-12s%-15s%-12d\n",stud[i-1].num,stud[i-1].name,stud[i-1].born_place,stud[i-1].sex,stud[i-1].score); 
if(i>1&&i%10==0) /*每十个暂停*/ 
{ 
printf("\t\t\t-----------------------------------\n"); /*格式*/ 
printf("\t\t\t"); 
system("pause"); 
printf("\t\t\t-----------------------------------\n"); 
} 
} 
printf("\t\t\t"); 
system("pause"); 
} 

int Insert_a_record(Student stud[],int n) /*插入一条记录*/ 
{ 
int i=0; 
char sign,x[10]; /*x[10]为清除多余的数据所用*/ 
while(sign!='n'&&sign!='N') /*判断*/ 
{ 
printf("\t\t\t学号:"); /*交互输入*/ 
scanf("\t\t\t%d",&stud[n+i].num); 
printf("\t\t\t姓名:"); 
scanf("\t\t\t%s",stud[n+i].name); 
printf("\t\t\t出生地:"); 
scanf("\t\t\t%s",stud[n+i].born_place); 
printf("\t\t\t性别:"); 
scanf("\t\t\t%s",stud[n+i].sex); 
printf("\t\t\t成绩:"); 
scanf("\t\t\t%d",&stud[n+i].score); 
gets(x); /*清除多余的输入*/ 
printf("\t\t\t是否还要继续输入?(Y/N)"); 
scanf("\t\t\t%c",&sign); /*输入判断*/ 
i++; 
} 
return(n+i); 
} 

void Sort_by_num(Student stud[],int n) /*按学号排序*/ 
{ 
int s=0; 
int a=0,b=0; 
printf("\t\t | 请选择你要的排序方式 |\n"); 
printf("\t\t | 1. 按学号排序 |\n"); 
printf("\t\t | 2. 按成绩排序 |\n"); 
printf("\t\t*****************************************\n"); 
printf("\t\t\t输入你的选择(1-2):"); 
scanf("%d",&s); 
int i=0,j=0;//,*p,*q,s; 
int x=0; 
char t[10]; 
//for(i=0;i<n-1;i++) /*冒泡法排序*/ 
//for(j=0;j<n-1-i;j++) 


for(i=0;i<n-1;i++) /*冒泡法排序*/ 
{ 
for(j=0;j<n-1-i;j++) 
{ 
if(s==1&&stud[j].num-stud[j+1].num>0) 
{ 
b=stud[j+1].num; 
stud[j+1].num=stud[j].num; 
stud[j].num=b; 

strcpy(t,stud[j+1].name); 
strcpy(stud[j+1].name,stud[j].name); 
strcpy(stud[j].name,t); 
strcpy(t,stud[j+1].born_place); 
strcpy(stud[j+1].born_place,stud[j].born_place); 
strcpy(stud[j].born_place,t); 
strcpy(t,stud[j+1].sex); 
strcpy(stud[j+1].sex,stud[j].sex); 
strcpy(stud[j].sex,t); 
// strcpy(t,stud[j+1].score); 
a=stud[j+1].score; 
// stud[j+1].score,stud[j].score; 
stud[j+1].score=stud[j].score; 
// strcpy(stud[j].score,t); 
stud[j].score=a; 
} 
else if(s==2&&stud[j+1].score-stud[j].score>0) 
{ 

b=stud[j+1].num; 
stud[j+1].num=stud[j].num; 
stud[j].num=b; 
strcpy(t,stud[j+1].name); 
strcpy(stud[j+1].name,stud[j].name); 
strcpy(stud[j].name,t); 
strcpy(t,stud[j+1].born_place); 
strcpy(stud[j+1].born_place,stud[j].born_place); 
strcpy(stud[j].born_place,t); 
strcpy(t,stud[j+1].sex); 
strcpy(stud[j+1].sex,stud[j].sex); 
strcpy(stud[j].sex,t); 
// strcpy(t,stud[j+1].score); 
a=stud[j+1].score; 
// stud[j+1].score,stud[j].score; 
stud[j+1].score=stud[j].score; 
// strcpy(stud[j].score,t); 
stud[j].score=a; 
} 
} 
} 
Display(stu,n); 
} 
void Xiugai_record(Student stud[],int n) /*修改信息*/ 
{ 
char s[20]; 
char t[500]; 
int i=0,a=0,x=0,b=0; 
printf("\t\t\t请输入姓名:"); /*交互式输入*/ 
scanf("\t\t\t%s",s); 
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/ 
if(i==n) 
{ 
printf("\t\t\t没有发现!\n"); /*输入失败信息*/ 
return; 
} 
printf("\t\t学号:%d\n",stud[i].num); 
printf("\t\t姓名:%s\n",stud[i].name); 
printf("\t\t出生地:%s\n",stud[i].born_place); 
printf("\t\t性别:%s\n",stud[i].sex); /*输出该学生信息*/ 
printf("\t\t成绩:%d\n",stud[i].score); 
printf("\t\t | 请选择你要修改的数据 |\n"); 
printf("\t\t | 1. 姓名 |\n"); 
printf("\t\t | 2. 学号 |\n"); 
printf("\t\t | 3. 出生地 |\n"); 
printf("\t\t | 4. 性别 |\n"); 
printf("\t\t | 5. 成绩 |\n"); 
printf("\t\t*****************************************\n"); 
printf("\t\t\t输入你的选择(1-5):"); 
scanf("%d",&a); 
if(a==1) 
{ 
printf("\t\t\t请输入要修改的值"); 
scanf("%s",t); 
strcpy(stud[i].name,t); 
} 
else if(a==2) 
{ 
printf("\t\t\t请输入要修改的值\n"); 
scanf("%d",&b); 
stud[i].num=b; 
} 
else if(a==3) 
{ 
printf("\t\t\t请输入要修改的值\n"); 
scanf("%s",t); 
strcpy(stud[i].born_place,t); 
} 
else if(a==4) 
{ 
printf("\t\t\t请输入要修改的值\n"); 
scanf("%s",t); 
strcpy(stud[i].sex,t); 
} 
else if(a==5) 
{ 
printf("\t\t\t请输入要修改的值\n"); 
scanf("%d",&x); 
stud[i].score=x; 
} 
} 
void Statistic(Student stud[],int n) /*新增功能,输出统计信息*/ 
{ 
int i,j=0,k=0,sum=0; 
float aver; /*成绩平均值*/ 
for(i=0;i<n;i++) /*循环输入判断*/ 
{ 
sum+=stud[i].score; 
if(stud[j].score>stud[i].score) j=i; 
if(stud[k].score<stud[i].score) k=i; 
} 
aver=1.0F*sum/n; 
printf("\t\t\t这里有 %d 数据\n",n); /*总共记录数*/ 
printf("\t\t\t最高分是:\n"); /*最高分*/ 
printf("\t\t\t学号:%d 姓名:%s 成绩:%d\n",stud[j].num,stud[j].name,stud[j].score); 
printf("\t\t\t最低分是:\n"); /*最低分*/ 
printf("\t\t\t学号:%d 姓名:%s 成绩:%d\n",stud[k].num,stud[k].name,stud[k].score); 
printf("\t\t\t平均分数是 %5.2f\n",aver); /*平均分*/ 
} 
void main() /*主函数*/ 
{ 
int n=0; 
for(;;) 
{ 
switch(menu_select()) /*选择判断*/ 
{ 
case 1: 
printf("\t\t\t输入信息\n"); /*输入若干条记录*/ 
n=Input(stu,n); 
break; 
case 2: 
printf("\t\t\t显示所有信息\n"); /*显示所有记录*/ 
Display(stu,n); 
break; 
case 3: 
//printf("\t\t\tSort\n"); 
//Insert_a_record(stu,n); /*按学号排序*/ 
n=Insert_a_record(stu,n); 
printf("\t\t\t插入成功!\n"); 
printf("\t\t\t"); 
system("pause"); 
break; 
case 4: 
printf("\t\t\t删除信息\n"); 
n=Delete_a_record(stu,n); /*按姓名查找,删除一条记录*/ 
printf("\t\t\t"); 
system("pause"); 
break; 
case 5: 
printf("\t\t\t查找\n"); 
Query_a_record(stu,n); /*查找并显示一个记录*/ 
printf("\t\t\t"); 
system("pause"); 
break; 
case 6: 
printf("\t\t\t查找\n"); 
Sort_by_num(stu,n); /*按学号排序*/ 
printf("\t\t\t"); 
system("pause"); 
break; 
case 7: 
printf("\t\t\t修改\n"); 
Xiugai_record(stu,n); /*按学号排序*/ 
printf("\t\t\t"); 
system("pause"); 
break; 
case 8: 
printf("\t\t\t平均值\n"); 
Statistic(stu,n); /*按学号排序*/ 
printf("\t\t\t"); 
system("pause"); 
break; 
case 0: 
printf("\t\t\t再见!\n"); /*结束程序*/ 
printf("\t\t\t"); 
system("pause"); 
exit(0); 
} 
} 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -