C语言程序设计大作业

  • 格式:docx
  • 大小:582.03 KB
  • 文档页数:19

1

学年学期: 20xx - 20xx 学年 1 学期

课程名称: C语言程序设计综合训练

课程学分: 2分 考核形式: 大作业

任课教师: xx

题 目: 学生成绩统计程序

学 院:xx学院__________________________________

专业班级:xx_______________________________________

学 号: _______ 学生姓名:

提交日期: 2 目录

目录 .................................................................................................................................................. 2

引言 .................................................................................................................................................. 3

1. 学生成绩管理系统 ...................................................................................................................... 4

1.1系统简介 ............................................................................................................................. 4

1.2相关代码及知识点介绍 ..................................................................................................... 4

2. 添加学生成绩功能 ...................................................................................................................... 5

3. 查找学生成绩功能 ...................................................................................................................... 6

4. 排序学生成绩功能 ...................................................................................................................... 7

5. 展示学生成绩功能 ...................................................................................................................... 9

6. 删除学生成绩功能 .................................................................................................................... 10

7. 附页代码 .................................................................................................................................... 11

3 引言

C语言是一种比较常见的计算机语言,许多大型应用软件都是用C语言编写而成的。其简洁紧凑,灵活方便,数据结构丰富。在一定程度上,C语言比汇编语言更实用,具有结构化语句,实现了结构化编程,使程序编写变得更容易、更快捷,可以编写出各种类型的程序。

同时,C语言是一门实践性强的学科,在学习的过程中,利用所学知识,编写一些与生活、学习相关的应用程序来提高程序编写能力,增强学习兴趣。

本次使用C语言设计一个学生成绩管理系统,可以实现学生成绩的添加,查找,排序及展示。在作业中使用的是函数的模块化设计,将四个程序使用四个函数来实现。与此同时,增加用户界面的交互,可供用户选择想要的功能,实现增删查排等操作。

4 1. 学生成绩管理系统

1.1系统简介

该系统主要实现学生成绩的添加,查找,排序,展示和删除五个功能,添加学生成绩主要有6个输入值组成,其中包括学号,姓名,语文,数学,英语,政治等。查找学生成绩主要通过学号查询。对学生成绩进行排序,可以分别通过学号,语文,数学,英语,政治,平均分,总分等进行排序。第四项功能是对学生成绩以表格的形式进行展示。删除学生成绩是按照学号对表格中的数据进行删除。

1.2相关代码及知识点介绍

在主方法中,用到了输出printf(),输入scanf(),多分支选择语句,函数的调用 5 及链表的动态分配内存。以输出语句构成整个学生成绩系统的主页面,同时该页面实现用户的交互功能,使用scanf()函数输入一个数值,用于选择用户所需要对学生成绩管理系统所需要的操作。通过输入后的数字建立多分支选择语句,输出指定功能页面的文字,并且调用相关函数。调用后,break;退出后就会重新返回主页面。可以重新选择相关功能,进行实现。

更多的代码还是介绍下面的添加,查找,排序,展示学生成绩。

2. 添加学生成绩功能

实现添加学生成绩主要通过input()函数来实现,其中放入链表llist,重新申请一个pnode变量对应大小的内存,依次输入考试学生人数,学生学号,姓名,语文,数学,英语,政治成绩,将其放在p所对应的相关属性中,同时给sum属性加上各科成绩,并且计算平均值。再将相关指针移向下一个。再在最后输出“完成录入”,则成功录入,详见下图。 6

3. 查找学生成绩功能

查找学生成绩代码较为简洁,创建一个LinkList e给其赋值,通过输入的学号找到指定列并进行输出,统一都是以e->stdio,e->name等格式进行输出,将float型的变量限制小数点位数,使用%6.2f表示数字整体长度包括小数点一共有六位,其中小数点占据两位。

具体页面详见下图: 7

4. 排序学生成绩功能

排序学生成绩功能可以分别依据学号,数学,语文,英语,政治,平均分,总分进行排序,通过用户交互界面使用scanf()输入相关数值,放入多分支选择语句,控制指针如果为null则输出“学生成绩无数据”,下下个指针对应的就是学生成绩为一个,无需排序,否则将分支语句的当前指针和下一个指针进行比较,最后,再次指向下一个节点对应的数据。 还有更多的数学,语文,英语,政治,平均分,总分等可以进行排序,可以 8 更改条件所对应的大于或者小于,用于修改相关排列是升序还是降序。

运行页面详见下图:

9 5. 展示学生成绩功能

对学生成绩展示功能,使用函数display()放入链表,调整指针判断系统中是否有数据,调整指针,输出相关行,则可以形成一个表格,并且计算各科的平均值,并且进行输出。

10

6. 删除学生成绩功能

创建一个deletelist函数,并将链表放入函数中,实现用户交互界面,删除指定学号所在的行,调整指针变量,略去指定学号的变量位置,如果删除值等于当前输入值,则将指针变量调整到下一个,否则就输出删除值不存在。

运行页面如下: 11

7. 附页代码

#include

#include

#include

#include

using namespace std;

typedef struct PNode *LinkList;

typedef struct PNode{

int stdio;

char name[30];

double chinese;

double math;

double english;

double politics;

double average;

double sum;

PNode *next; 12 }PNode;

void input(LinkList llist){

printf("请输入考试的学生人数:\n");

int n;scanf("%d",&n);

LinkList p;

for(int i=1;i<=n;i++){

p=(LinkList)malloc(sizeof(PNode));//申请pnode变量对应大小的内存(动态分配内存)

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

scanf("%d",&p->stdio);

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

scanf("%s",p->name);

printf("请输入学生语文成绩:\n");

scanf("%lf",&p->chinese);

printf("请输入学生数学成绩:\n");

scanf("%lf",&p->math);

printf("请输入学生英语成绩:\n");

scanf("%lf",&p->english);

printf("请输入学生政治成绩:\n");

scanf("%lf",&p->politics);

p->sum=p->chinese+p->math+p->english+p->politics;

p->average=(p->sum)/4;

p->next=llist->next;

llist->next=p;

}

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

}

void check(LinkList llist){

LinkList e=llist->next;

int f;

printf("请输入查找的学号:\n");

scanf("%d",&f);

while(e->stdio!=f)

e=e->next;