C语言程序设计学生成绩管理系统实验报告 2

时间:2024.4.13

福建师范大学人民武装学院

 C语言程序设计报告书

设计名称:学生成绩管理系统

专业:软件工程

指导老师:陈琳

姓名:黄强      

学号: 119052012026   

20##-415

一、实验目的

1.在编辑应用程序过程中,逐步加深对C语言编程的理解;

2.加强实践的能力,动手能力,同时进一步对所学的知识进行巩固;

  3.培养初步编程的能力,为以后的学习奠定基础。

二、实验内容

运用所学的C语言知识编辑一个应用程序:学习成绩管理系统

三.系统软件环境:

本程序主要运行在: Visual C++ 6.0

                                     Turbo C/C++ 3.0

四.课程设计题目:

学生成绩管理系统

程序说明:有N个学生,每个学生的数据包含学号(不重复)姓名,性别,课程号,课程名,学分和课程的三种得分。试设计一学生成绩 管理系统,使之能提供以下功能:

(1)主菜单

(2)各菜单项功能

①录入:输入学生的学号、姓名性别,课程号,课程名,学分和课程的三种得分

 

 

②成绩查询:

A.基本信息查询

*按学号查询学生记录。

*按名字查询学生纪录。

B.成绩查询

*按学号查询学生记录。

*按名字查询学生纪录。

③纪录删除

*按输入的学号删除

④排序

A.综合成绩升序。

B.综合成绩降序。

C.学分降序。

D.学分升序。

五.数据结构设计描述:

 

 

六.结构体的定义和作用

struct student                                         //定义学生信息

{

  int no;                                              // 学号

  char name[20];                                       //姓名

  char sex[4];                                          //性别

  int num;                                              //课程号

  char scn[20];                                         //课程名

  int score;                                             //学分

  float score1;                                        //成绩1

  float score2;                                        //成绩2

  float score3;                                        //成绩3

  float ave;                                           //实得学分

  float sum;                                           //总分

七.系统各函数的功能,、相互调用关系

1.函数实现功能说明:

(1)menu函数

是定义一个菜单函数,其功能在于输出菜单界面供使用者选择。

(2)input函数

是定义用于输入学生信息。

(3)select 函数

是定义用于查询学生信息。包括学号、姓名及各科成绩。

(4)del函数

按输入的学号删除

(5)paixu函数

设置新菜单,并调用四个不同排序输出函数。

(6)保存函数

保存信息。

八.心得体会

  C语言是一种较为基础和普遍的编程语言,应用相当广泛,这次课程设计的要求与C语言的广泛应用相比较还有很大的差距。我们对于C语言的理解和使用还处在一个初级的阶段,我们要想掌握它,要学习的还很多,同时要懂得创新,许多的编程方法都是人们一步一步总结出来的,我想我们也要努力拓展自己的思维,努力去寻求新的方法,以创造出更为完善的应用程序。   

九.程序:

#include<stdio.h>

#include<conio.h>                                      /*清屏*/

#include <stdlib.h>                                    /*显示目录*/

#include<string.h>

#define n 10

void zhjx();

void menu();

void input();

void check();

void fun();

void fun2();

void fun3();

void fun4();

void del();

void paixu();

void zhsx();

void zhjx();

void xfjx();

void xfsx();

void save();

struct student                                         //定义学生信息

{

  int no;                                              // 学号

  char name[20];                                       //姓名

  char sex[4];                                          //性别

  int num;                                              //课程号

  char scn[20];                                         //课程名

  int score;                                             //学分

  float score1;                                        //成绩1

  float score2;                                        //成绩2

  float score3;                                        //成绩3

  float ave;                                           //实得学分

  float sum;                                           //总分

};

struct student stu[n],*p,t;

int now=0,i,j,k,l;

