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

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


目录

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("当输入姓名为<End>结束录入\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所示:

                                                                   

一、课程设计题目 ① 基本要求题目:矩阵乘法。 ② 综合训练:学生成绩管理系统 二、设计要求 矩阵乘法:编写一个函数实现矩阵A(2行3列)与矩阵B 相乘(3行2列),乘积放在C数组中。在主函数中输入相乘的两数组,并输出结果。 学生成绩管理:(结构体数组、函数、指针、算法、流程结构及文件等的综合应用) 程序说明:有N个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能: (1)主菜单 (2)各菜单项功能 ① 成绩录入:输入学生的学号、姓名及三门课的成绩; ② 成绩查询:(至少一种查询方式)。  按学号查询学生记录。  查询不及格学生的记录。 ③成绩统计:  计算学生的平均分;  根据学生的平均分高低,对学生的数据进行排序后输出;  对学生单科成绩排序,输出学生姓名与该科成绩; ④退出系统:退出整个系统(即主菜单)。 (3)结构体数组: #define N 30struct student {int num; /* 定义学号*/ char name[20]; /* 定义姓名*/ float score[3]; /* 定义存贮三门课成绩的数组*/ float average; /* 定义平均成绩*/ };struct student stu[N];  /* 定义结构体数组,存贮多个学生的记录*/ 三、数据结构设计描述 系统功能描述 1能够输入学生的学号、姓名、三科成绩并且计算出平均成绩。 2能够以表格的形式输出学生记录 3能够按照学生三科的平均成绩进行排序 4能够按照学生的单科成绩进行排序 5能够按照学号查询学生记录 6往表中插入学生记录 7从表中删除学生记录 8存储记录到文件中 9从文件中读取记录 10退出 数据字典 1数据流条目 数据流名称:全部记录 别名:无 简述:最新更新后所有关于学生成绩的记录 来源:数据库 去向:加工“记录筛选” 数据流量:不限 组成:学号+姓名+SC1+SC2+SC3+平均成绩 数据存储条 数据存储名称:学生成绩记录 别名:无 简述:存放学生所有可供查询的信息 组成:学号+姓名+SC1+SC2+SC3+平均成绩 组织方式:索引文件,以学学号为关键字 查询要求:要求能立即查询 2数据项条目 数据项名称:学号 别名:无 简述:所有学校学生的学号 类型:字符串 3加工条目 加工名:更改的记录 激发条件:学生成绩记录被改动 优先级:普通 输入:新记录 输出:更新数据、数据未改动 加工逻辑:根据现有学生成绩记录 if 新记录旧记录 then 更新数据 else 数据未改动 endif 设计测试流程 1、进入界面 2、输入选项0,回车; 按提示输入数据 3、回到主菜单; 输入选项8,回车; 输入文件名:data,回车; 出现成功提示,则读入文件操作成功。 4、回到主菜单,输入1,回车 每10个暂停显示数据 5、回到主菜单,输入2,回车 出现排序成功信息。 6、回到主菜单,输入3,回车 出现排序成功信息。 7、回到主菜单,输入5,回车 按提示插入一组数据 8、回到主菜单,输入6,回车 按提示输入姓名,删除数据 出现删除成功的信息 9、回到主菜单,输入4,回车 输入学号进行查询 10、回到主菜单,输入1,回车 出现统计信息 11、回到主菜单,输入7,回车 输入result,回车 出现成功写入文件的信息 12、回到主菜单,输入9,回车退出系统
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硬核的无脸man~

你的鼓励是我创作的最大功力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值