注册 登录
编程论坛 C++教室

c语言 顺序表 帮我完成下面的操作 实在不会写那

yangzhengmao 发布于 2015-04-07 09:48, 940 次点击
//结构体学生成绩管理系统
#include<stdio.h>
#include<string.h>
#define MAX 100  
//定义学生相关信息
struct stud
{
    int num ; //学号
    char name[10];  //姓名
    float yy;
    float sjk;
    float cyy;
    float avg;
    float pjf;
};
//结构体
  struct lxb
  {
      stud data[MAX];
      int len;
  };
//主函数
void main()
{
    lxb l;
    int k,i,n;
    l.len=0;
    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",&n);
        if(n<=0||n>=5)
        {
            printf("系统正在退出,按任意键退出,谢谢!\n");
            break;
        }
        else
        {
            switch(n)
            {
              case 1:
                    while(1)
                    {
                      printf("想输入数据吗(-1退出) ");
                      scanf("%d",&k);
                      if(k==-1)
                      break;
                      else
                      {
                         printf("请输入学生相关信息(学号,姓名,英语,数据库,c语言)\n");
                         scanf("%d%s%f%f%f",&l.data[l.len].num,&l.data[l.len].name,&l.data[l.len].yy,&l.data[l.len].sjk,&l.data[l.len].cyy);
                         l.len++;
                      }
                    }
                    break;
              case 2:
                    int x;
                    do
                    {
                     printf("=====学生信息的统计=====\n");
                     printf("    1.学生成绩的总分\n");
                     printf("    2.学生成绩的平均分\n");
                     printf("    3.学生成绩的排序\n");
                     printf("    4.返回学生信息系统\n");
                     printf("========================\n");
                     printf("请输入选择(1-4)  ");
                     scanf("%d",&x);
                     if(x==4)
                     {
                         break;
                     }
                     else
                     {
                         switch(x)
                         {
                            case 1:
                                   printf("学号  姓名   英语    数据库  c语言   总分\n");
                                   for(i=0;i<l.len;i++)
                                   {
                                     l.data[i].avg=l.data[i].yy+l.data[i].sjk+l.data[i].cyy;
                                     printf("%2d%6s%8.0f%8.0f%8.0f%9.1f\n",l.data[i].num,l.data[i].name,l.data[i].yy,l.data[i].sjk,l.data[i].cyy,l.data[i].avg);
                                   }
                            break;
                            case 2:
                                printf("学号  姓名   英语    数据库  c语言   平均分\n");
                                for(i=0;i<l.len;i++)
                                {
                                  l.data[i].pjf=l.data[i].avg/3;
                                 printf("%2d%6s%8.0f%8.0f%8.0f%9.1f\n",l.data[i].num,l.data[i].name,l.data[i].yy,l.data[i].sjk,l.data[i].cyy,l.data[i].pjf);
                                }
                                break;
                            case 3:
                                int y;
                                do
                                {
                                     printf("========学生成绩的排序========\n");
                                    printf("     1.以总分排序(高到低)\n");
                                    printf("     2.以平均分排序(高到低)\n");
                                    printf("     3.返回学生信息统计\n");
                                    printf("==============================\n");
                                    printf(" 请输入选择(1--3)  ");
                                    scanf("%d",&y);
                                    if(y==3)
                                    {
                                        break;
                                    }
                                    else
                                    {
                                       switch(n)
                                       {
                                          case 1:
                                             break;
                                          case 2:
                                              break;
                                          case 3:
                                              break;
                                       }
                                    }
                                }while(1);
                                    break;
                         }
                     }
                    }while(1);
                    break;
              case 3:
                   printf("学号  姓名   英语    数据库  c语言   总分   平均分\n");
                      for(i=0;i<l.len;i++)
                   {
                     printf("%2d%6s%8.0f%8.0f%8.0f%9.1f%8.1f\n",l.data[i].num,l.data[i].name,l.data[i].yy,l.data[i].sjk,l.data[i].cyy,l.data[i].avg,l.data[i].pjf);
                   }
                   break;
              case 4:
                  int w;
                  do
                  {
                     printf("=======学生信息的查找=======\n");
                     printf("   1.总分最高的学生信息\n");
                     printf("   2.总分最低的学生信息\n");
                     printf("   3.平均分最高的学生信息\n");
                     printf("   4.平均分最低的学生信息\n");
                     printf("   5.任意查找某个学生的信息\n");
                     printf("   6.返回主菜单学生信息管理\n");
                     printf("==============================\n");
                     printf("请输入选择(1--6)   ");
                     scanf("%d",&w);
                     if(w==6)
                     {
                         break;
                     }
                     else
                     {
                         switch(w)
                         {
                              case 1:
                                  break;
                              case 2:
                                  break;
                              case 3:
                                  break;
                              case 4:
                                  break;
                              case 5:
                                  int q;
                                  do
                                  {
                                    printf("=====任意某个学生信息的查找=====\n");
                                    printf("         1.按学号查找\n");
                                    printf("         2.按姓名查找\n");
                                    printf("         3.返回信息查找\n");
                                    printf("================================\n");
                                    printf("  请输入选择(1----3)  ");
                                    scanf("%d",&q);
                                    if(q==3)
                                    {
                                        break;
                                    }
                                    else
                                    {
                                        int a=1;
                                        switch(q)
                                        {
                                            case 1:
                                                int xh;
                                                printf("请输入您要查找的学号(数字键0--9): ");
                                                scanf("%d",&xh);
                                                while(l.data[a-1].num!=xh&&a<=l.len)
                                                    a++;
                                                if(l.data[a-1].num==xh)
                                                {
                                                    l.data[a-1].avg=l.data[a-1].yy+l.data[a-1].sjk+l.data[a-1].cyy;
                                                    l.data[a-1].pjf=l.data[a-1].avg/3;
                                                    printf("学号  姓名   英语    数据库  c语言   总分   平均分\n");
                                                    printf("%2d%6s%8.0f%8.0f%8.0f%9.1f%8.1f\n",l.data[a-1].num,l.data[a-1].name,l.data[a-1].yy,l.data[a-1].sjk,l.data[a-1].cyy,l.data[a-1].avg,l.data[a-1].pjf);
                                                }
                                                else
                                                {
                                                    printf("系统里面没有录入改学生的信息\n");
                                                }
                                                break;
                                            case 2:
                                                int j=1;
                                                char n[10];
                                                printf("请输入您要查询的姓名: ");
                                                scanf("%s",&n);
                                                while(strcmp(l.data[j-1].name,n)&&j<=l.len)
                                                    j++;
                                                if(strcmp(l.data[j-1].name,n)==0)
                                                {
                                                    l.data[j-1].avg=l.data[j-1].yy+l.data[j-1].sjk+l.data[j-1].cyy;
                                                    l.data[j-1].pjf=l.data[j-1].avg/3;
                                                    printf("学号  姓名   英语    数据库  c语言   总分   平均分\n");
                                                    printf("%2d%6s%8.0f%8.0f%8.0f%9.1f%8.1f\n",l.data[j-1].num,l.data[j-1].name,l.data[j-1].yy,l.data[j-1].sjk,l.data[j-1].cyy,l.data[j-1].avg,l.data[j-1].pjf);
                                                }
                                                else
                                                {
                                                    printf("系统里面没有录入该学生信息\n");
                                                }
                                                break;
                                        }
                                    }
                                  }while(1);
                                  break;
                              case 6:
                                  break;
                         }
                     }
                  }while(1);
                  break;
            }
        }
    }while(1);
}
14 回复
#2
wp2319572015-04-07 09:49
要求有点高
#3
yangzhengmao2015-04-07 09:55
  我就剩下 以总分排序和平均分排序   还有查找总分最高最低  和平均分最高最低那    帮帮忙
