资源简介
1、学生成绩管理(必做)(链表)
[问题描述]
设计一个程序,记录并统计班级学生的成绩情况。
[基本要求]
(1) 该题目要求使用双向链式线性表。每个结点存储的信息包括姓名,成绩。排序要求是按照成绩自多到少排序。另外,将有不及格成绩的学生单独存成一个链表。
(2) 初始输入: 从文件读入学生信息,建立初始链表。
(3)动态调整链表结点顺序,不及格成绩学生结点移到另外一个链表。
(4) 可有补考成绩输入,补考后及格的学生结点再移入正常链表。
(5) 可进行各种常见操作,例如显示所有学生成绩、插入一个学生节点、删除一个学生节点、查询学生成绩等。
代码片段和文件信息
#include
using namespace std;
#include
#include
#include
typedef struct Student //定义包含学生姓名和成绩的结构体
{
char*name;
int grade;
}ST;
typedef struct DuLNode //定义双向链表
{
ST data;
struct DuLNode *prior *next; //前后指针
}LIST;
LIST* insert(LIST* LIST*); //插入节点
void creat_list(LIST* LIST*); //创建双向链表
LIST *del(LIST* char *); //删除节点
int menu_select(); //功能选择
LIST*search(LIST*); //寻找节点
void show_list(LIST*); //显示链表信息
//*****************************************************主函数
void main()
{
LIST*pass *fail *p *q;
char student_name[20];
int grade;
for (;;)
{
switch (menu_select())
{
case 1:printf(“建立学生成绩管理系统!\n“);
pass = (LIST*)malloc(sizeof(LIST));
fail = (LIST*)malloc(sizeof(LIST));
creat_list(pass fail);
printf(“系统成功建立!\n“);
break;
case 2:printf(“插入一个学生节点!\n“);
p = (LIST*)malloc(sizeof(LIST));
printf(“请输入插入学生的姓名:\n“);
scanf(“%s“ student_name);
printf(“请输入该生成绩:\n“);
scanf(“%d“ &grade);
p->data.name = (char*)malloc(strlen(student_name)*sizeof(char));
strcpy(p->data.name student_name);
p->data.grade = grade;
if (p->data.grade >= 60) //该生及格
pass = insert(pass p);
else //该生不及格
fail = insert(fail p);
printf(“插入成功!\n“);
break;
case 3:printf(“查询学生成绩!\n“);
printf(“现在先在及格学生中查找!\n“);
p = search(pass);
if (p == NULL) //表面所查找学生不在及格学生之列
{
printf(“现在在不及格学生中查找!\n“);
p = search(fail);
if (p == NULL)
{
printf(“请检查输入是否有误!\n“);
break;
}
}
printf(“所查询学生的成绩为:%d\n“ p->data.grade);
break;
case 4:printf(“删除学生信息!\n“);
printf(“请输入删除学生的姓名:\n“);
scanf(“%s“ student_name);
printf(“现在先在及格学生中查找要删除的学生!\n“);
p = del(pass student_name);
if (p == NULL)
{
printf(“现在在不及格学生中查找要删除的学生!\n“);
del(fail student_name);
}
break;
case 5:printf(“输出成绩!\n“);
printf(“及格学生成绩为:\n“);
show_list(pass);
printf(“不及格学生成绩为:\n“);
show_list(fail);
break;
case 6:printf(“输入补考成绩!\n“);
q = (LIST*)malloc(sizeof(LIST));
q->data.name = (char*)malloc(strlen(student_name)*sizeof(char));
q = search(fail); //在不及格学生链表中找到对应的学生
strcpy(student_name q->data.name);
if (fail->next == q)
{
fail->next = q->next;
if (q->next)
q->next->prior = fail;
}
else
{
q->prior->next = q->next;
if (q->next)
q->next->prior = q->prior;
}
free(q); //在不及格学生中删除该生信息
p = (LIST*)malloc(sizeof(LIST));
p->data.name = (char*)malloc(strlen(student_name)*sizeof(char));
strcpy(p->data.name student_name);
printf(“请输入该生补考成绩:\n“);
scanf(“%d“ &grade);
p->data.grade = grade;
if (p->da
相关资源
- C语言下用单链表实现一元多项式的四
- C语言程序设计学生成绩管理系统
- C/C++课程设计-学生成绩管理系统
- c++学生成绩管理系统源代码+实验报告
- 泛型链表——C语言实现
- 使用C++的二叉搜索树实现学生成绩管
- 邻接矩阵和邻接链表的克鲁斯卡尔算
- 数据结构课程设计学生成绩管理系统
- 杂志订阅系统,链表完成
- 操作系统使用C语言链表实现进程管理
- C语言课程设计代码学生成绩管理系统
- C++,链表,通讯录系统
- 用C语言实现异质链表
- 学生成绩管理系统C语言、C++6.0 控制台
- 已知head为单链表的表头指针,链表中
- C++实现双向链表完整代码
- 计算N阶乘n>20)用链表形式
- C语言实战-学生成绩管理系统
- c语言实现的单链表和循环链表
- 学生成绩管理系统V6.0 c语言大作业
- C++图书信息管理系统使用链表写的
- C++实现通用链表
- c语言版学生成绩管理系统实验报告
- 学生成绩管理系统C语言
- 数据结构 通讯录管理 课程设计C++单链
- 用链表实现多项式加减法运算
- 数据结构程序设计学生成绩管理系统
- 学生成绩管理系统 C、VC++
- 数据结构c语言 学生成绩管理系统
- 数据结构列车时刻表管理系统
评论
共有 条评论