c语言课程设计学生成绩管理系统3.docx

上传人:b****8 文档编号:10460858 上传时间:2023-02-13 格式:DOCX 页数:20 大小:21.23KB
下载 相关 举报
c语言课程设计学生成绩管理系统3.docx_第1页
第1页 / 共20页
c语言课程设计学生成绩管理系统3.docx_第2页
第2页 / 共20页
c语言课程设计学生成绩管理系统3.docx_第3页
第3页 / 共20页
c语言课程设计学生成绩管理系统3.docx_第4页
第4页 / 共20页
c语言课程设计学生成绩管理系统3.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

c语言课程设计学生成绩管理系统3.docx

《c语言课程设计学生成绩管理系统3.docx》由会员分享,可在线阅读,更多相关《c语言课程设计学生成绩管理系统3.docx(20页珍藏版)》请在冰豆网上搜索。

c语言课程设计学生成绩管理系统3.docx

c语言课程设计学生成绩管理系统3

c语言课程设计_学生成绩管理系统3

课程设计的内容:

1、每一条记录包括一个学生的学号、姓名、3门课成绩、平均成绩。

2、输入功能:

可以一次完成若干条记录的输入。

3、显示功能:

完成全部学生记录的显示。

4、查找功能:

完成按姓名查找学生记录,并显示。

5、排序功能:

按学生平均成绩进行排序。

6、插入功能:

按平均成绩高低插入一条学生记录。

7、将学生记录存在文件score中。

8、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!

课程设计的要求:

1、用C语言实现系统;

2、利用结构体数组实现学生成绩的数据结构设计;

3、系统具有增加,查询,插入,排序等基本功能;

4、系统的各个功能模块要求用函数的形式实现;

5、完成设计任务并书写课程设计报告。

6、将学生成绩信息存在文件中。

#include       /*暂停函数*/

#include     /*I/O函数*/

#include    /*其它说明*/

#include    /*字符串操作函数*/

#define M1000

intN=0;               /*记录已经存在的记录条数*/

intH=0;

structstudent         /*定义数据结构*/

 {charnumber[8];

  charname[16];

  floatscore[3];

  floataverage;

 }stud[M],temp;

 /*以下是函数声明*/

 voidload(void);                      /*读入记录*/

 voidinorder(structstudentstud[]);  /*排列记录*/

 voidinsert(structstudentstud[]);   /*插入记录*/

 voidsave(structstudentstud[]);     /*保存记录*/

 voidprint(structstudentstud[]);    /*显示记录*/

 voidsearch(structstudentstud[]);   /*查找记录*/

 voidenter(structstudentstud[]);    /*输入记录*/

 voiddel(void);                       /*删除记录*/

 voidchange(void);                    /*改变记录*/

 voidquit(void);                      /*退出系统*/

 intflag(structstudentstud[]);      /*返回值为0或1*/

 intmenu(void);                       /*菜单*/

