IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构课程设计——学生成绩查询与分析系统(简单详细版,含讲解) -> 正文阅读

[数据结构与算法]数据结构课程设计——学生成绩查询与分析系统(简单详细版,含讲解)

写在前面:欢迎来到「湫歌」的博客。我是秋秋,一名普通的在校大学生。在学习之余,用博客来记录我学习过程中的点点滴滴,也希望我的博客能够更给同样热爱学习热爱技术的你们带来收获!希望大家多多关照,我们一起成长一起进步。也希望大家多多支持我鸭,喜欢我就给我一个关注吧!

课程题目:学生成绩查询与分析系统

1、学生信息包括:学号、姓名、性别、四门课成绩

2、系统要求:分为两个版本系统,老师版和学生版,老师版需要输入密码进入老师版系统,在老师版系统中可以删除和修改学生成绩。学生版系统不需要输入密码,但不可以修改和删除学生成绩。

3、功能要求:如果选择“输入学生信息”,则显示“请输入学生姓名、学号、成绩”,并能输入;选择“学生姓名查找”,可以按照姓名查找该学生的各科成绩和平均分;选择“学生学号查找”,可以按照学号查找该学生的各科成绩和平均分,选择“按照姓名排序”,可以显示按姓名排序结果;选择“按照学号排序”,可以显示按学号排序结果;选择“按照总成绩排序”,可以显示按成绩排序结果;选择“按照学号查找学生信息”,可以按照学号输出学生姓名,学号,成绩;选择“按照姓名查找学生信息”,可以按照姓名输出学生姓名,学号,成绩;选择0,显示“谢谢使用”;选择其他则显示“输入错误,请重新输入)。

4、基本要求:用C语言实现程序设计;
利用结构体数组、链表等实现学生信息表达、查询等,充分体现数据结构的知识;
系统的各个功能模块要求用函数的形式实现;
界面友好(良好的人机交互),程序要有注释。
程序中所用到的排序查找方法需采用数据结构中所学方法实现,要求方法实用效率高。

一、结构体与链表

1、学生信息结构体

//学生信息结构体
typedef struct
{
	int num;//学号
	char name[50];//姓名
	char sex[50];
	float chengji1, chengji2, chengji3, chengji4;
	float sum, average;
	int score;
}student;

2、链表结构体

//链表的结构体
typedef struct LNode
{
	student data;
	struct LNode* next;
}LNode, * LinkList;

二、总体功能设计

1、菜单页

系统主菜单?

//主菜单
void menu() {
	system("cls");
	printf("主菜单==============\n");
	printf("0.退出系统\n");
	printf("1.选择教师版系统\n");
	printf("2.选择学生版系统\n");
	printf("===================\n");
	printf("请选择(0-2)\n");
	printf("\n");
}

?老师版系统菜单

//老师版菜单
void teachermenu() {
	system("cls");
	printf("老师版系统==========\n");
	printf("0.返回主菜单\n");
	printf("1.输入学生信息\n");
	printf("2.按姓名查询学生信息\n");
	printf("3.按学号查找学生信息\n");
	printf("4.修改学生信息\n");
	printf("5.删除学生信息\n");
	printf("6.按姓名排序\n");
	printf("7.按学号排序\n");
	printf("8.按总成绩排序\n");
	printf("9.打印学生信息\n");
	printf("===================\n");
	printf("请选择(0-9)\n");
	printf("\n");
}

学生版系统菜单?

//学生版菜单
void studentmenu() {
	system("cls");
	printf("学生版系统==========\n");
	printf("0.返回主菜单\n");
	printf("1.按姓名查询学生信息\n");
	printf("2.按学号查找学生信息\n");
	printf("3.按姓名排序\n");
	printf("4.按学号排序\n");
	printf("5.按总成绩排序\n");
	printf("6.打印学生信息\n");
	printf("===================\n");
	printf("请选择(0-6)\n");
	printf("\n");
}

2、主要功能

功能一——输入学生信息

