黑马程序员技术交流社区

标题: 经典入学基础题--学生管理系统1--仅供参考 [打印本页]

作者: Micro    时间: 2015-2-6 21:32
标题: 经典入学基础题--学生管理系统1--仅供参考
严正声明:仅是给不会做的人参考一下,提供个思路。请勿原本照搬,别忘了老师也会看帖子的。


经典入学基础测试题。你做对了吗??



ps:也是某吧友发出来的。现改正了。完美运行,回复查收哦。

-----如帮助到了你,请大方打赏点黑马币,谢谢。





#include <stdio.h>
#include<string.h>
#include <stdlib.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();
    return 0;
}

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()
{
   

    }
}





作者: Micro    时间: 2015-2-6 21:35
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.number)
        {
            k=0;/*若有该学号k赋值为0*/
            printf("您要删除的学生信息为:\n");
            printf("   姓 名  年龄  性别  学号  分数\n");
            printf("%6s%4d%4s%4d%4d",stu.name,stu.age,stu.sex,stu.number,stu.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.number!=0;i++)
                {
                    printf("%6s%4d%4s%4d%4d",stu.name,stu.age,stu.sex,stu.number,stu.score);
                    printf("\n");
                }
            }

            caidan();
        }
    }
    if(k)/*k若未被赋值0,则说明没有需要删除的学生*/
        printf("没有您要查询的学生不需要删除!");
}


作者: Micro    时间: 2015-2-6 21:37
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.number)//由学号来寻找目标学生
                {
                    printf("%6s%4d%4s%4d%4d",stu.name,stu.age,stu.sex,stu.number,stu.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.name)==0)//姓名字符比较
                {
                    printf("%6s%4d%4s%4d%4d",stu.name,stu.age,stu.sex,stu.number,stu.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.sex)==0)
                {
                    printf("%6s%4d%4s%4d%4d",stu.name,stu.age,stu.sex,stu.number,stu.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.age)
                {
                    printf("%6s%4d%4s%4d%4d",stu.name,stu.age,stu.sex,stu.number,stu.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.number!=0;i++)
            {
                printf("%6s%4d%4s%4d%4d",stu.name,stu.age,stu.sex,stu.number,stu.score);
                printf("\n");
            }
            break;
        default :printf("请输入正确的序号!\n");
    }
}


作者: HeavenYoung    时间: 2015-2-6 21:38
记得之前做过一个图书管理系统,跟这个完全类似啊!
作者: peanutgao    时间: 2015-2-6 21:55
学习一下
作者: 恋梦    时间: 2015-2-6 22:29
感谢楼主分享

作者: 恋梦    时间: 2015-2-6 23:00
谢谢楼主分享

作者: a3563365    时间: 2015-2-6 23:35
看看~~~~~~
作者: lumingfu    时间: 2015-2-7 15:52
.....加油
作者: Melody丶Zhy    时间: 2015-2-7 22:28
来研究一下
作者: 仰望的繁华    时间: 2015-2-7 23:12
没抽到这个题,来看看~
作者: andyJerry    时间: 2015-2-8 11:39
:)感谢。楼主好人。。
作者: 萝莉最有爱    时间: 2015-2-8 13:30
:):):):):):)
作者: 俺做android开发    时间: 2015-2-8 13:33
正好5个字
作者: 头头小坏蛋    时间: 2015-2-8 14:57
谢谢楼主分享哦。。。
作者: 挑战    时间: 2015-2-9 12:32
好人啊。。。。
作者: 余先生    时间: 2015-2-9 15:07
xiexie1111111
作者: xiezhongmin    时间: 2015-2-9 15:35
看看                                               
作者: lanyu2014sc    时间: 2015-2-9 16:37
正在为这一道题目烦恼,赶紧来看看
作者: vera    时间: 2015-2-9 18:36
很多人的题都是这个啊
作者: 殇卜泣    时间: 2015-2-10 10:06
多谢分享 看看吧
作者: dimost    时间: 2015-2-10 13:52
在转iOS,来观摩一下。
作者: 你的微笑很美    时间: 2015-2-10 14:31
很好,很强大
作者: 党静锋    时间: 2015-2-10 14:39
看看!!!!!!!!
作者: gzf201314    时间: 2015-2-10 21:37
看看学习学习。
作者: Melody丶Zhy    时间: 2015-2-11 19:38
退出之后信息不保存了吧。。。
作者: 风淡淡    时间: 2015-2-11 20:30
看看楼主的源码
作者: Kuaile天使    时间: 2015-2-11 22:50
你可以把switch等于0的那个分支提出来放在switch之前,做个判断提前结束程序。然后,你就可以把每个分支里都包含的caidan()调用提出来,放在switch之后,就不用每个分支里都写这个函数了。个人意见,可以参考一下,嘿嘿。
作者: hypoyan    时间: 2015-2-11 23:13
多谢分享...
作者: Dance小飞    时间: 2015-2-11 23:33
谢谢楼主了
作者: jiao    时间: 2015-2-11 23:58
谢谢分享!
作者: Micro    时间: 2015-2-12 12:29

