最新公告
  • 欢迎您光临波比源码,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • C语言课程设计之学生信息管理系统

    #include"stdio.h" //标准的输入输出函数文件头部说明
    #include"math.h" // 数学函数头部说明
    #include"string.h"
    #include"stdlib.h" //通过该函数头部里的函数,改变控制台的背景和色彩
    #include"windows.h" //头文件声明,下文用到了改变控制台的宽度和高度
    #define M 100 //宏定义说明
    struct student{ //结构体定义并声明
    char name[25]; //姓名
    char num[25]; //学号
    char credit[20]; //身份证号
    char native[35]; //籍贯
    char tel[25]; //手机号
    int special; //专业
    int banji; //班级
    int math,yy,wl,cyy,pe; //数学、英语、物理、C语言、体育
    double ave;}; //平均分
    //****************************************函数的声明********************************************
    void input(struct student stu[M]); //输入函数
    void output(struct student stu[M]); //各类用户自定义函数的声明
    void lookfor(struct student stu[M]); //查询函数
    void modify(struct student stu[M]); //修改函数
    void order(struct student stu[M]); //排序函数
    void delete_student(struct student stu[M]); //删除函数
    void xuehao(struct student stu[M]);
    void xingming(struct student stu[M]);
    void fileread(struct student stu[M]);
    void filewrite(struct student stu[M]);
    void yanshi(char *p); //延时函数说明
    //**********************************************************************************************
    int count=0;
    struct student t;
    int main()
    {
    int choice,sum;
    struct student stu[M];
    system("mode con:cols=400 lines=30000"); //调理控制台的宽度和高度
    system("color 0b"); //调理控制台的背景和字体色彩
    point1:
    sum=0;
    yanshi(" 3333333333333欢迎你使用学生信息管理系统3333333333
    ");
    do {
    printf(" ————————————————-
    ");
    printf(" + 学生信息管理系统 +
    ");
    printf(" ————————————————-
    ");
    printf(" ***************
    ");
    printf(" 1、添加学生信息
    ");
    printf(" 2、阅读学生信息
    ");
    printf(" 3、查询学生信息
    ");
    printf(" 4、修改学生信息
    ");
    printf(" 5、删除学生信息
    ");
    printf(" 6、排列学生信息
    ");
    printf(" 7、读取文件学生
    "); //从文件读取
    printf(" 8、保存到文件
    "); //保存到文件
    printf(" 9、退出系统
    ");
    printf(" ***************
    ");
    printf("请输入你的选择
    ");
    scanf("%d",&choice);
    fflush(stdin); //清除输入缓冲区
    if (choice>9||choice<=0)
    {
    sum++;
    if (sum>=5)
    {
    printf("输入毛病次数过量,程序将重新开始
    ");
    system("pause"); //程序暂停
    system("cls"); //清屏语句
    goto point1;
    }
    }
    switch (choice) //根据选择,调用不同的函数来完成不同的任务
    {
    case 1:input(stu);break;
    case 2:output(stu);break;
    case 3:lookfor(stu);break;
    case 4:modify(stu);break;
    case 5:delete_student(stu);break;
    case 6:order(stu);break;
    case 7:fileread(stu);break;
    case 8:filewrite(stu);;break;
    case 9:printf("感谢你使用学生信息管理系统,请关掉程序!!!
    ");system("pause");break;
    default:printf("无效的选择!!!请重新输入!!!
    ");break;
    }
    }while (choice!=9);
    printf("the program is over!!!
    ");
    return 0;
    }
    void input(struct student stu[M]) //自定义输入函数
    {
    int len,size;
    system("cls");
    printf("请添加要输入学生的信息
    ");
    do {
    printf("请输入由11位数字组成的学生学号
    "); //do-while循环利用,提示输入位数为1肯定数
    scanf("%s",&stu[count].num);
    len=strlen(stu[count].num);
    }while(len!=11);
    printf("请输入同学的姓名
    ");
    scanf("%s",stu[count].name);
    do {
    printf("请输入由18位数字组成的学生身份证号
    "); //同上
    scanf("%s",&stu[count].credit);
    size=strlen(stu[count].credit);
    }while(size!=18);
    printf("请输入学生的籍贯
    ");
    scanf("%s",&stu[count].native);
    printf("请输入学生的手机号码
    ");
    scanf("%s",&stu[count].tel);
    printf("请输入所需要的专业代号:1、计算机科学 2、通讯工程 3、网络工程
    "); //采取如此方法解决了专业输入难问题
    scanf("%d",&stu[count].special);
    printf("请输入对应的学生班级号码:1、1301 2、1302
    ");
    scanf("%d",&stu[count].banji);
    do {
    printf("请顺次输入不大于100的学生各科成绩
    ");
    scanf("%d%d%d%d%d",&stu[count].math,&stu[count].yy,&stu[count].wl,&stu[count].cyy,&stu[count].pe);
    }while(stu[count].math>100||stu[count].yy>100||stu[count].wl>100||stu[count].cyy>100||stu[count].pe>100); //同上同上
    stu[count].ave=(stu[count].math+stu[count].yy+stu[count].wl+stu[count].cyy+stu[count].pe)/5.0; //求出平均值
    count++;
    }
    void output(struct student stu[M]) //自定义输出函数
    {
    int j;
    system("cls");
    if (count==0)
    {
    printf("当前已存学生信息为0个
    ");
    return;
    }
    for (j=0;j<count;j++)
    {
    printf("学号 姓名 身份证号 籍贯 手机号 专业 班级 数学 英语 物理 C语言 体育 平均分
    ");
    for (j=0;j<count;j++){ //for循环控制输出的个数
    printf("%s ",stu[j].num);
    printf("%s ",stu[j].name);
    printf("%s ",stu[j].credit);
    printf("%s ",stu[j].native);
    printf("%s ",stu[j].tel);
    if (stu[j].special==1)
    printf("计算机科学 ");
    else if (stu[j].special==2)
    printf("通讯工程 ");
    else
    printf("网络工程 ");
    printf("%d ",stu[j].banji);
    printf("%d ",stu[j].math);
    printf("%d ",stu[j].yy);
    printf("%d ",stu[j].wl);
    printf("%d ",stu[j].cyy);
    printf("%d ",stu[j].pe);
    printf("%.1lf
    ",stu[j].ave);}
    }
    }
    void lookfor(struct student stu[M]) //自定义查询学生信息函数
    {
    int j,flag=0;
    char xh[25];
    system("cls");
    if (count==0)
    {
    printf("当前已存学生信息为0个,没法查询!!!
    ");
    return;
    }
    else
    {
    printf("请输入你想要查看的同学学号
    ");
    scanf("%s",&xh);
    fflush(stdin);
    for (j=0;j<count;j++)
    {
    if (strcmp(stu[j].num,xh)==0) //通过字符函数对已存入的学生信息进行比较,找出要查看的学生
    {
    printf("学号 姓名 身份证号 籍贯 手机号 专业 班级 数学 英语 物理 C语言 体育 平均分
    ");
    printf("%s ",stu[j].num);
    printf("%s ",stu[j].name);
    printf("%s ",stu[j].credit);
    printf("%s ",stu[j].native);
    printf("%s ",stu[j].tel);
    if (stu[j].special==1)
    printf("计算机科学 ");
    else if (stu[j].special==2)
    printf("通讯工程 ");
    else
    printf("网络工程 ");
    printf("%d ",stu[j].banji); //斟酌1个对齐的因数
    printf("%d ",stu[j].math);
    printf("%d ",stu[j].yy);
    printf("%d ",stu[j].wl);
    printf("%d ",stu[j].cyy);
    printf("%d ",stu[j].pe);
    printf("%.1lf ",stu[j].ave);
    }
    }
    if (j==count)
    printf("很抱歉,没有你所需要的学生信息
    ");
    }
    }
    void modify(struct student stu[M]) //自定义修改函数
    {
    int j,flag=0,course;
    char xh[25];
    system("cls");
    if (count==0)
    {
    printf("当前已存学生信息为0个,没法修改!!!
    ");
    return;
    }
    else
    {
    printf("请输入你想要修改的同学学号
    ");
    scanf("%s",&xh);
    fflush(stdin);
    for (j=0;j<count;j++)
    if (strcmp(stu[j].num,xh)==0) //同上
    {
    printf("你肯定要修改学生的信息吗???如果不肯定的话,请关掉本程序吧!!!
    ");
    printf("选择课程: 1、数学 2、英语 3、物理 4、C语言 5、体育
    ");
    scanf("%d",&course);
    printf("请输入你想要修改后的学生成绩
    ");
    switch(course)
    {
    case 1:scanf("%d",&stu[j].math);break;
    case 2:scanf("%d",&stu[j].yy);break; //switch控制语句
    case 3:scanf("%d",&stu[j].wl);break;
    case 4:scanf("%d",&stu[j].cyy);break;
    case 5:scanf("%d",&stu[j].pe);break;
    default:printf("无效的选择!!!请重新输入!!!
    ");break;
    }
    }
    }
    }
    void delete_student(struct student stu[M]) //自定义删除函数
    {
    int choice;
    system("cls");
    if (count==0)
    {
    printf("当前已存学生信息为0个,没法删除!!!
    ");
    return;
    }
    else
    {
    printf("请选择你所要删除的方式:1、学号 2、姓名(如果你的姓名是中文,那末没法删除,请选择学号删除) 3、取消
    ");
    scanf("%d",&choice);
    switch(choice) //switch语句对用户要删除的方式进行选择
    {
    case 3:return;break;
    case 2:xingming(stu);break; //用户自定义函数之间的套用
    case 1:xuehao(stu);break;
    default:printf("无效的选择!!!请重新输入!!!
    ");break;
    }
    }
    }
    void order(struct student stu[M]) //排序函数的定义
    {
    int j,k,choice,index;
    system("cls");
    printf("请输入你想要进行排序的方式(所有排序的方式均是降序)!!!
    ");
    printf("1、数学 2、英语 3、物理 4、C语言 5、体育 6、平均分
    ");
    scanf("%d",&choice);
    switch (choice)
    {
    case 1:for (j=0;j<count;j++)
    { index=j;
    for (k=j+1;k<count;k++)
    if (stu[k].math>stu[index].math)
    {t=stu[k];stu[k]=stu[index];stu[index]=t;}
    };break;
    case 2:for (j=0;j<count;j++)
    { index=j;
    for (k=j+1;k<count;k++)
    if (stu[k].yy>stu[index].yy)
    {stu[k]=stu[index];} //全部为排序部份,采取了所谓的选择排序的方法
    };break;
    case 3:for (j=0;j<count;j++)
    { index=j;
    for (k=j+1;k<count;k++)
    if (stu[k].wl>stu[index].wl)
    {t=stu[k];stu[k]=stu[index];stu[index]=t;}
    };break;
    case 4:for (j=0;j<count;j++)
    { index=j;
    for (k=j+1;k<count;k++)
    if (stu[k].cyy>stu[index].cyy)
    {t=stu[k];stu[k]=stu[index];stu[index]=t;}
    };break;
    case 5:for (j=0;j<count;j++)
    { index=j;
    for (k=j+1;k<count;k++)
    if (stu[k].pe>stu[index].pe)
    {t=stu[k];stu[k]=stu[index];stu[index]=t;}
    };break;
    case 6:for (j=0;j<count;j++)
    { index=j;
    for (k=j+1;k<count;k++)
    if (stu[k].ave>stu[index].ave)
    {t=stu[k];stu[k]=stu[index];stu[index]=t;} //强迫类型转换符号只能用于有操作数,根据赋值运算中的类型转换问题可知
    };break;
    default:printf("无效的选择!!!请重新输入!!!
    ");break;
    }
    }
    void xuehao(struct student stu[M]) //自定义通过学号方式删除学生信息函数
    {
    int j,index=0,k=count;
    char xh[25];
    system("cls");
    printf("请输入你想要删除的同学学号
    ");
    scanf("%s",xh);
    fflush(stdin);
    for (j=0;j<count;j++)
    { if (strcmp(stu[j].num,xh)==0)
    {
    for (j=index;j<count;j++)
    stu[j]=stu[j+1];
    count–;
    if (count<k)
    printf("你已删除成功
    ");
    }
    index++;}
    if (j==count)
    printf("抱歉!!!没有你所需要删除的学生信息!*_*!
    ");
    }
    void xingming(struct student stu[M]) //自定义通过姓名方式删除学生信息函数
    {
    int flag=0,j,k=count;
    char xm[25];
    system("cls");
    printf("请输入你想要删除的同学姓名
    ");
    scanf("%s",xm);
    fflush(stdin);
    for (j=0;j<count;j++)
    {
    if (strcmp(stu[j].num,xm)==0)
    {

    for (j=flag⑴;j<count;j++)
    stu[j]=stu[j+1];
    count–;
    if (count<k)
    printf("你已删除成功
    ");
    }
    flag++;}
    if (j==count)
    printf("抱歉!!!没有你所需要删除的学生信息!*_*!
    ");
    }
    void yanshi(char *p) //延时函数的定义
    {
    while (1)
    {
    if (*p!=0)
    printf("%c",*p++);
    else
    break;
    Sleep(100); //延时控制中断语句
    }
    }
    void filewrite(struct student stu[M]) //写入文件函数定义
    {
    int j=0;
    char c;
    FILE *fp;
    printf("请选择是不是要存入已输入的学生信息:'y'还是'n'???
    ");
    scanf("%c",&c);
    fflush(stdin);
    while(c!='y'&&c!='n'){
    if (c!='y'&&c!='n')
    printf("输入毛病,请重新输入
    ");
    printf("以下操作将会覆盖已存储的数据,肯定请输入'y'或'n'???
    ");
    scanf("%c",&c);
    fflush(stdin);
    }
    if (c=='y')
    {
    if((fp=fopen("d:stu.dat","wb"))==NULL)
    {
    printf("文件打开毛病,程序没法进行
    ");
    exit(0);
    }
    for(j=0;j<count;j++)
    {fwrite(&stu[j],sizeof(struct student),1,fp);
    }
    fclose(fp);
    if(count==0)
    printf("没有文件,没法保存
    ");
    else
    printf("数据存储终了
    ");
    system("pause");
    }
    else
    return;
    }
    void fileread(struct student stu[M]) //读取文件信息函数定义
    {
    int j=0;
    char c;
    FILE *fp;
    system("cls");
    printf("请选择是不是要存入已输入的学生信息:'y'还是'n'???
    ");
    scanf("%c",&c);
    fflush(stdin);
    while(c!='y'&&c!='n'){
    if (c!='y'&&c!='n')
    printf("输入毛病,请重新输入
    ");
    printf("以下操作将会覆盖已存储的数据,肯定请输入'y'或'n'???
    ");
    scanf("%c",&c);
    fflush(stdin);
    }
    if (c=='y')
    {
    if((fp=fopen("d:stu.dat","rb"))==NULL)
    {
    printf("文件打开毛病,程序没法进行
    ");
    exit(0);
    }
    fread(&stu[j],sizeof(struct student),1,fp);
    count=0;
    count++;
    j++;
    while(fread(&stu[j],sizeof(struct student),1,fp))
    {
    j++;
    count++;
    }
    fclose(fp);
    printf("数据读取终了!!!
    ");
    system("pause");
    }
    else
    return;
    }

    波比源码 – 精品源码模版分享 | www.bobi11.com
    1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
    2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
    3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
    4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
    5. 如有链接无法下载、失效或广告,请联系管理员处理!
    6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
    7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

    波比源码 » C语言课程设计之学生信息管理系统

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    波比源码
    一个高级程序员模板开发平台
    升级波友尊享更多特权立即升级