//输入学生信息
void input(LinkList& L) {
	FILE* outfile;
	outfile = fopen("student.txt", "a+");
	float sum, average;
	printf("请输入学生信息\n");
	LNode* p = new LNode;
	p = L;
	while (p->next != NULL) {
		p = p->next;
	}
	for (;;) {
		LNode* q = new LNode;
		q->next = NULL;
		printf("请输入学生学号\n");cin >> q->data.num;
		printf("请输入学生姓名\n");cin >> q->data.name;
		printf("请输入学生性别\n");cin >> q->data.sex;
		printf("请依次输入四门课程的成绩(python,java,c++,数据结构)\n");cin >> q->data.chengji1 >> q->data.chengji2 >> q->data.chengji3 >> q->data.chengji4;
		q->data.sum = q->data.chengji1 + q->data.chengji2 + q->data.chengji3 + q->data.chengji4;q->data.average = q->data.sum / 4.0;
		if (outfile == NULL) {
			printf("不能打开文件\n");
		}
		else {
			fprintf(outfile, "%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",
				q->data.num, q->data.name, q->data.sex, q->data.chengji1, q->data.chengji2, q->data.chengji3, q->data.chengji4, q->data.sum, q->data.average);
			fclose(outfile);
		}
		p->next = q;
		p = q;
		L->data.score++;
		int j;
		printf("若继续输入学生信息则输入1,返回主菜单则输入0\n");
		scanf("%d", &j);
		//若用户输入1,则继续输入学生信息
		if (j == 1) {N++;continue;}
		//若用户输入0,则返回主菜单
		else{break;}
	}
	system("pause");
}

功能二——按姓名查询学生信息

//姓名查找
int xingmingchazhao(LinkList& L) {
	char ch[50];
	bool flag = true;
	printf("请输入查询学生的姓名:");
	cin >> ch;
	LNode* p = new LNode;
	p = L;
	int m;
	while (p->next != NULL) {
		if (strcmp(p->data.name, ch) == 0) {

			printf("请输入要查询的学生成绩的学科\n");
			printf("0、返回上一页面 1、Python 2、Java 3、C++ 4、数据结构 5、总成绩 6、平均分 7、所有数据信息\n");
			scanf("%d", &m);
			if (m == 0 || m == 1 || m == 2 || m == 3 || m == 4 || m == 5 || m == 6 || m == 7) {
				switch (m)
				{
				case 0:return 0;
				case 1: {printf("Python分数:%.2f\n", p->data.chengji1);break;}
				case 2: {printf("Java分数:%.2f\n", p->data.chengji2);break;}
				case 3: {printf("C++分数:%.2f\n", p->data.chengji3);break;}
				case 4: {printf("数据结构分数:%.2f\n", p->data.chengji4);break;}
				case 5: {printf("总成绩:%.2f\n", p->data.sum);break;}
				case 6: {printf("平均分:%.2f\n", p->data.average);
					break;
				}
				case 7: {printf("学号\t姓名\t性别\tPython\tJava\tC++\t数据结构\t总成绩\t平均分\n");
					printf("%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t\t%.2f\t%.2f\t%.2f\n",
						p->data.num, p->data.name, p->data.sex, p->data.chengji1, p->data.chengji2,
						p->data.chengji3, p->data.chengji4, p->data.sum, p->data.average);
					break;
				}
				}
			}


			else {
				printf("输入错误请重新输入\n");
				system("pause");
			}



			flag = false;
		}
		p = p->next;
	}
	if (flag) {
		printf("系统没有该学生信息!");system("pause");
	}
	system("pause");
}

功能三——按学号查找学生信息