不客气哈。。。
作者: superdite    时间: 2015-2-17 18:24
谢谢楼主的分享啊
作者: 坐怀不乱    时间: 2015-2-19 20:07
感谢楼主分享谢谢!
作者: 15021367785    时间: 2015-2-21 15:09
12313123123123123123
作者: PlwNs    时间: 2015-2-21 15:13
学习一下,谢谢
作者: huanxiang0220    时间: 2015-2-22 02:07
HeavenYoung 发表于 2015-2-6 21:38
记得之前做过一个图书管理系统,跟这个完全类似啊!

你们这是IOS的吧
作者: 陈明辉    时间: 2015-2-22 17:11
谢谢分享哦,我抽的也是这个题:lol 参考一下
作者: 为了梦想    时间: 2015-2-23 14:52
看看啊:D
作者: 殇卜泣    时间: 2015-2-23 15:42
每个人I写的应该都不同  可以学习一下
作者: zero-xiao    时间: 2015-2-23 22:16
谢谢楼主分享。
作者: Drmshow    时间: 2015-2-24 12:04
取经路过
作者: czh251    时间: 2015-2-25 04:36
:handshake:handshake
作者: 堇莫荼蘼    时间: 2015-2-25 20:52
看下喽~~
作者: moon_H    时间: 2015-2-25 21:18
看看学习一下,谢谢
作者: wangsam110    时间: 2015-2-25 22:22
6666666666666
作者: trance    时间: 2015-2-25 23:40
mark,来看看
作者: ocean45    时间: 2015-2-27 09:55
谢谢楼主分享哦。
作者: 杨辛一    时间: 2015-2-27 23:06
好贴  mark一下  等学到再来研究下
作者: wawajiayou85    时间: 2015-2-28 09:19
谢谢楼主分享
作者: cowozo    时间: 2015-2-28 10:57
学习了,O(∩_∩)O谢谢
作者: sekey1991    时间: 2015-3-2 09:13
嗯,我也有这个
作者: 雪中花    时间: 2015-3-2 10:24
很不错,谢谢楼主。
作者: 紫金飞侠雷    时间: 2015-3-2 13:44
感谢楼主分享
作者: import    时间: 2015-3-2 13:52
我也遇见了这个题目,我是用双向链表做的
作者: 吴浩友    时间: 2015-3-2 14:43
看看。。
作者: bluedevils    时间: 2015-3-2 14:53
学习学习,希望不会抽到
作者: Ann_1990    时间: 2015-3-2 20:07
谢谢楼主分享~加油加油~
作者: 黑色淘金    时间: 2015-3-3 00:05
进来看看写的程序
作者: azen    时间: 2015-3-13 20:32
哈哈~~ 看下收走~~ 谢谢楼主~
作者: 末班车i    时间: 2015-3-14 10:01
我电脑重装系统了,我之前发给你的所有成员名单信息表发给我下,那张表包括成员电话,班级,专业。

作者: zmjdd    时间: 2015-3-14 13:56
学习一下
作者: cararila    时间: 2015-3-17 16:33
赞一个哦辛苦了
作者: @小元宝@    时间: 2015-3-19 20:13
kankan,xuexi
作者: darewolf    时间: 2015-3-20 20:19
学习一下
作者: 安若宸king    时间: 2015-3-28 17:05
这是神马题目
作者: LuciferTJD    时间: 2015-4-21 22:02
学习一下
作者: sunyang    时间: 2015-4-22 19:54
:):)太棒了 大白好给力
作者: CornerFly    时间: 2015-4-26 09:58
谢谢分享,感激
作者: CornerFly    时间: 2015-4-26 09:59
雪中送炭呀,谢谢啦
作者: CornerFly    时间: 2015-4-26 17:36
添加姓名的时候只能输入字母,不能输入汉字




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2