/**
*编写一个学生管理系统程序,用来记录学生的信息(包括姓名、年龄、性别、学号、分数),提供增加、删除、查询学生信息的入口。
*/
#import <Foundation/Foundation.h>
//声明自定义的方法
void addStudent();
void removeStudent();
void selectStudent();
//定义一个存放学生信息的结构体,并定义一个结构体对象数组
struct Student{
char name[10];
int age;
char sex[10];
int number;
float score;
}students[100];
//全局变量,用来记录学生的序号
int i = 0;
int main(int argc, const char * argv[]) {
//设置一个循环,使程序可以一直运行
while (true) {
//定义一个接收输入操作的变量
int n;
//输出提示信息
printf("1.增加学生信息\n");
printf("2.删除学生信息\n");
printf("3.查询学生信息\n");
printf("4.退出系统\n");
//接收从键盘输入的值给n
scanf("%d",&n);
//根据n的值进行方法的调用
switch (n) {
case 1:
//增加学生信息
addStudent();
break;
case 2:
//删除学生信息
removeStudent();
break;
case 3:
//查找学生信息
selectStudent();
break;
//没按要求输入,需重新输入值
default:
printf("输入有误,请重新输入");
break;
}
}
return 0;
}
//增加学生信息的方法
void addStudent(){
//提示信息
printf("请输入学生的姓名:");
//接收姓名
scanf("%s",students[i].name);
//提示信息
printf("请输入学生的年龄:");
//接收年龄
scanf("%d",&students[i].age);
//判断学生的年龄是否在5~30之间,不再的话则需重新输入
while (students[i].age < 5 || students[i].age>30) {
printf("你输入的年龄有误,请重新输入(5~30):");
getchar();
scanf("%d",&students[i].age);
}
//提示信息
printf("请输入学生的性别:");
//接收性别
scanf("%s",students[i].sex);
//判断学生的性别是否为"man"或"woman",如果不是则需重新输入
while (strcmp("man", students[i].sex) != 0&& strcmp("woman", students[i].sex) != 0) {
printf("你输入的性别有误,请重新输入(man或woman):");
getchar();
scanf("%s",students[i].sex);
}
//提示信息
printf("请输入学生的学号:");
//接收学号
scanf("%d",&students[i].number);
//判断学生学号,如果不再0~100则需重新输入
while (students[i].number < 0 || students[i].number>100) {
printf("你输入的学号有误,请重新输入(0~100):");
getchar();
scanf("%d",&students[i].number);
}
//提示信息
printf("请输入学生的分数:");
//接收成绩
scanf("%f",&students[i].score);
//判断学生成绩,如果不是0~100则需重新输入
while (students[i].score < 0 || students[i].score>100) {
printf("你输入的分数有误,请重新输入(0~100):");
getchar();
scanf("%f",&students[i].score);
}
//全局变量i每增加一条学生信息加1
i++;
}
//删除学生信息方法
void removeStudent(){
//定义接收要删除学生的标号
int m;
//先查找下,使在删之前可以知道当前学生的信息
selectStudent();
//如果有学生信息则可以执行删除操作
if (i>0) {
//提示信息
printf("请选择要删除的序号:");
//接收要删除学生的标号
scanf("%d",&m);
//循环,使删除当前学生的后面信息放入到删除学生所在的位置
for (int j=m; j<=i; j++) {
//后面学生信息赋值给删除学生的位置
students[j] = students[j+1];
}
//全局变量i每删除一条学生信息-1
i--;
}
}
//查找学生信息方法
void selectStudent(){
//如果没有学生,则输出提示信息
if (i==0) {
printf("当前无学生信息!\n");
//如果有学生信息,则输出学生的标号和学生的各个信息
}else{
for (int j=0; j<i; j++) {
printf("%d---姓名:%s,年龄:%d,性别:%s,学号:%d,分数:%f\n",j,students[j].name,students[j].age,students[j].sex,students[j].number,students[j].score);
}
}
} |
|