 char ch;

void main()

{

    int h,flag1,flag2;

    char name[20]="hq",password[10]="111";

    char person[20],password1[10];

       printf ("\t\t  ********  欢迎进入学生成绩管理系统!********\n\n");

       printf ("\t\t\t          用 户 登 录\n\n");

    for(h=0;h!=5;)

       {

        printf("\t\t\t\t  用户名:");

        gets(person);

        flag1=strcmp(person,name);

        printf("\t\t\t\t  密码:");

        gets(password1);

        flag2=strcmp(password,password1);

        if(flag1==0 && flag2==0)

              {

            printf("\t\t\t\t   登陆成功!\n\n");

            menu();

            break;

              }

        else

              {

            printf ("\t\t\t      用户名或密码错误!\n\n");

                     printf ("\t\t\t      请注意:您还剩%d次机会!\n\n",4-h);

            h++;

              }

       }

       if (h=5)

           printf ("对不起,您输入的用户名或密码有误,已被强制退出。\n");

}

void menu()

{

int as;

  char ch;

  do{

    printf("\n\n\n\n\t\t****&****&****&****&****&****&****&****&****&****");

     start: printf("\n\n\n\n\t\t\t    欢迎使用学生成绩管理系统\n");

       printf("\n\n\n\n\t\t******************按任意键继续********************");

       ch=getch();

    }

  while(!ch);

  system("cls");

                                                        /*以下为功能选择模块*/

 

  do{printf("学生管理系统\n");

       printf("\t\t");

       printf("1------学生成绩录入\n\t\t");

       printf("2------查询\n\t\t");

       printf("3------删除学生记录\n\t\t");

       printf("4------排序\n\t\t");

       printf("5------保存退出\n\t\t");

       printf("6------退出\n\t\t");

       printf("\t\t\t\t选择功能选项(输入所选功能前的数字):");

    

                                                      

    scanf("%d",&as);

    switch(as)

       {case 1:input();break;

       case 2:check();break;

       case 3:del();break;

       case 4:paixu();break;

       case 5:save();break;

       case 6:system("exit");exit(0);break;

    default:system("cls");

              goto start;

      

}}while(1);}

void input()                                           /*学生信息录入模块*/

{

  int i=0;

  char ch;

  do

   {

         printf("\t\t\t\t1.录入学生信息\n输入第%d个学生的信息\n",i+1);

         printf("\n输入8位的学生学号:");

         scanf("%u",&stu[i].no);

               fflush(stdin);

         

         printf("\n输入学生姓名:");

          fflush(stdin);

         gets(stu[i].name);

         printf("\n输入学生性别:");

          fflush(stdin);

         gets(stu[i].sex);

         fflush(stdin);

        printf("\n输入学生课程号:");

         scanf("%d",&stu[i].num);

         fflush(stdin);

         printf("\n输入学生课程名:");

         gets(stu[l].scn);

        ;fflush(stdin);

        printf("\n输入课程学分:");

         scanf("%d",&stu[i].score);

         printf("\n输入学生平时成绩:");

          fflush(stdin);

        scanf("%f",&stu[i].score1);

         printf("\n输入学生实验成绩:");

          fflush(stdin);

         scanf("%f",&stu[i].score2);

         printf("\n输入学生卷面成绩:");

         fflush(stdin);

         scanf("%f",&stu[i].score3);

         printf("\n\n");

               if(stu[i].score2>0)

                      stu[i].sum=stu[i].score1*0.15+stu[i].score2*0.15+stu[i].score3*0.7;

               else

                      stu[i].sum=stu[i].score1*0.3+stu[i].score3*0.7;

               k=stu[i].sum/10;

               switch(k)

               {case 10:(float)stu[i].ave=(float)stu[i].score;break;

               case 9:(float)stu[i].ave=(float)stu[i].score;break;

               case 8:(float)stu[i].ave=(float)stu[i].score*0.8;break;

              case 7:(float)stu[i].ave=(float)stu[i].score*0.7;break;

              case 6:(float)stu[i].ave=(float)stu[i].score*0.6;break;

              default:(float)stu[i].ave=0.0;}

              i++;                                                        

        

         now=i;

               

         printf("是否继续输入?(Y/N)");

         fflush(stdin);

         ch=getch();

         system("cls");

   }

   while(ch!='n'&&ch!='N');

   system("cls");

  }

 

void check()     //查询

{printf("————查    询————\n");

       printf("\t\t*学生基本信息查询*\n");

       printf("\t\t");

       printf("1--按学号查询\n\t\t");

       printf("2--按姓名查询\n\t\t");

       printf("*学生成绩查询*\n");

       printf("\t\t");

       printf("3--按学号查询\n\t\t");

       printf("4--按姓名查询\n\t\t");

       printf("0--返回主菜单\n\t\t");

       printf("请选择:");

       scanf("%d",&i);    

       switch(i)

       {

       case 0:menu();break;     //调用主菜单函数,表示返回主菜单

       case 1:fun();break;            //调用函数fun1,表示按学号查询学生基本信息

       case 2:fun2();break;            //调用函数fun2,表示按姓名查询学生基本信息

       case 3:fun3();break;            //调用函数fun3,表示按学号查询学生成绩

       case 4:fun4();break;            //调用函数fun4,表示按姓名查询学生成绩

};}

void fun()       //按学号查询1

{int i,j;

       printf("请输入要查询同学的学号:");

       scanf("%d",&j);

       for(i=0;i<now;i++)   //从第一名学生开始

       {

       if(stu[i].no==j)  //查找与输入学号相同的学号并输出

       {

              printf("学号:%d\n",stu[i].no);

              printf("姓名:%s\n",stu[i].name);

              printf("性别:%s\n",stu[i].sex);

               

       }

       } check();

             

};

void fun2() //按姓名查询1

{

       char name[20];

       printf("请输入要查询同学的姓名:");

       scanf("%s",&name);

       for(i=0;i<now;i++)

       {

       if(strcmp(stu[i].name,name)==0)

       {printf("学号:%d\n",stu[i].no);

              printf("姓名:%s\n",stu[i].name);

              printf("性别:%s\n",stu[i].sex);

              

             

       }

       }

      

};

void fun3() //按学号查询2

{int i;     

       printf("请输入要查询同学的学号:");

       scanf("%d",&j);

       for(i=0;i<now;i++)

       {

       if(stu[i].no==j)

       {

                printf("平时成绩%f\n",stu[i].score1);

                printf("实验成绩:%f\n",stu[i].score2);

                printf("卷面成绩:%f\n",stu[i].score3);

                printf("总分:%f\n",stu[i].sum);

                            printf("学分:%f\n",stu[i].ave);}

      

       }

 check();

}

void fun4()//按姓名查询2

{int i;

       char name[20];

       printf("请输入要查询同学的姓名:");

       scanf("%s",&name);

       for(i=0;i<now;i++)

       {

       if(strcmp(stu[i].name,name)==0)

       {

                printf("平时成绩%f\n",stu[i].score1);

                printf("实验成绩:%f\n",stu[i].score2);

                printf("卷面成绩:%f\n",stu[i].score3);

                printf("总分:%f\n",stu[i].sum);

                            printf("学分:%f\n",stu[i].ave); }

       }

      

 check();

};void del()                                             /*删除数据函数*/

{unsigned long inum;

    int i;

    printf("输入要删除学生的学号:");

    fflush(stdin);

    scanf("%u",&inum);

    for(i=0;i<now;i++)

      {

        if(stu[i].no=inum)

          {

             if(i==now)now-=1;

             else

               {

                   stu[i]=stu[now-1];

                   now-=1;

               }

           

             break;

          }

       }

       system("cls");

       menu();

};

void paixu()      //排序

{

  int i;

      

       printf("————排    序————\n");

       printf("\t\t");

       printf("1--按综合成绩升序\n\t\t");

       printf("2--按综合成绩降序\n\t\t");

       printf("3--按实得学分升序\n\t\t");

       printf("4--按实得学分降序\n\t\t");

       printf("0--返回主菜单\n\t\t");

       printf("请选择:");

       scanf("%d",&i);    

       switch(i)

       {

       case 0:menu();break;

       case 1:zhsx();break;

       case 2:zhjx();break;

       case 3:xfsx();break;

       case 4:xfjx();break;

       }

};

void zhsx()//综合成绩升序

{ int i,j;

for(i=0;i<now;i++) 

              for(j=now-1;j>i;j--)

                     if(stu[j].sum<stu[j-1].sum) 

                     {

                            t=stu[j];

                            stu[j]=stu[j-1];

                            stu[j-1]=t;

                     } 

       for(i=0;i<now;i++)

       {printf("学号:%d",stu[i].no);

              printf("姓名:%s",stu[i].name);

              printf("性别:%s",stu[i].sex);

                printf("平时成绩%f",stu[i].score1);

                printf("实验成绩:%f",stu[i].score2);

                printf("卷面成绩:%f",stu[i].score3);

                printf("总分:%f\n",stu[i].sum);

       }paixu();

};

void zhjx()//综合成绩降序

{ int i,j;

for(i=0;i<now;i++) 

              for(j=now-1;j>i;j--)

                     if(stu[j].sum>stu[j-1].sum) 

                     {

                            t=stu[j];

                            stu[j]=stu[j-1];

                            stu[j-1]=t;

                     } 

       for(i=0;i<now;i++)

       {printf("学号:%d",stu[i].no);

              printf("姓名:%s",stu[i].name);

              printf("性别:%s",stu[i].sex);

                printf("平时成绩%f",stu[i].score1);

                printf("实验成绩:%f",stu[i].score2);

                printf("卷面成绩:%f",stu[i].score3);

                printf("总分:%f\n",stu[i].sum);

       }paixu();

};

void xfjx()//学分降序

{ int i,j;

for(i=0;i<now;i++) 

              for(j=now-1;j>i;j--)

                     if(stu[j].ave>stu[j-1].ave) 

                     {

                            t=stu[j];

                            stu[j]=stu[j-1];

                            stu[j-1]=t;

                     } 

       for(i=0;i<now;i++)

       {printf("学号:%d\n",stu[i].no);

              printf("姓名:%s",stu[i].name);

              printf("性别:%s",stu[i].sex);

                printf("平时成绩%f",stu[i].score1);

                printf("实验成绩:%f",stu[i].score2);

                printf("卷面成绩:%f",stu[i].score3);

                printf("总分:%f\n",stu[i].sum);}

paixu();

};

void xfsx()//学分升序

{ int i,j;

for(i=0;i<now;i++) 

              for(j=now-1;j>i;j--)

                     if(stu[j].ave<stu[j-1].ave) 

                     {

                            t=stu[j];

                            stu[j]=stu[j-1];

                            stu[j-1]=t;

                     } 

       for(i=0;i<now;i++)

       {printf("学号:%d\n",stu[i].no);

              printf("姓名:%s",stu[i].name);

              printf("性别:%s",stu[i].sex);

                printf("平时成绩%f",stu[i].score1);

                printf("实验成绩:%f",stu[i].score2);

                printf("卷面成绩:%f",stu[i].score3);

                printf("总分:%f\n",stu[i].sum);}

paixu();

};

void save()                                            /*保存数据函数*/

{

    FILE *fp;

    int i;

    char filepath[20];

    printf("输入要保存的文件路径:");

    fflush(stdin);

    gets(filepath);

    if((fp=fopen(filepath,"w"))==NULL)

      {

          printf("\n保存失败!");

          exit(0);

      }

    for(i=0;i<now;i++)

         {

             

              fprintf(fp,"\t%u%s\t%s\t%u\t%s\t%u\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",

                              stu[i].no,stu[i].name,stu[i].sex,stu[i].num,stu[i].scn,stu[i].score,stu[i].score1,stu[i].score2,

                              stu[i].score3,stu[i].ave,stu[i].sum);

         }

    fclose(fp);

    printf("学生信息已保存在%s中!\n",filepath);

    system("pause");

    system("cls");

}

更多相关推荐:
C语言学生成绩管理系统课程设计报告

C语言课程设计报告一问题描述题目七学生成绩管理系统设计学生成绩信息包括学期学号班别姓名四门课程成绩语文数学英语和计算机等主要功能1能按学期按班级完成对学生成绩的录入修改2能按班级统计学生的成绩求学生的总分及平均...

C语言程序设计学生成绩管理系统实验报告

移通学院C语言程序设计报告书设计名称学生成绩管理系统专业指导老师班级姓名学号座号时间一实验目的1在编辑应用程序过程中逐步加深对C语言编程的理解2加强实践的能力动手能力同时进一步对所学的知识进行巩固3培养初步编程...

C语言实验报告--学生成绩管理系统 中南大学

XX大学CSUC语言程序设计实践报告学生姓名剽悍的小白兔指导教师TZ学院信息科学与工程学院专业班级电气信息类XXXX班完成时间20XX年X月题目学生成绩管理系统一设计目的通过课程设计使学生综合使用所学过的C语言...

C语言课程设计报告 --学生成绩管理系统

内蒙古科技大学课程设计论文内蒙古科技大学本科生课程设计论文题目学生成绩管理系统学生姓名胡书培学号1067111106专业计算机科学与技术班级10级计算机1班指导教师周李涌20xx年12月30日1内蒙古科技大学课...

c语言程序设计报告 学生成绩管理系统

学生成绩管理系统课程设计报告书学生成绩管理系统单位分院班级学号姓名指导老师完成日期20xx年7月14日1学生成绩管理系统内容摘要摘要本次课程设计的课题是学生成绩管理系统本文介绍课程设计课题的选题意义说明了本系统...

C语言编程实验:学生成绩管理系统

计算机编程课程设计题目学生成绩管理系统班级姓名学号指导教师完成时间一设计目的进一步加深巩固学生所学专业课程C语言的基本理论知识理论联系实际进一步培养学生综合分析问题和解决问题的能力掌握运用C语言独立地编写调试应...

C语言课程设计报告学生成绩管理系统

数据结构课程设计报告学号0820xx106姓名付振华日期20xx年7月9日一课程设计题目学生成绩管理二需求分析给出n个学生的m门考试的成绩表每个学生的信息由学号姓名性别以及各科成绩组成对学生的考试成绩进行有关统...

C语言程序设计实习报告---学生信息管理系统

C程序设计报告C语言课程设计题目学生信息管理系统设计者梁天江专业机械设计制造及其自动化班级学号0720xx31所属院系机电学院指导教师吴湘宁20xx年7月17日C程序设计报告1题目和要求11问题提出与要求学生成...

C语言程序设计实习报告---学生信息管理系统

C程序设计报告C语言课程设计题目班级学生成绩管理系统设计者焦鹏专业经济学班级学号08112227所属院系经济管理学院指导教师马钊20xx年12月29日C程序设计报告1题目和要求11问题提出与要求学生成绩管理系统...

C语言程序设计实习报告---学生信息管理系统

C程序设计报告C语言课程设计题目学生信息管理系统设计者XXX专业机械设计制造及其自动化班级学号所属院系机电学院指导教师吴湘宁20xx年7月17日C程序设计报告1题目和要求11问题提出与要求学生成绩管理系统要求设...

C语言 学生成绩管理系统实验报告

学生成绩管理系统实验报告实验名称学生成绩管理系统实验目的1利用所学的三种程序基本结构以及数组用户自定义函数进行一个简单管理系统的设计进一步理解和掌握c语言的语法以及三种基本程序结构的综合应用2通过程序中设计到的...

C语言程序设计学生成绩管理系统实验报告

移通学院C语言程序设计报告书设计名称学生成绩管理系统专业指导老师班级姓名学号座号时间一实验目的1在编辑应用程序过程中逐步加深对C语言编程的理解2加强实践的能力动手能力同时进一步对所学的知识进行巩固3培养初步编程...

c语言程序设计学生成绩管理系统实验报告(34篇)