C语言实践课程报告附源码(学生成绩管理系统 )

您所在的位置:网站首页 java学生成绩管理系统课程设计报告 C语言实践课程报告附源码(学生成绩管理系统 )

C语言实践课程报告附源码(学生成绩管理系统 )

2023-07-17 19:47| 来源: 网络整理| 查看: 265

声明:本课程报告比较简陋,仅供学习参考哦!!(源码见文章末尾)

目录

1. 引言

1.1  研究背景

1.2  研究意义

2. 需求分析

3. 概要设计设计

3.1 功能模块设计

3.2 主函数的流程设计

4.  详细设计和实施

4.1 主界面设计

4.2 录入信息

4.3 查询信息

4.4 修改信息

4.5 添加学生

4.6 删除学生信息

4.7 统计学生信息

5.   测试数据与测试结果

5.1 系统测试

5.2 问题分析

5.3 总结

参考文献

 

1. 引言 1.1  研究背景

随着科技的不断发展,计算机的应用领域越来越广。在我国的各类学校,尤其是高等院校,近些年由于阔招生员,大大增加了学校的管理体制的负担,管理信息系统已经进入高校,但还未普及,而对于学生成绩管理来说,目前还没有一套完整的,统一的系统。因此,开发一套适合、 兼容性好的系统是很有必要的。

1.2  研究意义

根据开发要求,学生成绩管理系统全要应用于教育系统,完成对学生成绩信息的计算机管理,使学院职员工轻工作压力,同时,可以减少劳动力的使用,加快查询速度、加强管理,加快国家和部门关于信息化的步伐,使管理更加规范化。学生成绩管理系统是时代发展的必然产物。

2. 需求分析

编写一个学生成绩管理系统,每个学生信息包括:姓名、学号、C语言、编译原理、数据库以及离散数学的成绩。具体功能如下:

(1)创建学生信息并以磁盘文件保存;

(2)读取磁盘文件并显示输出所有学生的成绩;

(3)按学号或姓名查询成绩;

(4)添加成绩记录;

(5)修改指定姓名或学号的学生的成绩并可存盘;

(6)删除指定姓名或学号的学生成绩并可存盘;

(6)只显示C语言成绩60分以下、60~79、80~89、90分以上各分数段的学生信息;

(7)打印所有学生成绩单。

3. 概要设计设计 3.1 功能模块设计

功能模块如下图1所示:

                                                                                         图1 功能模块结构图

3.2 主函数的流程设计

(1)主界面系统

  可分别输入0—7数字来实现对学生信息的执行。各个按键的功能如下:

“0”:可退出程序;

“1”:录入信息,调用input()函数;

“2”:查询信息,先调用search()函数,根据姓名或学号分别调用xingming()和xuehao()函数;

“3”:修改信息,先调用modiway()函数,根据姓名或学号分别调用modify1 ()和modify2()函数;

“4”:添加学生信息,直接调用insert()函数;

“5”:删除学生信息,先调用deleteway()函数,根据姓名或学号分别调用delete1 ()和delete2()函数;

“6”:显示打印成绩,直接调用print()函数;

“7”:统计C语言成绩,直接调用count()函数。

 

4.  详细设计和实施 4.1 主界面设计

(1)  功能介绍

本模块主要是调用以上每个自定义函数,在界面中输入相对应的数字便可进入相关模块。保证了本程序的完美运行。

(2)  关键函数及其描述

void main()

{

    char ch;

    while(1)

    {

      menu();// 显示菜单

      ch=getch();//选择菜单

      if(ch=='0')

          break;

      switch(ch)//判断功能项

      {

      case '1':input();break;

      case '2':search();break;

      case '3':modiway();break;

      case '4':insert();break;

      case '5':deleteway();break;

      case '6':print();break;

      case '7':count();break;

      }

    }

    printf("\n\n\n\t\t\t\tWelcome to use,Goodbye!\02!\n");

}

4.2 录入信息

(1)功能简介

该模块主要实现学生信息的录入。在界面中输入“1 ”进入学生成绩的录入,录入信息是一直到姓名为“End”时结束录入。

(2)流程图

录入信息模块流程图如图2所示:

                                                                                  图2 录入信息

 

(3) 关键代码及其描述

void input()

{

    FILE *fp;

    stu xs;           /*定义一个结构体变量来装从文件中读出来的数据*/

    if((fp=fopen("student.dat","ab"))==NULL)  //判断文件能否打开

    {

       printf("can't open the file!\n");exit(0);     //正常退出

    }

    printf("\n录入格式: 姓名 学号 C语言 编译原理 数据库 离散数学 \n");

    printf("当输入姓名为结束录入\n");

    while(1)                               

    {

        scanf("%s",xs.name);

        if(strcmp(xs.name,"End")==0) break; //判断姓名是否为END,用字符串判断

        scanf("%d%f%f%f%f",&xs.num,&xs.c,&xs.by,&xs.sjk,&xs.lssx);

        fwrite(&xs,sizeof(stu),1,fp);        //将成绩信息写入文件

    }

    fclose(fp);

}

