基于C++实现的学生信息管理系统

这篇具有很好参考价值的文章主要介绍了基于C++实现的学生信息管理系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

点击获取(源码+课程设计报告文档+截图)

摘要

学生信息管理系统是针对学校人事处的大量业务处理工作而开发的管理软件,主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、科学化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改、增加、删除,另外还考虑到学生成绩管理,针对这些要求设计了学生信息管理系统。
随着社会的发展,计算机越来越深入到我们日常的工作学习及生活中、成为我们日常生活不可或缺的辅助工具。随着科学技术的不断提高,计算机科学日渐成熟、其强大的功能已成为人们深刻认识、它已为人们深刻认识。它已进入人类社会的各个领域并发挥着越来越重要的作用。现在由于学校规模进一步扩大,学生人数逐渐上升。在学校的学生信息管理中、虽然已经存在许多学生信息管理系统、但由于学校之间的管理差异很信息的不同。各个学棱的学生信息管理的要求不一致,这样我们需要根据具体学习的具体要求来开发学生信息管理系统以方便学生管理。本系统主要对学生各种信息进行处理。
本系统采用C语言编写。设计从实用性出发,设计开发出一个操作简单且符合实际需要的学生信息管理系统。本文设计出一个可以添加、修改、查询、删除、统计的学生信息管理系统,最后,通过测试分析,力求将学到的只是在学生信息管理系统的得到全面运用、并使系统在实际的操作中能按照设计的要求安全有效的正确运行。
学生信息管理系统是为了提高学校管理效率而设计的。它完全取代了原来一直用人工管理的工作方式,避免了由于管理人员的工作疏忽以及管理质量问题所造成的各种错误、为及时、准确、高效的完成学生信息管理提供了强有力的工具和管理手段。
关 键 词: 学生信息管理系统;C语言;顺序结构;链式结构

目录

1 概述

1.1 课程设计目的

强化训练C语言基本知识的巩固和综合运用;能高效的运用基本数据类型、基本控制结构、数组、指针、函数、结构体和共用体;能高效的进行C语言高级编程、链表、编辑、设置、编译、调试、执行等基本操作;能够结合实际问题来运用C语言进行的综合设计。
通过本次实验,为本学期所学知识有了个很好的总结,提供了一个既动手又动脑,上机实践的机会。通过分析和解决该实验,将书上课本的理论知识和实践实验有机地结合起来,锻炼分析、解决较复杂问题的能力,提高编写综合程序、上机实践能力的综合能力。

1.2 预备知识

C语言的基础预备知识数据类型分为复合数据类型,基本数据类型。
基本数据类型分为整数(整型int,长整型long int,短整型shor int),浮点型(单精度 float,双精度double),字符型(char)。
复合数据类型分为结构体,公用体,枚举:基本数据类型组合在一起。
使用“链表”连接方式,在第一个结点的指针域内存入第二个结点的首地址,在第二个结点的指针域内又存放第三个结点的首地址,如此串连下去直到最后一个结点。最后一个结点因无后续结点连接,其指针域可赋为0。

1.3 实训的内容和要求

实训内容编写一个学生信息管理系统,主要用来管理学生基本信息及成绩信息。要求可以显示主菜单、信息的输入、信息的修改、信息的输出、退出数据以及处理查询排序等一系列要求,具体要求为:
1、建立学生信息,每个学生的信息应包括:姓名、性别、学号与3门课程的成绩;
2、数据的输入:输入学生的各项信息;
3、数据的修改:根据输入的序号可以修改学生的信息;
4、数据的处理:对学生信息按照成绩排名、删除学生信息、添加学生信息;
5、数据的查找:通过学号与姓名对信息来进行查找;
6、退出:退出整个学生信息管理系统。

2 需求分析

2.1 系统目标

1、掌握各种数据存储结构与算法思想。
2、掌握各种常用查找,排序,汇总等算法的实现,以及增删改查等。
3、掌握各种学生表的设计,以及学生管理等模块操作。
4、以方便对学校信息数据的录入、修改、删除、查询等一系列功能。

2.2 功能分析

本系统完成的主要功能有:
1、从键盘录入学生个人信息并保存到文件中;
2、从文件中读取学生个人信息;
3、按学号对学生信息进行查找;
4、按姓名对学生信息进行查找;
5、按姓名对学生信息进行修改;
6、按姓名对学生信息进行删除;
7、计算各项成绩的平均成绩以及及格率;

2.3 开发环境

1.运行装有Windows 10操作系统的计算机
2.Visual C++ 6.0旗舰版

3 总体设计

3.1 系统功能模块图

系统功能模块图,如图3.1所示。

