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 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c语言结课设计——学生成绩管理系统 -> 正文阅读

[C++知识库]c语言结课设计——学生成绩管理系统

学生成绩管理管理系统

(一)学校现状分析

1、某学校有本科生和研究生两类学生,学生信息包括基本资料数据和成绩数据两部分。

A.本科生:基本资料数据包括学号、姓名、性别、专业、班级,学号自动生成,其他全部是输入项;成绩数据包括高数成绩、英语成绩、C语言成绩、总成绩、班级排名、校级排名,其中:高数成绩、英语成绩、C语言成绩为输入项,总成绩、班级排名、校级排名是计算项,班级排名是总成绩在班内的名次,校级排名是总成绩在校内的名次。

B.研究生:基本资料数据包括学号、姓名、性别、专业、班级、研究方向、导师,学号自动生成,其他全部是输入项;成绩数据包括课程综合成绩、论文成绩、总成绩、班级排名、校级排名,其中:课程综合成绩、论文成绩为输入项,总成绩、班级排名、校级排名是计算项,班级排名是总成绩在班内的名次,校级排名是总成绩在校内的名次。

2、现在需要开发一个学生成绩管理系统对学生成绩进行有效管理。

(二)系统的功能要求

  1. 数据维护管理:要求对学生的基本资料数据和成绩数据分开管理。基本资料数据的维护管理功能包括添加(批量、单个)、修改、删除、查询等;成绩数据的维护管理功能包括输入(批量、单个)、修改、删除、查询等。

A. 基本资料数据的维护管理

(1).添加:(批量、单个)添加学生基本资料数据。本科生的基本资料数据包括学号、姓名、性别、专业、班级,学号自动生成,其他全部是输入项。研究生的基本资料数据包括学号、姓名、性别、专业、班级、研究方向、导师,学号自动生成,其他全部是输入项

(2).修改:根据学号来修改任意学生的除学号外的其他基本资料数据。

(3).删除:根据学号删除一个学生。

(4).查询:根据学号查询一个学生的基本资料数据。

B. 成绩数据的维护管理

(1).输入:(批量、单个)输入学生成绩数据。成绩数据根据学生类型的不同而有区别,输入的相关数据也应不同。注意:总成绩、班级排名、校级排名是计算项,不能输入。

(2).修改:根据学号来修改任意学生的相关成绩数据(注意:不同类别学生相关数据不同)。

(3).删除:根据学号删除一个学生(不能删除,只需将相关数据项设置成-1)。

(4).查询:根据学号查询一个学生的成绩数据。

(5).计算:批量计算所有学生的总成绩、班级排名、校级排名。注意,只有各项数据都为有效数据时(-1为无效数据),才能计算。

  1. 排名功能

A:班级排名:分本科生和研究生两类学生,计算每个学生总成绩在班级中的名次。

B:校级排名:分本科生和研究生两类学生,计算每个学生总成绩在全校中的名次。

说明:排名规则按体育竞赛规则,若出现两个并列第1名,下个名次为第3名,依此类推。

  1. 排序功能:分本科生和研究生两类人员,实现下列排序功能。
    1. 所有学生信息按总成绩从高到低排序并显示。
    2. 某个班学生信息按总成绩从高到低排序并显示。
  2. 查询功能:分本科生和研究生两类人员,实现下列查询功能。
  1. 分页显示全部学生的信息。分页功能:每页显示10条学生的信息,有上一页、下一页、首页和最后一页的功能。
  2. 能够按班级显示本班全部学生信息。注意:无需分页显示。
  3. 能够根据学号或者姓名查询学生信息。
  4. 能够在某个班级中查询某门课成绩不及格学生信息。注意:无需分页显示。
  1. 统计功能:分本科生和研究生两类人员,实现下列统计功能。
  1. 统计并显示某门课每个班的平均成绩。如果学生该门课没有成绩,则统计时忽略该生。
  2. 在某个班中统计并显示某门课程不同等级的学生人数。等级标准:优—成绩大于等于90;良—成绩大于等于80且小于90;中:成绩大于等于70且小于80;及格:成绩大于等于60且小于70;不及格:成绩小于60。

(三)系统的实现技术要求

  1. 学生用结构体表示,本科生和研究生分别用两个链表来存储表示。
  2. 必须用文件来存储学生信息。

A.建立本科生和研究生两个文件,分别存放两类学生的信息。

B. 开始运行程序时,从文件中读取学生信息链入到两个不同的链表。

C. 退出程序时将学生信息保存到不同的文件。