#4
yangzhengmao2015-04-07 10:10
专家们   快来看看   我是新手   写到这里实在是不会写那
#5
wp2319572015-04-07 10:14
如果你能保证你的代码是你自己完成的  那么请你保证你已经编写的模块能够正确运行  如果你已编写的模块能够正确运行  那么其他模块也没啥难度系数

这个文本型数据库思维模式  大体上都差不多
#6
yangzhengmao2015-04-07 10:19
是我自己写的   现在上面的代码是可以运行的   就是还有几个功能不会写那   学得不精
#7
yangzhengmao2015-04-07 10:20
帮帮忙
#8
wp2319572015-04-07 10:25
你如果拿出具体的困难 还是会有人帮你的  

可是你直接要代码   估计你等上几天  也未必有人帮你
#9
yangzhengmao2015-04-07 10:27
呵呵  不要说得那么绝对嘛
#10
yangzhengmao2015-04-07 10:28
困难就在  下面的代码是真的不会那   所以才叫专家们 帮帮忙嘛
#11
诸葛欧阳2015-04-07 11:15
总分和平均分不一样吗?难道科目数还不一样
#12
yangzhengmao2015-04-07 11:29
问题是以总分排序的都不会  怎么去写平均分    还有查找以总分最高的学生信息  也不会   帮帮忙 好不好
#13
yangfrancis2015-04-07 20:33
int shift,i,idx,j;
j=l.len-1;
for(idx=0;idx<l.len-1;idx++)
{
    for(i=0;i<j;i++)
    {
        if(l.data(i).avg<l.data(i+1).avg)
        {
            shift=l.data(i).avg;
            l.data(i).ave=l.data(i+1).avg;
            l.data(i+1).avg=shift;
         }
    }
    j--;
}
总分升序(尚未测试)
#14
yangfrancis2015-04-07 20:35
只交换了总分,忘了交换姓名,学号等信息,如果上述代码可行,自己在if里面添加吧
#15
yangzhengmao2015-04-07 21:50
只有本站会员才能查看附件,请 登录
调试出现这些问题   头痛    帮帮我
1