c++程序设计 学生管理系统,C++,c++,链表,数据结构

图3.1系统功能模块图

3.2系统总流程图

c++程序设计 学生管理系统,C++,c++,链表,数据结构

图3.2系统总流程图

3.3 功能详细分析

(1)菜单函数功能:通过菜单的建立用户与程序之间的交流,实现各程序功能的运用。
(2)读入学生信息函数功能:对信息进行存储。
(3)保存学生信息函数功能:将进行某些操作后的学生信息保存到指定文件中。
(4)添加学生信息函数功能:添加新的学生信息,并保存至文件中。
(5)显示学生信息函数功能:通过输入序号,将所有保存的学生信息显示出来,方便查找。
(6)查看平均成绩函数功能:将所有学生的各科成绩进行计算,得出每名学生的各科平均成绩。
(7)查看学生成绩函数功能:将所有保存的学生的各科成绩显示出。
(8)删除学生信息函数功能:通过输入要删除学生信息的学号,删除该学生在该管理系统中的所有信息并不影响其他学生信息。
(9)修改学生信息函数功能:通过输入相应指令来选择要修改的该学号学生的信息内容,从而完成修改信息操作。
(10)清空学生信息函数功能:将学生信息管理系统全部清空。
(11)退出管理系统函数功能:退出信息管理系统,便于下一次的运用。

4 详细设计

4.1 定义主函数

(1)主函数main():先调用Studentmassage类的ShowMenu函数为用户提供选择,用户根据需要输入相应的序号调用Studentmassage类的相应函数。
(2)函数实现代码:

#include<iostream>
#include<fstream>
#include<cstring>
#include<conio.h>
#include<string>
using namespace std;

4.2 读入学生信息

(1)通过Studentmassage类的构造函数创建链表,由Student类的ReadFile()函数重载cin运算符读取文件信息;
(2)函数实现代码:

Studentmassage::Studentmassage()
{  head = new Student;
	head->Next = new Student;
	end = head->Next;
	in.open("sort.txt");
	if (!in)	cout << "这是一个新系统,无学生信息,请先输入。" << endl;
	else
	{
		while (!in.eof())
		{
			end->ReadFile(in);
			if (end->name[0] == '\0')	break;
			end->Next = new Student;
			end = end->Next;
		}
		in.close();
		cout << "\t\t 读取学生信息成功!" << endl;
	}
}

4.3保存学生信息

(1)Studentmassage类的Save()函数找到相应文件,将当前链表中的所有信息都存入文件中;
(2)函数实现代码:


```cpp
void Studentmassage::Save()
{
	out.open("sort.txt");
	for (Student *p = head->Next; p != end; p = p->Next)
	{
		out << p->name << "\t" << p->ID << "\t" << p->CPP << "\t" << p->MATH << "\t" << p->ENGLISH << "\t" << p->sum << p->rank << "\t" << endl;
		out.close();
	}
}

## 4.4添加学生信息

(1)通过Studentmassage类的AddItem()函数在链表结尾添加新的链表,调用Student类的Input()函数进行信息输入;
(2)函数实现代码:

```cpp
void Studentmassage::AddItem()
{
	end->Input();
	end->Next = new Student;
	end = end->Next;
	cout << "添加成功!" << endl;
	system("pause");
	//	cout << "请输入任意字符!继续......";
	//	getchar();
}

4.5显示信息(不含排名)

(1)通过Studentmassage类的Display1()函数调用Student类的Show1()函数显示最初始未经排名的信息;
(2)函数实现代码:

void Studentmassage::Display1()
{
	cout << "姓名: \t\t" << "性别: \t\t" << "学号: \t\t"
		<< "C++: \t" << "数学: \t" << "英语:\t"
		<< " 总成绩: \t" << "\n\n";
	for (Student*p = head->Next; p != end; p = p->Next)
		p->Show1();
	system("pause");
	//	cout << "输入任意字符!继续······";
	//	getchar();
}

4.6显示成绩(含排名)

(1)通过Studentmassage类的Display2()函数先调用同类的Sort()函数进行排序并添加排名信息,再调用Student类的Show2()函数进行信息输出;
(2)函数实现代码:

void Studentmassage::Display2()
{
	Sort();
	cout << "姓名: \t\t" << "性别: \t\t" << "学号: \t\t"
		<< " 总成绩: \t" << "排名: " << "\n\n";
	for (Student*p = head->Next; p != end; p = p->Next)
		p->Show2();
	system("pause");
	//	cout << "输入任意字符!继续······";
}

4.7查看平时成绩与及格率