main()                 /*主函数*/

 {/*以下printf语句为打印欢迎界面语句*/

  printf("\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t\t!

!

!

!

!

\n");

  printf(" w          weeeeeee l     ccccccc ooooo  mmmmmmmmm eeeeeee    !

!

!

!

\n");

  printf(" w    w    we    e l     c      o    o m  m  m e    e    !

!

!

\n");

  printf("  w  ww  w eeeeee l     c     o      om  m  m eeeeeee    !

!

 \n");

  printf("   ww  ww  e       l     c      o    o m  m  m e          !

  \n");

  printf("    w    w   eeeeeee llllllccccccc ooooo  m  m  m eeeeeee        \n");

  printf("\t\t\t\t\t\t\t\t\t\b0");

  sleep

(1);

  printf("\n\n\n\n\n\t\t\t\t\t\t\t\t    -----pan");

  sleep

(1);

  load();             /*调用读入记录函数*/

  for(;;)             /*无限循环*/

   {switch(menu())   /*调用主菜单函数,返回值整数作开关语句的条件*/

     {case1:

enter(stud); break;  /*输入记录*/

       case2:

print(stud); break;  /*显示要看的一页的记录*/

       case3:

search(stud);break;  /*查找记录*/

       case4:

inorder(stud);break;  /*排序*/

       case5:

insert(stud);break;  /*插入记录*/

       case6:

save(stud);  break;  /*保存文件*/

       case7:

change();    break;  /*改变记录*/

       case8:

del();       break;  /*删除记录*/

       case9:

quit();               /*如菜单返回值为9程序结束*/

     }

   }

 }

/*输入数据函数*/

voidenter(structstudentstud[])

 {intn=0,i,j,k,c;

  charb[4];

  floatsum;

  printf("Howmanystudent'srecorddoyouwanttoenter?

n= ?

\b\b\b");

  scanf("%d",&n);     /*输入一次要输入记录数*/

  for(i=0;i

   {sum=0;           /*统记三科总分*/

     printf("Inputthe%dthstudent'snumber",N+1);

     scanf("%s",stud[N].number);       /*输入学号*/

     /*以下if-else语句判断所输记录是否存在*/

     if(flag(stud))   /*调用返回值为0或1函数,判断所输入的学号是否已经存在,存在就执行if语句*/

      {

        printf("Therecordhasexist.\n");

        printf("Inputagain.");

        getch();

      }

     else

      {printf("Inputthe%dthstudent'sname",N+1);

        scanf("%s",stud[N].name);      /*输入姓名*/

        for(j=0;j<3;j++)

         {do

           {

            printf("Inputthe%dthstudent'sscore(%d)",N+1,j+1);     /*打印提示*/

            scanf("%s",b);             /*输入分数*/

            stud[N].score[j]=atof(b);  /*将字符串强制转换成实型,得值赋给stud[N].score[j]*/

            if(stud[N].score[j]<=0||stud[N].score[j]>100)             /*判断分数是否在0-100之间*/

             {

              k=1;                     /*分数不在0-100之间时k值为1*/

              printf("Errorinput!

!

!

\n");

              printf("Inputagain...\n");           /*打印出错提示*/

             }

            else

             k=0;                      /*分数在0-100之间时k值为0*/

           }while(k);                  /*由k值决定是否要循环*/

           sum+=stud[N].score[j];      /*统记三科总分*/

         }

        stud[N].average=sum/3.0;       /*平均分*/

        printf("\nEntersuccess!

!

!

\n");

        printf("\nPressanykeytoreturn.");

        getch();

        N++;                           /*记录数加1*/

        i++;

        H=1;

      }

      clrscr();       /*清屏*/

   }

   clrscr();          /*清屏*/

 }

/*显示记录函数*/

voidprint(structstudentstud[])

 {inti=0,k,max,maxb,n,flag='y';

  charm[6];

   /*以下if-else为判断文件中是否有记录*/

  if(N==0)

   {

    printf("Therearenotrecord.\n");

    printf("Pressanykeytoreturn.");         /*当N为0时(即没有记录)打印没有记录提示*/

    getch();

   }

  else

  while(flag!

='n')

   {maxb=0;i=0;

     /*以下分页输出记录*/

     do

     {if(N%10!

=0)

         {printf("\n\t\tThereare%dpagesinall.",N/10+1);

           printf("\n\t\tWhichpagedoyouwanttosee?

");  

         }

       else

         {printf("\n\t\tThereare%dpagesinall.",N/11+1);

           printf("\n\t\tWhichpagedoyouwanttosee?

");

         }

       scanf("%s",m); /*输入要显示的页数*/

       k=atoi(m);     /*强制把m转换成整形*/

       if(k)

        {k=10*(k-1); /*此时k变为第k页的第一条信息的序号*/

          if(k>=N)    /*判断页数是否存在*/

           {printf("\n\t\tThepageisnotexist!

!

!

");

             printf("\n\t\tInputagain.\n");

           }

        }

       else

        k=N+1;

     }while(k>=N);    /*如果页数不存在进入do-whie循环*/

     /*以下if-else语句是判断第k页是否有10条语句*/

     if((k+10)>N)

       max=N;         /*当第k页不够10条记录时*/

     else

       max=k+10;      /*当第k页够10条记录时*/

     clrscr();

     /*以下for语句为取得第k页名字最大字符长度*/

     for(i=k;i

      {n=strlen(stud[i].name);

        if(n>maxb)

         maxb=n;

      }

     i=k;

     /*以下if-else是为了保证表美观*/

     /*如果最大字符长度不大于8则按if

       输出,则按名字方格长度为8输出*/

     if(maxb<8)

      {while(i

        {/*以下为输出记录*/

          if(i%10==0)

           {printf("\n\t\t\t\tPage:

%d",(k+10)/10);

             printf("\n\t|---|--------|--------|--------|--------|--------|--------|");

             printf("\n\t|NO:

|number| name |score

(1)|score

(2)|score(3)|average|\n");

           }

          printf("\t|---|--------|--------|--------|--------|--------|--------|\n");

          printf("\t|%-2d| %-6s|%-8s| %-5.1f| %-5.1f| %-5.1f|%-7.2f|\n",i+1,stud[i].number,

                   stud[i].name,stud[i].score[0],stud[i].score[1],stud[i].score[2],

                   stud[i].average);

          i++;

         }

         printf("\t|---|--------|--------|--------|--------|--------|--------|\n");

      }

     /*如果最大字符长度大于8则按else

       输出,见则按名字格长度为16输出*/

     else

      {while(i

        {/*以下为输出记录*/

          if(i%10==0)

           {printf("\n\t\t\t\tPage:

%d",(k+10)/10);

             printf("\n\t\b\b|---|--------|----------------|--------|--------|--------|--------|");

             printf("\n\t\b\b|NO:

|number|     name     |score

(1)|score

(2)|score(3)|average|\n");

           }

          printf("\t\b\b|---|--------|----------------|--------|--------|--------|--------|\n");

          printf("\t\b\b|%-2d| %-6s|%-16s| %-5.1f| %-5.1f| %-5.1f|%-7.2f|\n",i+1,stud[i].number,

                  stud[i].name,stud[i].score[0],stud[i].score[1],stud[i].score[2],

                  stud[i].average);

          i++;

         }

        printf("\t\b\b|---|--------|----------------|--------|--------|--------|--------|\n");

       }

      printf("\t\t\t\b\bDoyouwanttogoon?

yorn?

\b\b\b\b\b\b\b");

      flag=getch();   /*获取一个字符判断是否要继续显示*/

      clrscr();       /*清屏*/

    }

 }

/*查找函数*/

voidsearch(structstudentstud[])

 {inti=0,n,j;

  charnumber[8],flag='y';

  clrscr();           /*清屏*/

  while(flag!

='n')

   {i=0;

     printf("\n\t\t\t\t\b\b\b\bThenumber--namelist:

\n");

     printf("----------------------------------------");

     printf("----------------------------------------");

     /*以下while语言句为输出已有的记录的学号与名字*/

     while(i

      {/*以下保证输出的学号和名字总长度不长于14*/

        if(strlen(stud[i].number)<4)

          n=4;

        else

          n=strlen(stud[i].number);

        if(n+strlen(stud[i].name)<15)  /*总长度不长于14时执行if语句*/

         {if(n+strlen(stud[i].name)>6)

            {printf("%-4s-",stud[i].number);

              printf("%s\t",stud[i].name);

              i++;

            }

           else

            {printf("%-4s-",stud[i].number);

              printf("%s\t\t",stud[i].name);

              i++;

            }

         }

        else                           /*总长度长于14时执行else语句*/

         {printf("%-4s-",stud[i].number);

           if(strlen(stud[i].number)>4)

             j=(12-strlen(stud[i].number));

           else

             j=12-4;

           for(n=0;n

             printf("%c",stud[i].name[n]);  /*以上输出总长度为13*/

           printf("..");              /*长出部分用".."省略表示*/

           i++;

         }

      }

     printf("\n---------------------------------------");

     printf("-----------------------------------------");

     printf("\n\t\t\bInputthestudent'snumberyouwanttosearch:

");

     scanf("%s",number);               /*输入要查找的记录的学号*/

     i=0;

     while(i

      {if(strcmp(stud[i].number,number)==0) /*查找记录*/

          {/*输出找到的记录*/

           /*当名字长度小于8时执行if语句*/

           if(strlen(stud[i].name)<8)

            {printf("\n");

              printf("\t |---|--------|--------|--------|--------|--------|--------|\n");

              printf("\t |NO:

|number| name |score

(1)|score

(2)|score(3)|average|\n");

              printf("\t |---|--------|--------|--------|--------|--------|--------|\n");

              printf("\t |%-2d| %-6s|%-8s| %-5.1f| %-5.1f| %-5.1f|%-7.2f|\n",i+1,stud[i].number,

    

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 管理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1