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;