(1)Studentmassage类的Average()函数中先创建一个Student类的指针p,用来遍历链表,算出各项成绩的总和并统计不及格人数,通过调用ListCount()函数获得链表个数即当前总人数;
(2)函数实现代码:

void Studentmassage::Average()
{
	scpp=0.0,smath=0.0,seng=0.0,ssum=0.0;
	int c=0,m=0,e=0;
	Student *p;
	for (p=head->Next;p->Next !=end;p= p->Next)
	{
		scpp += p->CPP;smath += p->MATH;seng += p->ENGLISH;ssum += p->sum;
		if (p->CPP < 60) c++;
		if (p->MATH < 60) m++;
		if (p->ENGLISH < 60) e++;
	}
	scpp += p->CPP; smath += p->MATH; seng += p->ENGLISH; ssum += p->sum;
	int num = Studentmassage::ListCount();
	double avcpp = scpp / num;
	double avmath = smath / num;
	double aveng = seng / num;
	double avsum = ssum / num;			//总分平均成绩
	double procpp = (num - c) / num;	//c++及格率
	double promath = (num - m) / num;			//数学及格率
	double proeng = (num - e) / num;			//英语及格率
//	cout << scpp << "\t" << smath << "\t" << seng << "\t" << ssum << "\n";
	cout << "\n\t\t*********************************\n";
	cout << "\t\t※ 0.输出各项平均成绩\n";
	cout << "\t\t※ 1.输出c++平均成绩 \n\t\t※ 2.输出数学平均成绩 \n";
	cout << "\t\t※ 3.输出英语平均成绩 \n\t\t※ 4.输出总平均成绩 \n";
	cout << "\t\t※ 5.输出各科及格率";
	cout << "\n\t\t*********************************\n\t\t请输入相应序号进行选择: ";
	int x; cin >> x;
	switch (x)
	{
	case 0: {
		cout << "\t\tc++平均成绩\t" << "数学平均成绩\t" << "英语平均成绩\t" << "总平均成绩\t\n";
		cout << "\t\t" << avcpp << "\t\t" << avmath << "\t\t" << aveng << "\t\t" << avsum << endl; break;
	}
	case 1:cout << "\t\tc++平均成绩 : " << avcpp << endl; break;
	case 2:cout << "\t\t数学平均成绩 : " << avmath << endl; break;
	case 3:cout << "\t\t英语平均成绩 : " << aveng << endl; break;
	case 4:cout << "\t\t总平均成绩 : " << avsum << endl; break;
	case 5: {
		cout << "\t\tc++及格率\t" << "数学及格率\t" << "英语及格率\t" << endl;
		cout << "\t\t" << procpp * 100 << "%" << "\t\t" << promath * 100 << "%"
			<< "\t\t" << proeng * 100 << "%" << "\t\t" << endl; break;
	}
	}
	system("pause");
}

4.8查找学生信息

(1)通过FindItem()和FindID()函数判断是否有相对应名字或学号的学生;
(2)函数实现代码:

void Studentmassage::Find()
{
	char name[10], ID[20];
	int x;
	Student *p = NULL;
	cout << "\n\t\t*********************************\n";
	cout << "\t\t※ 1.按学生的姓名查找 \n\t\t※ 2.按学生学号查找 ";
	cout << "\n\t\t*********************************\n 请选择: ";
	cin >> x;
	switch (x)
	{
	case 1:
	{
		cout << "\t\t 请输入要查找学生姓名:  ";
		cin >> name;
		if (p = FindItem(name))
		{
			p->Next->Show1();
			system("pause");
		}
		else
		{
			cout << "\t\t 没有找到相匹配的学生!  " << "\n\n";
			system("pause");
			//			cout << "请输入任意字符!继续······";
			//			getchar();
		}
	} break;
	case 2:
	{
		cout << "\t\t 请输入要查找的学生的学号: "; cin >> ID;
		if (p = FindID(ID))
		{
			p->Next->Show1();
			system("pause");
			//			cout << " 输入任意字符!继续…… ";
			//			getchar();
		}
		else
		{
			cout << "\t\t 没有找到相匹配的学生! " << '\n' << endl;
			system("pause");
			//			cout << " 输入任意字符!继续…… ";
			//			getchar();
		}
	} break;
	}
}

4.9删除学生信息

(1)Studentmassage类的RemoveItem()函数通过调用FindItem()函数查找是否有相对应的名字,有则删除该段链表并输出“删除成功!”,没有则输出“没有找到!”。
(2)函数实现代码:

