鱼C论坛

 找回密码
 立即注册
查看: 953|回复: 0

请大家帮帮我 我实在是不会写那 在学生信息统计中好多功能还没有现实 大家帮帮忙

[复制链接]
发表于 2015-6-14 23:11:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
//用链表完成学生成绩管理系统,用菜单提示操作
#include<stdio.h>
#include<stdlib.h>
#define null 0
//定义学生的数据类型(学生的相关信息有学号、姓名、英语、数据库、C语言、总分、平均分)
struct student
{
        int num;//学号
        char name[10];//姓名
        float yy;//英语
        float sjk;//数据库
        float cyy;//c语言
        float  sun;//合
        float  avg;//平均分
};
//定义链表的结点类型
typedef struct lb
{
        student data;
        struct lb *next;
}linklist;
//学生信息的录入操作
linklist *creat()
{
        linklist *h1,*r,*s;//分别表示头结点,动态节点,动态节点的前一个节点
    r=(linklist*)malloc(sizeof(linklist));
        r->next=null;
        h1=s=r;
        int t;
        while(1)
        {
                printf("您想录入数据吗(-1 no): ");
                scanf("%d",&t);
                if(t==-1)
                        break;
                else
                {
                        printf("请输入学生的学号,姓名,英语,数据库,C语言\n");
                        r=(linklist*)malloc(sizeof(linklist));
                r->next=null;
                        scanf("%d%s%f%f%f",&r->data.num,&r->data.name,&r->data.yy,&r->data.sjk,&r->data.cyy);
                 r->data.sun=r->data.yy+r->data.sjk+r->data.cyy;
                        r->data.avg=r->data.sun/3;
                s->next=r;
                        s=r;
                }
        }
        return h1;
}
//显示所有学生信息
void out(linklist *h1)//显示数据
{
       
        linklist *r;
        r=h1;
        printf("学号    姓名   英语     数据库     C语言     合      平均分\n");
        while(r->next!=null)
        {
                r=r->next;
                printf("%3d%8s%9.2f%9.2f%11.2f%9.2f%9.2f\n",r->data.num,r->data.name,r->data.yy,r->data.sjk,r->data.cyy,r->data.sun,r->data.avg);

        }
}
//首头插入学生信息
linklist *fistins(linklist *h1)
{
        linklist *h2,*s,*r;
        h2=s=h1;
    r=(linklist*)malloc(sizeof(linklist));
        r->next=null;
        printf("请输入学生信息(学号、姓名、英语、数据库、C语言)\n");
        scanf("%d%s%f%f%f",&r->data.num,&r->data.name,&r->data.yy,&r->data.sjk,&r->data.cyy);
        r->next=s->next;
        s->next=r;
        r->data.sun=r->data.yy+r->data.sjk+r->data.cyy;
    r->data.avg=r->data.sun/3;
        return h2;
}
//中部插入学生信息
linklist *bettenins(linklist *h1,int xh1)
{
  linklist *h2,*s,*r,*t;
  h2=t=h1;
  s=h2->next;
  r=(linklist*)malloc(sizeof(linklist));
  r->next=null;
  printf("请输入插入学生的相关信息(学号、姓名、数据库、C语言)\n");
  scanf("%d%s%f%f%f",&r->data.num,&r->data.name,&r->data.yy,&r->data.sjk,&r->data.cyy);
  while(s!=null && s->data.num!=xh1)
  {
          t=s;
          s=s->next;          
  }
  if(s==null)
  {
          t->next=r;
          r->next=null;
  }
  else
  {
    t->next=r;
        r->next=s;
  }
  r->data.sun=r->data.yy+r->data.sjk+r->data.cyy;
  r->data.avg=r->data.sun/3;
  return h2;
}
//尾部插入学生信息
linklist *append(linklist *h1)
{
        linklist *h2,*s,*r;
        h2=s=h1;
    r=(linklist*)malloc(sizeof(linklist));
        r->next=null;
        printf("请输入学生信息(学号、姓名、英语、数据库、C语言)\n");
        scanf("%d%s%f%f%f",&r->data.num,&r->data.name,&r->data.yy,&r->data.sjk,&r->data.cyy);
        while(s->next!=null)
        {
                s=s->next;
        }       
        s->next=r;
        r->data.sun=r->data.yy+r->data.sjk+r->data.cyy;
    r->data.avg=r->data.sun/3;
        return h2;
}
//学号修改信息操作
void xiugai(linklist *h1)
{
        linklist *r;
        r=h1;
        int i,j=0;
        printf("请输入要修改信息的学生的学号:");
        scanf("%d",&i);
        while(r->next&&j<i)
        {
                r=r->next;
                j++;
        }
        printf("请输入新的学生信息(学号、姓名、英语、数据库、C语言)\n");
        scanf("%d%s%f%f%f",&r->data.num,&r->data.name,&r->data.yy,&r->data.sjk,&r->data.cyy);
        r->data.num;
        printf("修改成功!\n");
}
//姓名修改信息操作
void xingming(linklist *h1)
{
        linklist *r;
        r=h1;
        char xm[10],j=0;
        printf("请输入要修改信息的学生的姓名:");
        scanf("%s",&xm);
        while(r->next&&j<j)
        {
                r=r->next;
                j++;
        }
        printf("请输入新的学生信息(学号、姓名、英语、数据库、C语言)\n");
        scanf("%d%s%f%f%f",&r->data.num,&r->data.name,&r->data.yy,&r->data.sjk,&r->data.cyy);
        r->data.name;
        printf("修改成功!\n");
}
//按学号删除信息操作
linklist *delet(linklist *h1)
{
        linklist *head,*r,*s,*q;
    int xh;
        printf("请输入要删除的记录(输入学号进行删除)\n");
        scanf("%d",&xh);
        head=s=h1;
        r=h1->next;
        while(r!=null)
        {
     
      if(r->data.num==xh)
          {
                  q=r;
                  s->next=r->next;
             
          }
          s=r;
      r=r->next;
        }
        free(q);
        return head;
}
//按姓名删除信息操作
linklist *anxuehaosc(linklist *h1)
{
        linklist *head,*r,*s,*q;
    char xm[10];
        printf("请输入要删除的记录(输入姓名进行删除)\n");
        scanf("%s",&xm);
        head=s=h1;
        r=h1->next;
        while(r!=null)
        {
     
      if(r->data.name==xm)
          {
                  q=r;
                  s->next=r->next;
             
          }
          s=r;
      r=r->next;
        }
        free(q);
        return head;
}
//安学号查找操作
void find(linklist *h1)//查找数据
{
        linklist *r=h1->next;
        int j;
    printf("请输入要查找的学号:");
        scanf("%d",&j);
        while(r!=null)
        {
                if(r->data.num==j)
                {
           printf("学号    姓名   英语     数据库     C语言\n");
                   printf("%3d%8s%9.2f%9.2f%11.2f\n",r->data.num,r->data.name,r->data.yy,r->data.sjk,r->data.cyy);
                }
                r=r->next;
        }
}
//安姓名查找操作
void xingmingcha(linklist *h1)
{
        linklist *r=h1->next;
        char xmcz[10];
    printf("请输入要查找的姓名:");
        scanf("%s",&xmcz);
        while(r!=null)
        {
                if(r->data.name==xmcz)
                {
           printf("学号    姓名   英语     数据库     C语言\n");
                   printf("%3d%8s%9.2f%9.2f%11.2f\n",r->data.num,r->data.name,r->data.yy,r->data.sjk,r->data.cyy);
                }
                r=r->next;
        }
}
//主函数
void main()
{
        linklist *h;
        int k;
        do
        {
                printf("====学生成绩管理系统(链表)====\n");
                printf("     1.学生信息录入\n");
                printf("     2.显示所有信息\n");
                printf("     3.学生信息插入\n");
                printf("     4.学生信息统计\n");
                printf("     5.退出管理系统\n");
                printf("=============================\n");
                printf("请输入选择(1--5): ");
                scanf("%d",&k);
                if(k==5)
                {
                        printf("按任意键退出系统\n");
                        break;
                }
                else
                {
           switch(k)
                   {
                       case 1:
                                   h=creat();
                                   break;
                       case 2:
                                   out(h);
                               break;
                       case 3:
                   int e;
                                   do
                                   {
                                           printf("=====学生信息的插入菜单======\n");
                               printf("      1.首部插入学生信息\n");
                               printf("      2.中部插入学生信息\n");
                               printf("      3.尾部插入学生信息\n");
                                           printf("      4.显示插入学生信息\n");
                               printf("      5.返回主菜单\n");
                               printf("===================================\n");
                               printf("请输入选择(1---5)  ");
                               scanf("%d",&e);
                               if(e==5)
                                           {
                                                   break;
                                           }
                               else
                                           {
                                                   switch(e)
                                                   {
                                                   case 1:
                                                           h=fistins(h);
                                                           break;
                                       case 2:
                                               int m;
                                               printf("请输入要插入的位置学号: ");
                                        scanf("%d",&m);
                                           h=bettenins(h,m);
                                               break;
                                       case 3:
                                               h=append(h);
                                               break;
                                                           case 4:
                                               out(h);
                                               break;
                                       default:
                                           printf("输入选择有误,请重新输入!\n");
                                           break;
                                                   }
                                           }
                                   }while(1);
                               break;
                           case 4:
                                   int l;
                                   do
                                   {
                                           printf("=====学生信息统计菜单=====\n");
                                           printf("     1.修改学生信息\n");
                                           printf("     2.删除学生信息\n");
                                           printf("     3.查找学生信息\n");
                                           printf("     4.显示统计信息\n");
                                           printf("     5.返回主菜单\n");
                                           printf("==========================\n");
                                           printf("请输入选择(1--5)  ");
                                           scanf("%d",&l);
                                           if(l==5)
                                           {
                                                   break;
                                           }
                                           else
                                           {
                                                   switch(l)
                                                   {
                                                   case 1:
                                                           int t;
                                                           do{
                                                                    printf("=====修改学生信息菜单=====\n");
                                                                    printf("       1.按学号修改\n");
                                                                    printf("       2.按姓名修改\n");
                                                                    printf("       3.返回上一级菜单\n");
                                                                    printf("==========================\n");
                                                                    printf("请输入选择(1--3)   ");
                                                                    scanf("%d",&t);
                                                                    if(t==3)
                                                                        {
                                                                           break;
                                                                        }
                                                                    else
                                                                        {
                                                                           switch(t)
                                                                           {
                                                                           case 1:
                                                                                   xiugai(h);
                                                                                   break;
                                                                           case 2:
                                                                                   xingming(h);
                                                                                   break;
                                                                           default:
                                                                                   printf("输入选择有误,请重新输入!\n");
                                                                                   break;
                                                                           }
                                                                        }
                                                           }while(1);
                                                           break;
                                                   case 2:
                                                           int g;
                                                           do{
                                                                    printf("=====删除学生信息菜单=====\n");
                                                                    printf("       1.按学号删除\n");
                                                                    printf("       2.安姓名删除\n");
                                                                    printf("       3.返回上一级菜单\n");
                                                                    printf("==========================\n");
                                                                    printf("请输入选择(1--3)   ");
                                                                    scanf("%d",&g);
                                                                    if(g==3)
                                                                        {
                                                                           break;
                                                                        }
                                                                    else
                                                                        {
                                                                           switch(g)
                                                                           {
                                                                           case 1:
                                                                                   h=delet(h);
                                                                                   break;
                                                                           case 2:
                                                                                   h=anxuehaosc(h);
                                                                                   break;
                                                                           default:
                                                                                   printf("输入选择有误,请重新输入!\n");
                                                                           }
                                                                        }
                                                           }while(1);
                                                           break;
                                                   case 3:
                                                           int j;
                                                           do{
                                                                    printf("=====查找学生信息菜单=====\n");
                                                                        printf("      1.查找英语最高分\n");
                                                                        printf("      2.查找英语最低分\n");
                                                                        printf("      3.查找数据库最高\n");
                                                                        printf("      4.查找数据库最低\n");
                                                                        printf("      5.查找C语言最高分\n");
                                                                        printf("      6.查找c语言最低分\n");
                                                                        printf("      7.任意查找学生信息\n");
                                                                    printf("      8.返回上一级菜单\n");
                                                                    printf("==========================\n");
                                                                    printf("请输入选择(1--8)   ");
                                                                    scanf("%d",&j);
                                                                    if(j==8)
                                                                        {
                                                                           break;
                                                                        }
                                                                    else
                                                                        {
                                                                           switch(j)
                                                                           {
                                                                           case 1:
                                                                                   break;
                                                                           case 2:
                                                                                   break;
                                                                           case 3:
                                                                                   break;
                                                                           case 4:
                                                                                   break;
                                                                           case 5:
                                                                                   break;
                                                                           case 6:
                                                                                   break;
                                                                              case 7:
                                                                                   int k;
                                                                                   do{
                                                                                           printf("=====任意查找学生信息菜单=====\n");
                                                                               printf("       1.按学号查找\n");
                                                                               printf("       2.安姓名查找\n");
                                                                               printf("       3.返回上一级菜单\n");
                                                                               printf("==========================\n");
                                                                               printf("请输入选择(1--3)   ");
                                                                               scanf("%d",&k);
                                                                               if(k==3)
                                                                                           {
                                                                                      break;
                                                                                           }
                                                                               else
                                                                                           {
                                                                                      switch(k)
                                                                                                  {
                                                                                      case 1:
                                                                                                          find(h);
                                                                                                          break;
                                                                                      case 2:
                                                                                                          xingmingcha(h);
                                                                                              break;
                                                                                      default:
                                                                                              printf("输入选择有误,请重新输入!\n");
                                                                                              break;
                                                                                                  }
                                                                                           }
                                                                                   }while(1);
                                                                                   break;
                                                                           default:
                                                                                   printf("输入选择有误,请重新输入!\n");
                                                                           }
                                                                        }
                                                           }while(1);
                                                           break;
                                                   case 4:
                                                           out(h);
                                                           break;
                                                   default:
                                           printf("输入选择有误,请重新输入!\n");
                                           break;
                                                   }
                                           }
                                   }while(1);
                                   break;
                       default:
                              printf("输入选择有误,请重新输入!\n");
                             break;
                   }   
                }
        }while(1);
}



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 01:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表