4.3 查询信息

(1) 功能简介

本模块先定义了学生姓名和学号两项信息,然后再自定义一个search函数,利用switch函数来通过这两种方式来查询。在界面中输入“2”进入查询信息模块。接着输入“1”则是按姓名查询,输入“2”则是按学号查询。

(2)流程图

查询信息模块流程图如图3所示:

 

                                                                                  图3 查询信息

(3) 关键代码及其描述

void search()

{

       char ch1;

       system("cls");

    printf("请选择何种方式查询:\n");

    printf("1->姓名,2->学号:");

    ch1=getchar();              /*用字符接收*/

    switch(ch1)                 /*判断*/

  {

    case '1':xingming();break;

    case '2':xuehao();break;

  }

getch(); 

4.4 修改信息

(1) 功能简介

本模块主要实现修改学生信息的功能,modify1和modify2分别定义两种修改信息的方式,然后利用modiway函数,使用switch函数判断选择修改的方式,在界面中输入“3”进入修改成绩模块,接着输入“1”则是按姓名修改成绩,输入“2”则是按学号修改成绩。

(2)流程图

修改信息模块流程图如图4所示:

                                                                                 图4 修改信息

 

(3) 关键代码及其描述

void modiway()

{

    char ch1;

    system("cls");

    printf("请输入按何种方式修改:\n");

    printf("1->姓名,2->学号:");

    ch1=getchar();       /*用字符接收*/

    switch(ch1)          /*判断*/

       {

      case '1':modify1();break;

      case '2':modify2();break;

       }

 

    getch();/*让屏幕停留同时按任意键返回*/

}

4.5 添加学生

(1)功能简介

本模块主要实现了学生的添加,在界面中输入“4”进入添加学生模块,依次输入姓名、学号、C语言,编译原理,数据库以及离散数学成绩、和插入的位置。

(2)流程图

添加学生模块流程图如图5所示:

                                                                                 图5 添加学生

 

(3) 关键代码及其描述

void insert()

{

       int i=0,j,k,lenth;

    FILE *fp;

    stu s,xs[N];

    system("cls");

    printf("\n请输入添加的学生的姓名:");

       scanf("%s",&s.name);

    printf("\n学生的学号:");scanf("%d",&s.num);

    printf("\n学生的成绩:C语言、编译原理、数据库、离散数学:");scanf("%f %f %f %f",&s.c,&s.by,&s.sjk,&s.lssx);

    printf("\n请输入插入到第几行:");scanf("%d",&k);

    if((fp=fopen("student.dat","rb"))==NULL)

       {

           printf("can't open the file!\n");exit(0);

       }

    while(!feof(fp))

       {

        fread(&xs[i],sizeof(stu),1,fp);/*把数据读入到结构体数组中*/

        if(feof(fp)) break;

        i++;

       }

    fclose(fp);

    lenth=i;                            //记录此时lenth最大

    if(k=0)                 /*k的位置要位于数组范围之内*/

       {

       for(j=lenth-1;j>=k;j--)

           xs[j+1]=xs[j];               /*一开始j是最大的,往后移一个这样移动避免数据被覆盖*/

           xs[k]=s;                     /*将输入的学生信息加入这个k位置*/

           lenth++;                   //增加一个学生空间,否则会少一个数据

       if((fp=fopen("student.dat","wb"))==NULL)

          {

               printf("不能建立文件!!\n");exit(0);

          }

       for(i=0;i

              printf("不能建立文件!!\n");exit(0);

              }

    fwrite(&s,sizeof(stu),1,fp);

       }

       fclose(fp);

}

4.6 删除学生信息

(1) 功能介绍

根据学生的姓名或学号来删除学生的信息,在主界面点击“6”,接着选择删除学生信息的方式。

(2)删除学生模块流程图如图6所示:

                                                                                 图6 删除学生

(3) 关键代码及其描述

//删除:输入学生学号,若该学生存在,则删除,并显示删除后余下的学生成绩信息

void deleteway()

{

    char ch1;

    system("cls");

    printf("请输入按何种方式删除:\n");

    printf("1->姓名,2->学号:");

    ch1=getchar();/*用字符接收*/

    switch(ch1)/*判断*/

       {

       case '1':delete1();break;

    case '2':delete2();break;

       }

       getch();/*让屏幕停留同时按任意键返回*/

}

4.7 统计学生信息

(1) 功能介绍

本模块主要实现了对学生成绩的统计,对不同分数段的学生进行划分并逐个显示。在界面中输入“6”,则进入统计学生信息模块。按任意键退出。

(2)流程图

统计学生模块流程图如图7所示:

                                                                                图7 统计学生

(3)  关键代码及其描述

void count()

{

int i=0,j=0,k=0,l=0,m=0,n,p,q,r,t,u;

stu s[N], *p1[N],*p2[N],*p3[N],*p4[N];   /*用指针数组*/

fread(&s[i++],sizeof(stu),1,fp);         /*读入数据*/

t=i;i=0;

for(u=0;u



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3