void Studentmassage::RemoveItem()
{
	char name[20];
	Student *p = NULL, *temp = NULL;
	cout << "\t\t 请输入要删除学生的姓名 :" << endl; cin >> name;
	if (p = FindItem(name))
	{
		temp = p->Next;
		p->Next = p->Next->Next;
		delete temp;
		cout << "\t\t 删除成功!" << endl;
		system("pause");
		//		cout << "输入任意字符!继续······";
		//		getchar();
	}
	else
	{
		cout << "\t\t 没有找到!" << endl;
		system("pause");
		//		cout << "输入任意字符!继续······";
		//		getchar();
	}
}

4.10修改学生信息

(1)Studentmassage类ModifyItem()函数通过FindItem()函数查找是否有相对应的名字,有则按提示步骤操作,没有则输出“没有找到”;
(2)函数实现代码:

void Studentmassage::ModifyItem()
{
	char name[10];
	Student *p = NULL;
	cout << "\t\t 请输入需要修改人的姓名 :"; cin >> name;
	if (p = FindItem(name))
	{
		cout << "\t\t 已找到该学生信息,请按步骤输入新的信息!" << endl;
		p->Next->Input();
		cout << "修改成功! " << endl;
		system("pause");
		//		cout << "请输入任意字符!继续······";
		//		getchar();
	}
	else
	{
		cout << "\t\t 没有找到!" << endl;
		system("pause");
		//		cout << "请输入任意字符!继续······";
		//		getchar();
	}
}

4.11清空学生信息

(1)调用Studentmassage类的析构函数,将链表从头至尾挨个删除即可;
(2)函数实现代码:

Studentmassage::~Studentmassage()
{
	Save();
	Student *temp;
	//	cout << head->Next->CPP << "\n";
	for (; head->Next != end;)
	{
		temp = head->Next;
		//		cout << temp->CPP << "\t";
		head->Next = head->Next->Next;
		delete temp;
	}
	//	cout << endl << head->CPP;
	delete head, end;
	system("pause");
}

5 程序运行

5.1菜单界面

(1)菜单界面,所有功能界面
(2)实现截图如图5.1
c++程序设计 学生管理系统,C++,c++,链表,数据结构
图5.1

5.2添加信息

(1)添加一位学生信息
(2)实现截图如图5.2
c++程序设计 学生管理系统,C++,c++,链表,数据结构

图5.2

5.3显示成绩

(1)显示所有学生的3门成绩
(2)实现截图如图5.3
c++程序设计 学生管理系统,C++,c++,链表,数据结构

图5.3

5.4查看排名

(1)对所有学生进行成绩排名
(2)实现截图,排名前如图5.4.1
c++程序设计 学生管理系统,C++,c++,链表,数据结构

图5.4.1
排名后如图5.4.2:
c++程序设计 学生管理系统,C++,c++,链表,数据结构

图5.4.2

5.5查看平均成绩

(1)对所有学生的平均成绩进行显示
(2)实现截图如图5.5
c++程序设计 学生管理系统,C++,c++,链表,数据结构

图5.5

5.6查找信息

(1)分别按照姓名、学号对信息进行查找
(2)实现截图
全部信息如图5.6.1
c++程序设计 学生管理系统,C++,c++,链表,数据结构

图5.6.1
按姓名查找如图5.6.2
c++程序设计 学生管理系统,C++,c++,链表,数据结构

图5.6.2
按学号查找如图5.6.3
c++程序设计 学生管理系统,C++,c++,链表,数据结构

图5.6.3

5.7删除信息

(1)对学生信息进行删除
(2)实现截图
找到的情况如图5.7.1
c++程序设计 学生管理系统,C++,c++,链表,数据结构

图5.7.1
未找到的情况如图5.7.2
c++程序设计 学生管理系统,C++,c++,链表,数据结构

图5.7.2

5.8修改信息

(1)对学生信息进行修改
(2)实现截图
未找到的情况如图5.8.1
c++程序设计 学生管理系统,C++,c++,链表,数据结构

图5.8.1
找到的情况如图5.8.2
c++程序设计 学生管理系统,C++,c++,链表,数据结构

图5.8.2

5.9清空信息

(1)对程序中的所有信息进行清除
(2)实现截图如图5.9
在这里插入图片描述

图5.9

心得体会

参考文献

[1] 温海.C语言精彩编程百例.北京:中国水利水电出版社,2004
[2] 姜灵芝.C语言课程设计案例精编.北京:清华大学出版社,2008
[3] 张仁杰 王风茂.C语言程序设计实训教程.北京:中国电力出版社,2006
[4] 李红 徐鹏.C语言教程与试题解析.北京:北京希望电子出版社,2003
[5] 丁汀.C语言程序设计实用教程.北京:机械工业出版社,2007
[6] 李红 王强.C语言程序设计实例教程.北京:机械工业出版社,2010
点击获取(源码+课程设计报告文档+截图)文章来源地址https://www.toymoban.com/news/detail-763036.html

