编写程序:从键盘输入姓名 心里年龄测试 性别 成绩

3985人阅读
刚抽到这题的时候没在意,但是真正做起来的时候,才觉得这题对于零基础的人来说是十分的困难。首先从题目的字数来看题目字数已经不少,其次看了几遍题目之后还是无从下手。不管你们觉得难不难,反正对于零基础的我来说,不是一个难字可以了得。最后只能找资料来寻求一些思路,看了一些这样的帖子以后,思路明晰了不少,不过感觉他们搞的有些太复杂了,于是站在前人的肩膀上,再结合我自己的想法,创作出了我自己的作品,现在贴出来,给同样题目的童鞋一些参考。当然得申明一下,在写代码的时候,由于时间和学识的关系,只是奔着能运行的目的去的,没有做深一步的优化,基础好的朋友,可以自己优化一下,或者用帖子回复出来,共同学习进步,不过程序我是运行测试过的,没什么问题。
如果你觉得我写的还凑合,请麻烦给点个赞,不胜感激!3Q
#import &Foundation/Foundation.h&
//函数的申明
void in(); & & & &// 增加学生信息
void search(); & &// 查询学生信息
void del(); & & & // 删除学生信息
void menu(); &// 自定义函数实现菜单功能
void menu2(); &// 删除功能的菜单
void step(); &// 所有功能定义
// 定义一个学生的结构体
struct Student
& & & & // 学号
& & & & & &// 年龄
& & char sex[10]; & // 性别
& & char name[10]; &// 姓名
& & & // 分数
// 定义一个可放100人的学生组
struct Student str[100];
//自定义函数实现菜单功能
void menu()
& & // 提示用户输入
& & printf(&\t\t\t\t\t\t*******************\n&);
& & printf(&\t\t\t\t\t\t & 1.增加学生信息\n&);
& & printf(&\t\t\t\t\t\t & 2.删除学生信息\n&);
& & printf(&\t\t\t\t\t\t & 3.查询学生信息\n&);
& & printf(&\t\t\t\t\t\t & 0.退出学生系统\n&);
& & printf(&\t\t\t\t\t\t*******************\n&);
& & printf(&请选择操作(0-3): &);
// 所有功能定义
void step ()
& & menu();
& & // 保证功能函数一直不退出循环,想退出的时候再退出(可退出的死循环)
& & for (; ; )
& & & & // 定义功能的标识
& & & & int n = -1;
& & & & // 接收用户的选择
& & & & scanf(&%d&, &n);
& & & & // 定义用户所需进入的选择
& & & & if (n == 1)
& & & & & & in(); & &// 增加
& & & & & &
& & & & else if (n == 2)
& & & & & & del(); & // 删除
& & & & else if (n == 3)
& & & & & & search(); // 查询
& & & & else
& & & & & & printf(&\t\t\t\t\t\t****已退出学生系统****\n&);
& & & & & &&
& & & & & & & &// 退出
& & & & & &&
//增加学生信息
& & // 使用for循环接收100个学生的信息
& & for ( int i = 0 ; i & 100; i++)
& & & & // 提示用户输入该生的姓名
& & & & printf(&请输入该学生的姓名\n&);
& & & & // 接收输入的姓名
& & & & scanf(&%s&,str[i].name);
& & & & // 提示用户输入该生的年龄
& & & & printf(&请输入该学生的年龄(5岁-30岁之间)\n&);
& & & & scanf(&%d&,&str[i].age);
& & & & // 检查年龄是否适当(5岁-20岁之间)
& & & & while &(str[i].age&5 || str[i].age&30)
& & & & & & printf(&*对不起您的学生年龄输入可能有误*\n&);
& & & & & & printf(&请重新输入该学生年龄\n&);
& & & & & & scanf(&%d&,&str[i].age);
& & & & // 提示用户输入该生的性别,定义性别为:man或者woman
& & & & printf(&请输入该学生的性别(man或woman)\n&);
& & & & while(getchar()!='\n');
& & & & /*清空输入缓存,当碰到下一个输入数据是char类
& & & & &型,在第一次输入结束后加上这条语句*/
& & & & scanf(&%s&,str[i].sex);
& & & & // 提示用户输入该生的学号
& & & & printf(&请输入该学生的学号\n&);
& & & & scanf(&%d&,&str[i].number);
& & & & // 检查学号是否相同,学号具有惟一性,不能同时给多人赋值
& & & & for (int a = i-1; str[i].number == str[a]. a--)
& & & & & & while (str[i].number == str[a].number)
& & & & & & {
& & & & & & & & printf(&对不起该学号已经存在,请重新输入\n&);
& & & & & & & & scanf(&%d&,&str[a].number);
& & & & & & }
& & & & // 提示用户输入该生分数
& & & & printf(&请输入该学生的分数\n&);
& & & & scanf(&%f&,&str[i].score);
& & & & // 检查分数是否适当
& & & & while &(str[i].score&0 || str[i].score&100)
& & & & & & printf(&对不起您的考生考分不符合判卷标准\n&);
& & & & & & printf(&请重新输入该学生的分数\n&);
& & & & & & scanf(&%f&,&str[i].score);
& & & & & &&
& & & & // 打印该生的所有个人信息
& & & & printf(&第%d次录入的学生信息为:\n姓名-%s\n年龄-%d\n性别-%s\n学号-%d\n分数-%f\n &,i+1, str[i].name, str[i].age, str[i].sex, str[i].number,str[i].score);
& & & & // 判断是否继续录入
& & & & printf(&\t\t*继续添加 请按1;返回菜单请按任意键*\n&);
& & & & int m = 0;
& & & & scanf(&%d&, &m);
& & & & if (m == 1)
& & & & & &
& & & & else
& & & & & & step();
// 删除功能的菜单,规定学号为唯一识别符,在最后删除信息的时才可以删除
void menu2()
& & printf(&\t\t\t\t\t\t\t请按照提示选择\n&);
& & printf(&\t\t\t\t\t\t------------\n&);
& & printf(&\t\t\t\t\t\t\t返回上一级菜单按0\n&);
& & printf(&\t\t\t\t\t\t\t &删除姓名按1\n&);
& & printf(&\t\t\t\t\t\t\t &删除年龄按2\n&);
& & printf(&\t\t\t\t\t\t\t &删除性别按3\n&);
& & printf(&\t\t\t\t\t\t\t &删除分数按4\n&);
& & printf(&\t\t\t\t\t\t\t删除全部信息按5\n&);
& & printf(&\t\t\t\t\t\t------------\n&);
& & printf(&请选择操作(0-5): &);
// 删除学生信息,规定学生的学号为唯一识别码,用其进行学生身份的判断
void del()
& & // 提示用户输入学号,进行身份核对
& & printf(&请输入该生的学号,进行身份验证:\n&);
& & int n = 0;
& & scanf(&%d&,&n);
& & // 用遍历的方法在系统里查找这个学号对应的数组
& & for (int i = 0; i&100; i++)
& & & & // 判断输入的学号是否与已录入的学号相等
& & & & if (str[i].number == n)
& & & & & & printf(&该学生全部信息为:\n姓名是%s\n年龄是%d\n性别是%s\n学号是%d\n分数是%f\n&,str[i].name, str[i].age, str[i].sex, str[i].number,str[i].score);
& & & & & &&
& & & & & & // 如果学号匹配,调用删除功能的菜单,提示用户下一步操作
& & & & & & menu2();
& & & & & &&
& & & & & & // 判断要删除哪一项,
& & & & & & int b = -1;
& & & & & & scanf(&%d&,&b);
& & & & & & // 返回上一级菜单
& & & & & & if (b==0)
& & & & & & {
& & & & & & & & step();
& & & & & & & &
& & & & & & }
& & & & & & // 删除姓名
& & & & & & else if (b ==1)
& & & & & & {
& & & & & & & & strcpy(str[i].name, &0&);
& & & & & & & & printf(&学号是%d\n姓名是%s\n年龄是%d\n性别是%s\n分数是%f\n&,str[i].number,str[i].name, str[i].age, str[i].sex, str[i].score);
& & & & & & & & menu2();
& & & & & & }
& & & & & & // 删除年龄
& & & & & & else if (b ==2)
& & & & & & {
& & & & & & & & str[i].age = 0;
& & & & & & & & printf(&学号是%d\n姓名是%s\n年龄是%d\n性别是%s\n分数是%f\n&,str[i].number,str[i].name, str[i].age, str[i].sex, str[i].score);
& & & & & & & & menu2();
& & & & & & }
& & & & & &&
& & & & & & // 删除性别
& & & & & & else if (b ==3)
& & & & & & {
& & & & & & & & strcpy(str[i].sex, &0&);
& & & & & & & & printf(&学号是%d\n年龄是%d\n性别是%s\n分数是%f\n&,str[i].number, str[i].age, str[i].sex, str[i].score);
& & & & & & & & menu2();
& & & & & & }
& & & & & &&
& & & & & & // 删除分数
& & & & & & else if (b ==4)
& & & & & & {
& & & & & & & & str[i].score = 0;
& & & & & & & & printf(&学号是%d\n姓名是%s\n年龄是%d\n性别是%s\n分数是%f\n&,str[i].number,str[i].name, str[i].age, str[i].sex, str[i].score);
& & & & & & & & menu2();
& & & & & & }
& & & & & &&
& & & & & & // 删除全部信息
& & & & & & else if (b ==5)
& & & & & & {
& & & & & & & & str[i].number = 0;
& & & & & & & & strcpy(str[i].name, &0&);
& & & & & & & & str[i].age = 0;
& & & & & & & & strcpy(str[i].sex, &0&);
& & & & & & & & str[i].score = 0;
& & & & & & & &&
& & & & & & & & printf(&学号是%d\n姓名是%s\n年龄是%d\n性别是%s\n分数是%f\n&,str[i].number,str[i].name, str[i].age, str[i].sex, str[i].score);
& & & & & & }
& & & & & &
& & & & // 输入的学号与已经录入的不匹配
& & & & else
& & & & & & printf(&该学号不存在,请重新确认\n&);
& & & & & & printf(&继续--请按1;返回主菜单--请按任意键\n&);
& & & & & & int b = 0;
& & & & & & scanf(&%d&,&b);
& & & & & & if (b == 1)
& & & & & & {
& & & & & & & & del();
& & & & & & }
& & & & & & else
& & & & & & {
& & & & & & & & menu();
& & & & & & }
& & & & & &&
& & & & & &
// 查询学生信息,规定学生的学号为唯一识别码,用其进行学生身份的判断
void search()
& & // 提示用户输入该生的学号
& & printf(&*请输入该生学号:*\n&);
& & int n = 0;
& & scanf(&%d&, &n);
& & // 找到这个学号对应的数组
& & for (int i = 0; i&100; i++)
& & & & // 判断输入学号是否与已录入的学号相匹配
& & & & // 匹配
& & & & if (str[i].number == n)
& & & & & & printf(&该学生信息为:\n姓名是%s\n年龄是%d\n性别是%s\n学号是%d\n分数是%f\n&,str[i].name, str[i].age, str[i].sex, str[i].number,str[i].score);
& & & & & &
& & & & // 不匹配
& & & & else
& & & & & & printf(&\t\t\t\t\t**该学号不存在,请重新确认**\n&);
& & & & & &
& & // 判断是否继续查询
& & printf(&\n&);
& & printf(&继续查询--请按1;返回主菜单--请按任意键\n&);
& & int b = 0;
& & scanf(&%d&,&b);
& & if (b == 1)
& & & & search();
& & & & menu();
int main(int argc, const char * argv[])
& & @autoreleasepool
& & & & // 提示用户登陆学生管理系统
& & & & printf(&\n\n\n\n\t\t\t\t\t\t 欢迎使用学生管理系统!\n&);
& & & & // 调用主菜单,进行相应操作
& & & & step();
& & & & return 0;
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:5634次
排名:千里之外

我要回帖

更多关于 心里年龄测试 的文章

 

随机推荐