//学号查找
int xuehaochazhao(LinkList& L) {
	int ch;
	int m;
	bool flag = true;
	printf("请输入查询学生的学号:");
	cin >> ch;
	LNode* p = new LNode;
	p = L;
	while (p->next != NULL) {
		if (ch==p->data.num) {
			
			printf("请输入要查询的学生成绩的学科\n");
			printf("0、返回上一页面 1、Python 2、Java 3、C++ 4、数据结构 5、总成绩 6、平均分 7、所有数据信息\n");
			scanf("%d", &m);
			if (m == 0 || m == 1 || m == 2 || m == 3 || m == 4 || m == 5 || m == 6||m==7) {
				switch (m)
				{
				case 0:return 0;
				case 1: {printf("Python分数:%.2f\n", p->data.chengji1);break;}
				case 2: {printf("Java分数:%.2f\n", p->data.chengji2);break;}
				case 3: {printf("C++分数:%.2f\n", p->data.chengji3);break;}
				case 4: {printf("数据结构分数:%.2f\n", p->data.chengji4);break;}
				case 5: {printf("总成绩:%.2f\n", p->data.sum);break;}
				case 6: {printf("平均分:%.2f\n", p->data.average);
					break;
				}
				case 7: {printf("学号\t姓名\t性别\tPython\tJava\tC++\t数据结构\t总成绩\t平均分\n");
					printf("%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t\t%.2f\t%.2f\t%.2f\n",
						p->data.num, p->data.name, p->data.sex, p->data.chengji1, p->data.chengji2,
						p->data.chengji3, p->data.chengji4, p->data.sum, p->data.average);}
				}
			}
			else {
				printf("输入错误请重新输入\n");
				system("pause");
			}
			
			
			
			flag = false;
		}
		p = p->next;
	}
	if (flag) {
		printf("系统没有该学生信息!");system("pause");
	}
	system("pause");
}

功能四——删除学生信息

//删除信息
void cut(LinkList& L) {
	printf("请输入要删除的学生学号:");
	int n;
	bool flag = true;
	cin >> n;
	LNode* p = new LNode;
	p = L;

	while (p->next != NULL)
	{
		if (n == p->next->data.num)
		{
			p->next = p->next->next;
			p = L;            //又从头开始遍历,避免忽略掉连续数据相同的情况
			flag = false;
			continue;

		}
		p = p->next;
	}
	if (flag) {
		printf("系统没有该学生信息!\n");
	}
	else {
		printf("删除成功!\n");
	}
	system("pause");
}

功能五——修改学生信息

//修改成绩
void change(LinkList& L) {
	printf("请输入要修改的学生学号:");
	int n;
	bool flag = true;
	cin >> n;
	LNode* p = new LNode;
	p = L;
	while (p != NULL)
	{
		if (n == p->data.num) {
			printf("请输入修改的成绩:\n");
			printf("该学生姓名为:%s\n", p->data.name);
			printf("Python成绩: %.2f,新成绩为:", p->data.chengji1);cin >> p->data.chengji1;
			printf("Java成绩: %.2f,新成绩为:", p->data.chengji2);cin >> p->data.chengji2;
			printf("C++成绩: %.2f,新成绩为:", p->data.chengji3);cin >> p->data.chengji3;
			printf("数据结构成绩: %.2f,新成绩为:", p->data.chengji4);cin >> p->data.chengji4;
			printf("修改成功!\n");
			system("pause");
			flag = false;
		}
		p = p->next;
	}
	if (flag) {
		printf("系统没有该学生信息!");
	}
	system("pause");
}

功能六——按姓名排序

//按姓名排序
void xingmingpaixu(LinkList& L) {
	LNode* Q = new LNode;
	Q->next = NULL;
	paixubeifen(L);
	duqubeifen(Q);
	LNode* p = new LNode;
	p = Q;
	LNode* max = new LNode;
	max=Q;
	if (Q->next == NULL) {
		printf("学号\t姓名\t性别\tPython\tJava\tC++\t数据结构\t总成绩\t平均分\n");
		printf("%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",
			Q->data.num, Q->data.name, Q->data.sex, Q->data.chengji1, Q->data.chengji2,
			Q->data.chengji3, Q->data.chengji4, Q->data.sum, Q->data.average);
	}
	else {
		printf("学号\t姓名\t性别\t成绩1\t成绩2\t成绩3\t成绩4\t总成绩\t平均分\n");

		for (;p != NULL;p = p->next) {
			for (max = p->next;max != NULL;max = max->next) {
				if (strcmp(p->data.name,max->data.name)<0) {
					student tmp = p->data;
					p->data = max->data;
					max->data = tmp;
				}
			}
		}
		while (Q->next != NULL) {
			Q = Q->next;
			printf("%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",
				Q->data.num, Q->data.name, Q->data.sex, Q->data.chengji1, Q->data.chengji2,
				Q->data.chengji3, Q->data.chengji4, Q->data.sum, Q->data.average);
			
		}
	}
	system("pause");
}

功能七——按学号排序