到了这里,关于基于C++实现的学生信息管理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 学生成绩管理系统(C++实现)

    实现学生成绩管理系统: 学生信息包括:学号、姓名、性别、年龄、班级等信息。除了包括学生所有信息外,还包括专业、英语、程序设计和高等数学等课程。 设计一程序能够对学生成绩进行管理,应用到继承、抽象类、虚函数、虚基类、多态和文件的输入/输出等内容。用

    2024年02月05日
    浏览(46)
  • 基于SSM架构实现学生信息管理系统

    本项目是一个基于SSM(Spring+SpringMVC+MyBatis)框架搭建的学生信息管理系统,实现了对学生、用户等信息的增删改查功能,以及登录、分页等功能。本项目采用了三层架构,分为entity层、service层、dao层和controller层,使用了Maven进行项目管理,使用了MySQL作为数据库。 本项目主要

    2024年02月03日
    浏览(52)
  • C++实现:学生管理系统(详细解析)

    目录 1.题目要求 2.需求分析 3.整体设计 4.详细设计 主函数设计  学科科目类 主菜单 读取文件与写入文件  效果如下  添加学生信息 删除学生信息 ​编辑 修改学生信息 显示信息列表 显示学生列表 将学生列表按学号升序排列 将学生列表按平均分降序排列,平均分相同的再按

    2023年04月11日
    浏览(41)
  • python基于Tkinter实现学生信息管理系统

    1.添加学生成绩:管理员可以在系统中添加学生的成绩信息,包括学生姓名、学号、课程名称、成绩等。 2.删除学生成绩:管理员可以根据学生的学号或者姓名删除学生的成绩信息。 3.修改学生成绩:管理员可以修改学生的成绩信息,包括学生姓名、学号、课程名称、成绩等

    2024年02月08日
    浏览(73)
  • 基于python的学生信息管理系统的设计与实现

    小白学python,做了一个基础小系统,给大家分享一下(欢迎大神指导) 目录 步骤 1.设计要求 2.设计步骤 (1)导入os模块,创建一个文件夹用于存储数据  (2)定义一个菜单函数 (3)实现学生信息的录入功能 (4)定义了一个save函数用于录入功能的调用 (5)查询功能的实现

    2024年02月09日
    浏览(60)
  • java毕业设计——基于JSP+sqlserver的学生信息管理系统设计与实现(毕业论文+程序源码)——学生信息管理系统

    大家好,今天给大家介绍基于JSP+sqlserver的学生信息管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦 文章目录: 随着学校规模的

    2024年02月04日
    浏览(67)
  • 使用C++实现的学生成绩管理系统(附完整代码)

    学生成绩管理系统可以录入、查询、修改学生的成绩,它包括:信息条目序号、学生姓名、课程名称、课程学分数、学生该课程的成绩(百分制成绩, 等级制成绩,绩点)。学生成绩管理系统能够提供以下功能: 1)录入学生的成绩信息:从键盘输入数据,依次输入:学生姓

    2024年02月06日
    浏览(37)
  • 基于Python guI的学生信息管理系统的设计与实现

            讲述的是一个使用Python GUI的学习资料管理工具。通过使用Python的Tkinter库和mysql数据库,这个工具可以方便地记录、检索、更新学习资料。本文详细描述了系统的架构设计和实现过程,并对系统进行了功能测试和性能测试。结果表明,该系统具有良好的用户界面和

    2024年02月03日
    浏览(40)
  • 基于SpringBoot的高校学生就业信息管理系统--35610(免费领源码、附论文)可做计算机毕业设计JAVA、PHP、爬虫、APP、小程序、C#、C++、python、数据可视化、大数据、全套文案

    当今社会己进入信息社会时代。信息己经受到社会的广泛关注,被看作社会和科学技术发展的三大支柱(材料、能源、信息)。信息是管理的基础,是进行决策的的基本依据。在一个组织里,信息己作为人力、物力、财力之外的第四种能源,占有重要的地位。然而,信息是一

    2024年02月02日
    浏览(36)
  • 基于SSM的大学生社团信息管理系统--99953 (免费领源码+开发文档)可做计算机毕业设计JAVA、PHP、爬虫、APP、小程序、C#、C++、python、数据可视化、大数据、全套文案

    随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,高校当然也不能排除在外。大学生社团信息管理系统APP是以实际运用为开发背景,运用软件工程开发方法,采用SSM技术构建的一个管理系统。整个开发过

    2024年01月23日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包