解决方案 »
- oc最简单的错误,我却找不到,大神指点
- ios textfield如何实现多行输入
- Xcode不能识别罗技键盘输入的大括号~~~难道必须用APPLE键盘吗?
- 求助:修改Xcode配置使其支持创建编译iphone上的dylib工程
- UIDocumentInteractionController
- ipad上面cookie读写及共享的疑问
- iPhone软件开发包获游戏开发者欢迎
- iphone的各位牛们帮忙给点意见!
- 请问怎么实现Forward、back
- iphone播放嵌入式网页视频
- ios7 navigationbar 设置背景图片引发的问题
- IOS调用html中js函数,但是,页面启动了,函数没有执行,不知道怎么回事
#include <stdio.h>
#include<string.h>
#define N 500//结构体数组的大小void caidan();/*功能浏览表,供使用者选择功能*/
void zengjia();/*学生信息的增加*/
void shanchu();/*学生信息的删除*/
void chaxun();/*学生信息的查询*/
int leve = 0;
struct Student
{
char *name;
int age;
char sex[2];
int number;
int score;
}stu[N];
int main()
{
int leve = 0;
caidan();
}void caidan()
{
int x=0;
printf("\n\n\n\n\n\n\n\n\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");
printf("\t\t\t*******************\n");
printf("\n\t退出请输入:0\n\n\n");//输入0程序执行完毕
printf("请输入功能序号:\n");
scanf("%d",&x);
switch(x)/*每个case后均有菜单函数,功能结束后返回功能表,按88结束*/
{
case 1:zengjia();caidan();break;
case 2:shanchu(stu);caidan();break;
case 3:chaxun();caidan();break;
case 0:break;
default:printf("请输入正确的序号!");caidan() ;break;
}
}
void zengjia()
{
int q,k=1,r=1,d,b=0;/*r用来辨别信息输入是否错误,输入错误则r赋值1,没有错误则r赋值0,循环终止。初始值赋为1因为最后一次若错误则r=0*/
/*b记录@的个数*/
for(;leve<N && k==1;leve++)/*最外层循环,循环一次实现一个学生信息的录入,k控制是否继续录入下一个学生的信息*/
{
printf("请你输入第%d个学生的信息!\n",leve+1);
//getchar();
printf("请输入学生姓名:");
//stu[0].name = "小明";
//printf("\n请%s:",stu[leve].name);
scanf("%s",stu[leve].name);
//r=1;
for(q=0;r==1;q++)//年龄范围在14~30之间
{
printf("请输入学生年龄:");
scanf("%d",&stu[leve].age);
if(stu[leve].age>30||stu[leve].age<14)
{ r=1;printf("系统鉴定您输入的年龄可能有误请重输!\n");}
else r=0;
};
r=1;
getchar();
for(q=0;r==1;q++)
{
printf("请输入学生性别:");
scanf("%s",stu[leve].sex);
if(strcmp("男",stu[leve].sex)==0) /*性别只能是男或者女,判断字符是否相等*/
r=0;
else if(strcmp("女",stu[leve].sex)==0)
r=0;
else
printf("性别输入错误!\n");
};
r=1;//接着赋值为1开始下次循环,下同
for(q=0;r==1;q++)/*该层循环控制学号的输入,直到输入正确循环终止,下同*/
{
printf("请输入学生学号(学号不为0):");
scanf("%d",&stu[leve].number);
if(stu[leve].number==0)
{ r=1;printf("您输入的学号有误请重输!\n");}//学号的输入不为0
else r=0;//若输入正确将r赋为0终止循环,下同
};
r=1;
for (q = 0; r == 1; q++) {
printf("请输入学生成绩(0~100):");
scanf("%d",&stu[leve].score);
if(stu[leve].score >= 0||stu[leve].score <= 100)
r = 0;
else
{
r = 1;
printf("系统鉴定您输入的年龄可能有误请重输!\n");
}
}
printf("要继续吗?\n1.是 2.退出\n");
scanf("%d",&k);
}
}
void shanchu() //(struct student stu[N])
{
int i,s,l,k=1;/*k判断是否有要删除的学生*/
printf("请输入要删除学生的学号:");
scanf("%d",&s);
for(i=0;i<N;i++)
{
if(s==stu[i].number)
{
k=0;/*若有该学号k赋值为0*/
printf("您要删除的学生信息为:\n");
printf(" 姓 名 年龄 性别 学号 分数\n");
printf("%6s%4d%4s%4d%4d",stu[i].name,stu[i].age,stu[i].sex,stu[i].number,stu[i].score);
printf("\n");
printf("确认请按:1\n按任意键返回\n");
scanf("%d",&k);
if(k==1)
{
leve--; /*删除后已录入学生个数减一*/
for(l=i;l<N;l++)
{
strcpy(stu[l].name,stu[l+1].name);
stu[l].age=stu[l+1].age;
strcpy(stu[l].sex,stu[l+1].sex);
stu[l].number=stu[l+1].number;
stu[l].score=stu[l+1].score;
}
printf(" 姓 名 年龄 性别 学号 分数\n");
for(i=0;i<=N && stu[i].number!=0;i++)
{
printf("%6s%4d%4s%4d%4d",stu[i].name,stu[i].age,stu[i].sex,stu[i].number,stu[i].score);
printf("\n");
}
}
caidan();
}
}
if(k)/*k若未被赋值0,则说明没有需要删除的学生*/
printf("没有您要查询的学生不需要删除!");
}
void chaxun()
{
int y,z,i,word=1,nianling,geshu=0;/*y为查询菜单中的变量,z为要查询的学号,geshu记录查询结果中年龄相同或性别相同的学生个数,word用来判断是否有要查询的学生信息*/
char xingming[20],xingbie[10];
printf("\t\t*******************************\n");
printf("\t\t1.按学号查询\n");
printf("\t\t2.按姓名查询\n");
printf("\t\t3.按性别查询");
printf("\t\t4.按年龄查询\n");
printf("\t\t5.查询所有\n");
printf("\t\t*******************************\n");
printf("请输入功能序号:");
scanf("%d",&y);
switch(y)
{
case 1:printf("请输入要查询的学号:");
scanf("%d",&z);
printf(" 姓 名 年龄 性别 学号 分数\n");
for(i=0;i<N;i++)
{
if(z==stu[i].number)//由学号来寻找目标学生
{
printf("%6s%4d%4s%4d%4d",stu[i].name,stu[i].age,stu[i].sex,stu[i].number,stu[i].score);
printf("\n");
word=0;/*若有要查询的学生则word赋值0 下同*/
};
}
if(word)/*判断word的值 下同*/
printf("没有您查询的学生信息!\n");
;break;
case 2:printf("请输入要查询的姓名:");
scanf("%s",xingming);
printf(" 姓 名 年龄 性别 学号 分数\n");
for(i=0;i<N;i++)
{
if(strcmp(xingming,stu[i].name)==0)//姓名字符比较
{
printf("%6s%4d%4s%4d%4d",stu[i].name,stu[i].age,stu[i].sex,stu[i].number,stu[i].score);
printf("\n");
word=0;
};
}
if(word)
printf("没有您查询的学生信息!\n");
break;
case 3:printf("请输入要查询的性别:");
scanf("%s",xingbie);
printf(" 姓 名 年龄 性别 学号 分数\n");
for(i=0;i<N;i++)/*将结构体中信息逐一比较*/
{
if(strcmp(xingbie,stu[i].sex)==0)
{
printf("%6s%4d%4s%4d%4d",stu[i].name,stu[i].age,stu[i].sex,stu[i].number,stu[i].score);
printf("\n");
word=0;
geshu++;/*若相等个数自增 下同*/
};
}
if(word==0)
printf("%s生的个数为:%d",xingbie,geshu);/*输出查询性别的学生个数 下同*/
if(word)
printf("没有您查询的学生信息!\n");
geshu=0;
break;
case 4:printf("请输入要查询的年龄:");
scanf("%d",&nianling);
printf(" 姓 名 年龄 性别 学号 分数\n");
for(i=0;i<N;i++)
{
if(nianling==stu[i].age)
{
printf("%6s%4d%4s%4d%4d",stu[i].name,stu[i].age,stu[i].sex,stu[i].number,stu[i].score);
printf("\n");
word=0;
geshu++;
};
}
if(word==0)
printf("%d岁的学生个数为:%d",nianling,geshu);//输出所查询学生的个数
if(word)
printf("没有您查询的学生信息!\n");
geshu=0;
break;
case 5:
printf(" 姓 名 年龄 性别 学号 分数\n");/*顶行输出属性*/
printf("\n");
for(i=0;i<=N && stu[i].number!=0;i++)
{
printf("%6s%4d%4s%4d%4d",stu[i].name,stu[i].age,stu[i].sex,stu[i].number,stu[i].score);
printf("\n");
}
default :printf("请输入正确的序号!\n");
}
}