------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
/*
编写一个学生管理系统程序,用来记录学生的信息(包括姓名、年龄、性别、学号、分数),提供增加、删除、查询学生信息的入口。(C语言)
*/
#include <stdio.h>
#include <string.h>
//声明函数
void zengJia();
void shanChu();
void chaXun();
void shanChuXueHao();
void shanChuXingMing();
void xuanZeCaoZuo();
void chaXunFenShu();
void chaXunXingMing();
void chaXunXueHao();
//定义性别信息
char women[] ="女人";
char man[]="男人";
char yao[]="人妖";
//定义结构体别名学生类
typedef struct a{
char Name[10];
int Age;
char Sex[10];
int Nunber;
float Score;
}xueShengXingXi;
xueShengXingXi xx[100];
xueShengXingXi kong;
// 定义学生每个人的信息,上限为100;
static int n = 0;
int main() {
@autoreleasepool {
// 提示信息
printf("\t\t\t****欢迎打开学生管理系统程序****\n");
printf("\t\t\t**** 请输入要操作的内容 ****\n");
printf("\t\t\t**** 按1增加学生信息 ****\n");
printf("\t\t\t**** 按2删除学生信息 ****\n");
printf("\t\t\t**** 按3查询学生信息 ****\n");
// 定义保存用户输入的信息
int n;
// 接受用户信息
scanf("%d",&n);
// 避免死循环暂停一下
getchar();
// 判断用户输入的信息是否正确 n>0 && n<4
if(n>0 && n<4) {
switch (n) {
// 判断为1时,调用增加学生信息函数
case 1:
zengJia();
break;
// 判断为2时,调用删除学生信息函数
case 2:
shanChu();
break;
// 判断为3时,调用查询学生信息函数
case 3:
chaXun();
break;
default:
break;
}
// 输入错误,返回并从新输入并提醒
}else{
printf("输入错误请输入1~3,按回车结束");
main();
}
}
return 0;
}
//增加学生函数
void zengJia(){
if (n<100) {
// 提示用户增加姓名
printf("请输入学生名字%d\n",n);
//
scanf("%s",xx[n].Name);
// 提示用户增加性别
printf("请输入性别:1.女人 2.男人 3.人妖\n");
// 定义保存选择变量;
int i;
// 保持用户选择变了;
scanf("%d",&i);
// 判断用户选择性别;
while (i>3 ||i<=0) {
// 提示用户输入错误;
printf("你输入选择性别有误,请重新输入性别:1.女人 2.男人 3.人妖");
// 重新接受用户选择性别
scanf("%d",&i);
// 避免死循环
getchar();
}
// 判断用户选择的性别;
switch (i) {
case 1:
// 1:女人
strcpy(xx[n].Sex,women);
break;
case 2:
// 2:男人
strcpy(xx[n].Sex,man);
break;
case 3:
// 3:妖
strcpy(xx[n].Sex,yao);
break;
default:
break;
}
// 提示用户增加年龄
printf("请输入学生年龄:10~40\n");
// 接受用户输入的年龄;
scanf("%d",&i);
// 判断用户输入年龄是否有误
while (i<10 || i>30) {
// 提示用户输入年龄有误
printf("对不是你输入的年龄有误,请输入学生年龄:10~40\n");
// 重新接受用户输入的年龄;
scanf("%d",&i);
// 避免死循环
getchar();
}
// 保存用户输入年龄信息
xx[n].Age=i;
// 提示用户增加分数
printf("请输入学生分数\n");
// 接受用户输入的分数
scanf("%f",&xx[n].Score);
// 判断用户输入的分数是否0~100之间
while (xx[n].Score>100 || xx[n].Score<0) {
// 提示用户输入有误
printf("输入有误,请重新输入学生0~100之间的分数\n");
// 重新接受用户输入的分数
scanf("%f",&xx[n].Score);
// 避免死循环
getchar();
}
// 提示用户增加学号
printf("请输入学生学号:1~100之间\n");
// 接受学生学号
scanf("%d",&xx[n].Nunber);
// 判断学生学号是否输入有误 1~100之间
while (xx[n].Nunber < 1 ||xx[n].Nunber > 100) {
// 提示用户输入有误
printf("输入有误,请重新输入学生学号:1~100之间\n");
// 重新接受用户输入的学号
scanf("%d",&xx[n].Nunber);
// 避免死循环
getchar();
}
// 遍历学号
for (int i =0; i < n; i++) {
// 判断学生学号是否重复
while (xx[i].Nunber == xx[n].Nunber) {
// 提示输入有误
printf("你输入的学生号与其他学生号重复,请输入正确的学生号");
//