D. 主菜单有一个菜单项能够将学生信息保存到文件。

  1. 数据约束:
  1. 学号:整型、不能重复、从1开始依次递增、由软件自动计算产生,不能修改。
  2. 性别:男和女,必须使用枚举类型。
  3. 各种成绩:整型,取值范围为0-100。-1表示未有此项成绩。
  4. 其他:至少有两层菜单。

程序框架图

代码资源:https://download.csdn.net/download/whwsadasd/20692593?spm=1001.2014.3001.5501

运行结果:

?

分页显示代码(部分):

void showOneStudent(struct gstudent* nowstudent)
{
	switch (nowstudent->sex)
	{
	case male:
		printf("\t\t\t\t%d %s 男 %s %d %s %s %d %d %d %d %d\n", nowstudent->num, nowstudent->name, nowstudent->major, nowstudent->Class, nowstudent->reserch, nowstudent->tname, nowstudent->score[0], nowstudent->score[1], nowstudent->score[2], nowstudent->classrank, nowstudent->allrank);
		break;
	case female:
		printf("\t\t\t\t%d %s 女 %s %d %s %s %d %d %d %d %d\n", nowstudent->num, nowstudent->name, nowstudent->major, nowstudent->Class, nowstudent->reserch, nowstudent->tname, nowstudent->score[0], nowstudent->score[1], nowstudent->score[2], nowstudent->classrank, nowstudent->allrank);
		break;
	}
}
void getPage(struct gstudent* Head, int page, int pageSize)
{
	int nowI = 0;
	int start = (page - 1) * pageSize + 1;
	int end = start + pageSize - 1;
	struct gstudent* p = Head;
	printHead();
	while (p != NULL) {
		nowI++;
		if (nowI >= start && nowI <= end)
			showOneStudent(p);
		else if (nowI > end)
			break;
		p = p->next;
	}

}
void showAll()
{
	int menuItem;
	int page = 1, PAGESIZE = 10;
	int totalPage;
	int error;

	struct gstudent* p = Head->next;
	int peopleNumber = 0;

	while (p != NULL) {
		peopleNumber++; p = p->next;
	}
	if (peopleNumber == 0) {
		printf("无相应类别的学生数据!");
		return;
	}

	/*计算总页数*/
	if (peopleNumber % PAGESIZE == 0) {
		totalPage = peopleNumber / PAGESIZE;
	}
	else {
		totalPage = peopleNumber / PAGESIZE + 1;
	}
	/*分页显示*/
	while (1) {
		fflush(stdin);
		if (peopleNumber == 0) {
			printf("当前无任何学生数据!\n");
			break;
		}
		printf("\n当前第%d页,总共%d页", page, totalPage);
		printf("-----------------------------------------");
		printf("-----------------------------------------\n");
		getPage(Head->next, page, PAGESIZE);
		printf("\n当前第%d页,总共%d页", page, totalPage);

		printf("-----------------------------------------");
		printf("-----------------------------------------\n");
		if (page == 1 && totalPage == 1) {
			break;
		}
		else if (page == 1) {
			printf("分页菜单:3-下页  4-尾页  5-返回\n");
			printf("请输入菜单编号(3-5):");
			do {
				fflush(stdin);
				scanf("%d", &menuItem);
				switch (menuItem) {
				case 3:page++; error = 0; break;
				case 4:page = totalPage; error = 0; break;
				case 5:return;
				default:error = 1;
					printf("菜单编号输错,请重新输入菜单编号(3-5):");
					break;
				}
			} while (error);
		}
		else if (page == totalPage) {
			printf("分页菜单:1-首页  2-上页  5-返回\n");
			printf("请输入菜单编号(1,2,5):");
			do {
				fflush(stdin);
				scanf("%d", &menuItem);
				switch (menuItem) {
				case 1:page = 1; error = 0; break;
				case 2:page--; error = 0; break;
				case 5:return;
				default:error = 1;
					printf("菜单编号输错,请重新输入菜单编号(3-5):");
					break;

				}
			} while (error);
		}
		else {
			printf("分页菜单:1-首页  2-上页  3-下页  4-尾页  5-返回\n");
			printf("请输入菜单编号(1 - 5):");
			do {
				fflush(stdin);
				scanf("%d", &menuItem);
				switch (menuItem) {
				case 1:page = 1; error = 0; break;
				case 2:page--; error = 0; break;
				case 3:page++; error = 0; break;
				case 4:page = totalPage; break;
				case 5:return;
				default:error = 1;
					printf("菜单编号输错,请重新输入菜单编号(3-5):");
					break;
				}
			} while (error);
		}



	}
}

?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-04 11:00:48  更:2021-08-04 11:02:18 
 
开发: 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年5日历 -2024/5/9 22:23:03-

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