//按学号排序
void xuehaopaixu(LinkList& L) {
	LNode* Q = new LNode;
	Q->next = NULL;
	paixubeifen(L);
	duqubeifen(Q);
	LNode* p = new LNode;
	p = Q;
	LNode* max = new LNode;
	if (Q->next == NULL) {
		printf("学号\t姓名\t性别\tPython\tJava\tC++\t数据结构\t总成绩\t平均分\n");
		printf("%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",
			Q->data.num, Q->data.name, Q->data.sex, Q->data.chengji1, Q->data.chengji2,
			Q->data.chengji3, Q->data.chengji4, Q->data.sum, Q->data.average);
	}
	else {
		printf("学号\t姓名\t性别\t成绩1\t成绩2\t成绩3\t成绩4\t总成绩\t平均分\n");

		for (;p != NULL;p = p->next) {
			for (max = p->next;max != NULL;max = max->next) {
				if (max->data.num < p->data.num) {
					student tmp = p->data;
					p->data = max->data;
					max->data = tmp;
				}
			}
		}
		while (Q->next != NULL) {
			Q = Q->next;
			printf("%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",
				Q->data.num, Q->data.name, Q->data.sex, Q->data.chengji1, Q->data.chengji2,
				Q->data.chengji3, Q->data.chengji4, Q->data.sum, Q->data.average);

		}
	}
	system("pause");
}

功能八——按总成绩排序

//按总成绩排序
void zongchengjipaixu(LinkList& L) {
	LNode* Q = new LNode;
	Q->next = NULL;
	paixubeifen(L);
	duqubeifen(Q);
	LNode* p = new LNode;
	p = Q;
	LNode* max = new LNode;
	if (Q->next == NULL) {
		printf("学号\t姓名\t性别\tPython\tJava\tC++\t数据结构\t总成绩\t平均分\n");
		printf("%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",
			Q->data.num, Q->data.name, Q->data.sex, Q->data.chengji1, Q->data.chengji2,
			Q->data.chengji3, Q->data.chengji4, Q->data.sum, Q->data.average);
	}
	else {
		printf("学号\t姓名\t性别\tPython\tJava\tC++\t数据结构\t总成绩\t平均分\n");

		for (;p != NULL;p = p->next) {
			for (max = p->next;max != NULL;max = max->next) {
				if (max->data.sum > p->data.sum) {
					student tmp = p->data;
					p->data = max->data;
					max->data = tmp;
				}
			}
		}
		while (Q->next != NULL) {	
			printf("%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",
				Q->data.num, Q->data.name, Q->data.sex, Q->data.chengji1, Q->data.chengji2,
				Q->data.chengji3, Q->data.chengji4, Q->data.sum, Q->data.average);
			Q = Q->next;
		}
	}
	system("pause");
}

功能九——打印学生信息

//打印学生信息
void dayingxueshengxinxi(LinkList& L) {
	if (L->data.score == 0) {
		printf("该系统暂时没有学生信息\n");
	}
	else {
		LNode* q = new LNode;
		q = L;
		printf("学号\t姓名\t性别\tPython\tJava\tC++\t数据结构\t总成绩\t平均分\n");
		while (q->next != NULL) {

			q = q->next;
			printf("%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",
				q->data.num, q->data.name, q->data.sex, q->data.chengji1, q->data.chengji2,
				q->data.chengji3, q->data.chengji4, q->data.sum, q->data.average);
		}
	}
	system("pause");
}

//存入文件
void save(LinkList& L) {
	FILE* outfile;
	outfile = fopen("student.txt", "w+");
	LNode* q = new LNode;
	q = L;
	if (outfile == NULL) {
		printf("不能打开该文件\n");
		_getch();
	}
	else {
		while (q->next != NULL) {
			q = q->next;
			fprintf(outfile,"%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",
				q->data.num, q->data.name, q->data.sex, q->data.chengji1, q->data.chengji2,
				q->data.chengji3, q->data.chengji4, q->data.sum, q->data.average);
		}
	}
	fclose(outfile);
}

相关资源及源代码:(1条消息) 数据结构课程设计c语言学生管理系统(简单详细版)-C/C++文档类资源-CSDN文库

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-01-14 02:14:08  更:2022-01-14 02:14:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 18:50:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码