精华内容
下载资源
问答
  • 学生成绩管理系统(基于文件的MFC) mfc学生成绩管理系统 C++学生成绩管理系统 学生成绩管理系统(基于文件的MFC) mfc学生成绩管理系统 C++学生成绩管理系统
  • C++学生成绩管理系统

    2018-06-23 14:52:54
    C++语言的学生成绩管理系统,定义学生类和教师类,可以操作有对成绩的增删改查,并可以通过文件的保存。都是通过链表操作 谢谢!!!
  • 1.录入学生信息:用户可以自由输入学生信息到系统中。 2.打印学生信息:格式化展示系统中的学生信息。 3.保存学生信息:将系统中的学生信息保存到本地文档。 4.读取学生信息:读取本地文档中的学生信息并显示。 5....
  • 学生成绩管理系统的实现,通过C++编程语言实现,可以添加、查询、擅长、更改学生成绩 ,可以继续录入学生信息。点击退出按钮后,退出录入界面。点击返回主界面按钮后,返回学生成绩管理系统的主界面。
  • C++ 学生成绩管理系统

    万次阅读 多人点赞 2019-10-04 20:26:09
    c++实现学生成绩管理系统,此系统可以提供成绩的录入,可以按学生成绩进行排名,求总分和平均分以及提供成绩查询功能等。 实现功能 提供成绩录入 统计每个学生的总分和平均分 按总分由大到小排出名次 提供成绩...

    用c++实现学生成绩管理系统,此系统可以提供成绩的录入,可以按学生成绩进行排名,求总分和平均分以及提供成绩查询功能等。

    实现功能

    1. 提供成绩录入
    2. 统计每个学生的总分和平均分
    3. 按总分由大到小排出名次
    4. 提供成绩查询,就是输入一个学号,查出该学生的成绩信息

    系统的实现

    代码主要分为三个部分,一部分是结构和变量定义部分,另一部分是主函数部分,最后一部分是功能函数部分。具体代码如下:

    结构和变量定义部分:

    //结构和变量定义部分
    #include "pch.h"
    #include"out.h"
    #include <iostream>
    #include<fstream>
    #include <string>
    #include<iomanip>
    #include <fstream>
    #include<strstream>
    #include <vector>
    #include<cstdio>
    
    using   namespace   std;
    const int Max = 30;		//学号和字符串的大小
    //函数的声明
    class Student;
    void setData(Student &s);
    void count(Student &s);
    void sort(Student S[], int N);
    double getAverage(Student S[], int N);
    void print(Student &s);
    int search(Student S[], int N, char *n);
    class Student
    {
    public:		//定义类的公有成员
    	char number[Max];	//学号
    	char name[Max];		//姓名
    	double chinese;		//语文
    	double math;		//数学
    	double english;		//英语
    	double total;		//总分
    	double average;		//平均分
    	int rank;			//排名
    };
    

    主函数部分:

    //主函数部分
    int main()
    {
    	const int M = 3;	//定义常量,假设为3位同学
    	Student S[M];		//创建对象数组
    	for (int i = 0; i < M; i++)
    	{
    		cout << "输入下面第" << i + 1 << "位同学的数据:" << endl;
    		setData(S[i]);		//调用数据输入函数
    		count(S[i]);
    		cout << endl;
    	}
    	sort(S, M);
    	int order = 1;
    	while (order != 4)
    	{
    		cout << "****************************命令菜单****************************" << endl;
    		cout << "1.查询所有排名" << endl;
    		cout << "2.查询成绩在全班平均分以上的学生名单和信息" << endl;
    		cout << "3,任意输入一个学号,查找该学生的排名和考试成绩" << endl;
    		cout << "4.退出系统" << endl;
    		cout << "****************************************************************" << endl;
    		cout << "请输入命令:";
    		cin >> order;
    		switch (order)
    		{
    		case 1:
    		{
    			for (int j = 0; j < M; j++)
    				print(S[j]);	//输出对象数组
    		}
    		break;
    		case 2:
    		{
    			double compare = getAverage(S, M);		//获取平均分,之后将大于平均分的同学输出
    			for (int k = 0; k < M; k++)
    				if (S[k].average > compare)
    					print(S[k]);
    		}
    		break;
    		case 3:
    		{
    			char code[Max];
    			cout << "输入您要查找的学号:";
    			cin >> code;
    			int result = search(S, M, code);
    			if (result == -1)
    				cout << "您输入的学号不存在!" << endl;
    			else
    				print(S[result]);
    		}
    		break;
    		case 4:
    			break;
    		default:
    			cout << "输入错误,请重新输入" << endl;
    		}
    	}
    }
    

    功能函数部分:

    //功能函数部分
    void setData(Student &s)
    {
    	cout << "输入学号,姓名,语文,数学,英语成绩:";
    	cin >> s.number >> s.name >> s.chinese >> s.math >> s.english;		//分别将输入的数据赋给类的成员
    	//成员的初始化
    	s.total = 0;
    	s.average = 0;
    	s.rank = 0;
    }
    
    void count(Student &s)
    {
    	s.total = s.chinese + s.math + s.english;		//求总分
    	s.average = s.total / 3;		//求平均分
    }
    
    void sort(Student S[], int N)		//插入法排序
    {
    	int index;
    	Student inserter;
    	for (int i = 1; i < N; i++)		//依次比较所有学生
    	{
    		inserter = S[i];		//取出元素i
    		index = i - 1;
    		while (index >= 0 && inserter.average > S[index].average)
    		{		//该元素大于第i-1个元素
    			S[index + 1] = S[index];
    			index--;
    		}
    		S[index + 1] = inserter;		//插入
    	}
    	for (int j = 0; j < N; j++)
    		S[j].rank = j + 1;		//设置排名
    }
    
    double getAverage(Student S[], int N)
    {
    	double Average = 0;
    	for (int i = 0; i < N; i++)
    		Average += (S[i].chinese + S[i].math + S[i].english);
    	Average /= (N * 3);
    	return Average;
    }
    
    void print(Student &s)
    {
    	cout << "排名" << "\t" << "学号" << "\t" << "姓名" << "\t" << "语文" << "\t" << "数学" << "\t" << "英语"
    		<< "\t" << "总分" << "\t" << "平均分" << endl;
    	cout <<s.rank<< "\t" << s.number << "\t" << s.name << "\t" << s.chinese << "\t" <<s.math << "\t" << s.english
    		<< "\t" << s.total << "\t" << s.average << endl;
    }
    
    int search(Student S[], int N, char *n)
    {
    	for (int i = 0; i < N; i++)
    	{
    		if (strcmp(S[i].number, n) == 0)		//比较字符,如果n(用户输入的学号)与系统中学号相等,strcmp(S[i].number, n)值为0
    			return i;		//返回下标
    	}
    	return -1;
    }
    

    将以上三个部分合起来就能运行程序了哦!

    程序运行结果

    输入3(3是数组的大小,可修改)位同学的数据后就能进入系统了,
    在这里插入图片描述
    查询排名情况:
    在这里插入图片描述
    查询高于平均分的同学:
    在这里插入图片描述
    输入学号查看学生信息:
    在这里插入图片描述
    最后是退出:
    在这里插入图片描述
    功能已全部实现,虽然目前程序还很简陋,但我们可以开发更多的功能去进一步完善它。只要功夫深,铁杵磨成针,希望能帮助到有需要的小伙伴,互相学习,一起进步!
    在这里插入图片描述

    展开全文
  • 使用Qt/C++实现界面化学生信息管理
  • 基于VC6.0简单的MFC学生管理系统,连接access数据库,实现简单的增删改查
  • 系统用于管理某高校的本科生、研究生2类人员信息: 本科生信息:学号、姓名、性别、专业、年级、班级、高数成绩、英语成绩、C语言、总成绩、班级排名、年级排名 研究生信息:学号、姓名、性别、专业、年级、班级、...
  • 可以添加、删除、修改、查找、学生成绩,非常适合初学者。
  • 有最基本的增删改查,还有附加的统计,排序,登录,帮助等功能,在控制台应用程序中,给字体设置不同的颜色,可刷新页面,适合大一初学C++学生参考。
  • 程序使用说明:本程序是使用C++编写的学生成绩管理系统,使用VS2013进行代码的编写,其中file.txt是实验数据。 实习题目:学生成绩管理系统 要求: 1、增加记录:要求可以连续增加多条记录。 2、删除一个学生的...
  • 本人课程设计代码,VS2015以上直接运行,代码注释,其中有详细的函数运行解释,很容易看懂,用了虚函数、虚基类、多态。
  • c++ MFC 学生成绩管理系统

    热门讨论 2011-12-21 21:00:45
    c++ MFC 数据库 学生成绩管理系统
  • C++写的连接MySQL数据库的学生信息管理系统大作业,代码没有任何错误,并且在基本增删改查基础上扩展动态菜单等功能,所有数据变化实时更新在后台数据库中。
  • 使用单链表实现学生成绩管理系统,并以文件的形式打开和保存, 1.建立成绩表,实现增删改查功能, 2.按任一科排序 3.计算每名学生的平均成绩 4.统计不及格同学的人数,输出不及格的名单 5.统计平均成绩并排序,统计...
  • 学生成绩管理系统设计” A.问题描述 学生信息包括:学号、姓名、性别、年龄、班级等信息。 小学生除了包括学生所有信息外,还包括英语、数学和语文成绩。 中学生除了包括小学生所有信息外,还包括地理、历史成绩。 ...
  • c++学生成绩管理系统

    2015-12-12 13:06:08
    c++学生成绩管理系统 学生信息登记 删除 查询 显示 统计 排序 分类
  • 课程设计:c++实现学生成绩管理系统

    万次阅读 多人点赞 2020-11-28 10:59:08
    学生成绩管理系统课程设计,作为计算机科学专业学生的一门必修课,印象非常深刻,上机,编码,写报告,答辩,最后很多人勉强完成了功课,但是却很少能学到东西,算是一种遗憾吧,即使我们毕业了,仍然会想回去再做一...

        学生成绩管理系统课程设计,作为计算机科学专业学生的一门必修课,印象非常深刻,上机,编码,写报告,答辩,最后很多人勉强完成了功课,但是却很少能学到东西,算是一种遗憾吧,即使我们毕业了,仍然会想回去再做一遍。

        今天就来复习一遍这个课题,也让自己学习学习。

        学生成绩管理系统,对于刚学编程的人来说,是有一些难度的,有循环要考虑,还需要注意界面打印,菜单管理,输入输出控制,文件读写操作,排序算法等等技巧。

        学生成绩管理系统,可以分为如下几个功能:

         

        系统菜单:首先进入系统,我们会看见我们的系统菜单,根据提示,我们可以选择我们需要的操作编号:

        

        输入学生成绩:该功能是每次录入都会将新录入信息替换原来的学生成绩信息,仅限初次使用,后续慎用,类似新增,但是它是每次都会擦除原来学生信息。

        

        统计学生成绩:将学生成绩按照平均分显示,是一个简单的输出。

        

        查找学生成绩:按照学生学号查询。

        

        修改学生成绩:这里只是将对应学号的学生成绩修改,而不是连班级、学号、姓名也改变。

        

        修改之后:

        

        删除学生成绩:按照学号删除对应学生成绩信息记录。

        

        删除之后,学号为3的成绩记录就没有了:

        

        新增学生成绩:在原来学生成绩的基础上,新增学生成绩信息。

        

        按平均分排序:按照平均分降序排序,这里使用了简单的冒泡排序算法。

        

        显示学生成绩:遍历所有学生成绩,然后打印出来。

        

        退出管理系统: 退出菜单。

        学生成绩管理系统,主要是管理学生成绩信息的,这里可以简单的理解有这么一个对象,包含班级、学号、姓名、电子成绩、C++成绩、多媒体成绩、英语成绩、数学成绩、大学物理成绩、体育成绩、政治成绩,平均分这几项属性。这样我们可以定义这样的一个学生Student结构体或者类:

    class Student{
    private:
      char class_0[20]; //班级,因为class是关键字,我们用了class_0来表示班级
      int num;          //学号
      char name[8];     //姓名  姓名定义的长度是8,如果输入拼音或者英文,很有可能超出这个范围,要小心处理。
      float elec;       //电子
      float c_program;  //C++
      float media;      //多媒体
      float english;    //大学英语
      float math;       //高等数学
      float sport;      //体育
      float polity;     //政治
      float average;    //平均分  
    }stu[100];

        课程分数实际上都是整数,很难有小数点,但是平均分大概率是一个浮点数,所以必须用浮点数表示。但是使用浮点数表示分数也没有问题。 

        因为数据来源于文本文件,所以这里对文件读写操作非常频繁,涉及到读写操作的:1:输入,4:删除,5:修改,6:新增,7:排序。这些操作都有一个共同的特点,就是需要写入操作(Write)。这里因为是文件系统,没有办法做到增量修改,每次只能是覆盖式的写入。为了保留原来的纪录,可能还需要读取操作(Read)。

        这个程序,如果第一次运行,没有进行学生信息录入,即菜单项中的[1]输入学生成绩,默认如果执行[8]显示所有学生成绩,会报错,因为没有score.txt文件生成,只有进行了[1]操作之后,才会生成这个文件,所以为了避免程序报错,我们可以在项目路径下创建一个score.txt文件。

        默认,我们手动创建的这个文件中如果有中文,编码默认是UTF-8,保存之后,显示在界面上,会显示乱码,因为cmd终端默认的编码是ANSI格式,所以这个文件我们需要保存为ANSI格式,才能正确显示中文。

        初始文件score.txt格式如下:

    2
    
    10601	2	刘莹	86	84	90	80	88	82	85	85
    10601	1	吴昊	89	90	91	90	89	91	90	90

        该文件第一行,表示学生成绩总数,这个数字需要我们手动写入到文件里面,后面换行才是学生成绩,没有列标题,依次对应:班级、学号、姓名、电子成绩、C++成绩、多媒体成绩、英语成绩、数学成绩、大学物理成绩、体育成绩、政治成绩、平均分。一条记录占一行。

         读的时候,首先读取记录数,然后按行读取学生成绩信息,所以有这样的代码:

        

        同理,写入文件的时候,我们也要先写入记录数,然后依次写入学生成绩信息:

         

        我们没有使用很复杂的数据结构,这里就是利用了数组来操作学生成绩,涉及到修改的操作,基本就是先将文本文件中的数据读入数组,然后操作数组来实现新增,修改,删除,排序操作,最后将新的数组写入文件成为新的文件。 

         下面给出源码:

    #if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
    #define _CRT_SECURE_NO_DEPRECATE
    #endif
    #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std;
    class Student{
    public:
    	friend void Input(Student stu[]);
    	friend void Statistic(Student stu[]);
    	friend void Lookup(Student stu[]);
    	friend void Modify(Student stu[]);
    	friend void Delete(Student stu[]);
    	friend void Output(Student stu[]);
    	friend void Insert(Student stu[]);
    	friend void Sort(Student stu[]);
    	friend void Write(Student stu[],int n);
    	friend int Read(Student stu[]);
    private:
    	int num;
    	char name[8];
    	char class_0[20];
    	float elec;
    	float c_program;
    	float english;
    	float math;
    	float media;
    	float sport;
    	float polity;
    	float average;
    	int order;
    }stu[100];
    
    void Write(Student stu[], int n) {
    	fstream myFile;
    	myFile.open("score.txt", ios::out | ios::binary);
    	if (!myFile) {
    		cout << "score.txt can't open!" << endl;
    		abort();
    	}
    	int count = n;
    	myFile << count << endl<<endl;
    	for (int i = 0; i < count; i++) {
    		myFile << stu[i].class_0  << "\t"
    			   << stu[i].num      << "\t"
    			   << stu[i].name     << "\t"
    			   << stu[i].elec     << "\t"
    			   << stu[i].c_program<< "\t"
    			   << stu[i].media    << "\t"
    			   << stu[i].english  << "\t"
    			   << stu[i].math     << "\t"
    			   << stu[i].sport    << "\t"
    			   << stu[i].polity   << "\t"
    			   << stu[i].average  << endl;
    	}
    	myFile.close();
    }
    
    int Read(Student stu[]) {
    	fstream myFile;
    	myFile.open("score.txt", ios::in | ios::binary);
    	if (!myFile) {
    		cout << "score.txt can't open!" << endl;
    		abort();
    	}
    	int count;
    	myFile.seekg(0);
    	myFile >> count;
    	for (int i = 0; i <= count; i++) {
    		myFile >> stu[i].class_0 >> stu[i].num       >> stu[i].name 
    			   >> stu[i].elec    >> stu[i].c_program >> stu[i].media 
    			   >> stu[i].english >> stu[i].math      >> stu[i].sport 
    			   >> stu[i].polity  >> stu[i].average;
    	}
    	myFile.close();
    	return count;
    }
    
    void Input(Student stu[]) {
    	system("cls");
    	int i = 0;
    	int flag;
    	char sign = '0';
    	cout << endl<<"======>>    请输入学生成绩    <<======"<<endl;
    	while (sign != 'n' && sign != 'N') {
    		cout << "班级:";
    		cin >> stu[i].class_0;
    	loop:
    		cout << "学号:";
    		cin >> stu[i].num;
    		int c = 0;
    		while (c < i) {
    			c++;
    			if (stu[i].num == stu[i - c].num) {
    				cout << "您输入的学号已存在!请重新输入。" << endl;
    				goto loop;
    			}
    		}
    		cout << "姓名:";
    		cin >> stu[i].name;
    		do {
    			flag = 0;
    			cout << "电子技术成绩:";
    			cin >> stu[i].elec;
    			if (stu[i].elec > 100 || stu[i].elec < 1) {
    				cout << " 对不起,请输入1-100之间的数字!!\n";
    			}
    			else {
    				flag = 1;
    			}
    		} while (flag == 0);
    		do {
    			flag = 0;
    			cout << "C++程序设计成绩:";
    			cin >> stu[i].c_program;
    			if (stu[i].c_program > 100 || stu[i].c_program < 1) {
    				cout << " 对不起,请输入1-100之间的数字!!\n";
    			}
    			else {
    				flag = 1;
    			}
    		} while (flag == 0);
    		do {
    			flag = 0;
    			cout << "多媒体技术成绩:";
    			cin >> stu[i].media;
    			if (stu[i].media > 100 || stu[i].media < 1) {
    				cout << " 对不起,请输入1-100之间的数字!!\n";
    			}
    			else {
    				flag = 1;
    			}
    		} while (flag == 0);
    		do {
    			flag = 0;
    			cout << "大学英语成绩:";
    			cin >> stu[i].english;
    			if (stu[i].english > 100 || stu[i].english < 1) {
    				cout << " 对不起,请输入1-100之间的数字!!\n";
    			}
    			else {
    				flag = 1;
    			}
    		} while (flag == 0);
    		do {
    			flag = 0;
    			cout << "高等数学成绩:";
    			cin >> stu[i].math;
    			if (stu[i].math > 100 || stu[i].math < 1) {
    				cout << " 对不起,请输入1-100之间的数字!!\n";
    			}
    			else {
    				flag = 1;
    			}
    		} while (flag == 0);
    		do {
    			flag = 0;
    			cout << "大学体育成绩:";
    			cin >> stu[i].sport;
    			if (stu[i].sport > 100 || stu[i].sport < 1) {
    				cout << " 对不起,请输入1-100之间的数字!!\n";
    			}
    			else {
    				flag = 1;
    			}
    		} while (flag == 0);
    		do {
    			flag = 0;
    			cout << "马克思主义基本原理成绩:";
    			cin >> stu[i].polity;
    			if (stu[i].polity > 100 || stu[i].polity < 1) {
    				cout << " 对不起,请输入1-100之间的数字!!\n";
    			}
    			else {
    				flag = 1;
    			}
    		} while (flag == 0);
    		stu[i].average = (stu[i].elec + stu[i].c_program + stu[i].media + stu[i].english + stu[i].math +
    			stu[i].sport + stu[i].polity) / 7;
    		cout << " 平均分为:" << stu[i].average<<endl;
    		cout << "======>>    提示:是否继续写入学生成绩 ?(y/n)";
    		cin >> sign;
    		i++;
    	}
    	Write(stu, i);
    }
    
    void Statistic(Student stu[]) {
    	system("cls");
    	int n = Read(stu);
    	cout << endl << "======>>    输出学生统计数据    <<======\n" << endl;
    	cout << "---------------------------------------" << endl;
    	cout << "班级" << "\t" << "学号" << "\t" << "姓名" << "\t" << "平均分" << endl;
    	cout << "---------------------------------------" << endl;
    	for (int i = 0; i < n; i++)
    		cout << stu[i].class_0 << "\t" << stu[i].num << "\t" << stu[i].name << "\t" << stu[i].average << endl;
    	cout << "---------------------------------------" << endl;
    	system("pause");
    }
    
    void Lookup(Student stu[]) {
    	system("cls");
    	int n = Read(stu);
    	int s;
    	int i = 0;
    	cout << endl << "======>>    查找学生成绩    <<======" << endl;
    	cout << "请输入要查找学生的学号:";
    	cin >> s;
    	while ((stu[i].num - s) != 0 && i < n)i++;
    	if (i == n) {
    		cout << "======>>    对不起,无法找到该学生......    <<======" << endl;
    	}
    	else {
    		cout << "----------------------------" << endl;
    		cout << "班级:" << stu[i].class_0 << endl;
    		cout << "学号:" << stu[i].num << endl;
    		cout << "姓名:" << stu[i].name << endl;
    		cout << "电子技术:" << stu[i].elec << endl;
    		cout << "C++程序设计:" << stu[i].c_program << endl;
    		cout << "多媒体技术:" << stu[i].media << endl;
    		cout << "大学英语:" << stu[i].english << endl;
    		cout << "高等数学:" << stu[i].math << endl;
    		cout << "大学体育:" << stu[i].sport << endl;
    		cout << "马克思主义基本原理:" << stu[i].polity << endl;
    		cout << "平均分:" << stu[i].average << endl;
    	}
    }
    
    void Modify(Student stu[]) {
    	system("cls");
    	int n = Read(stu);
    	int s;
    	int i = 0;
    	cout << endl << "======>>    修改学生成绩    <<======" << endl;
    	cout << "请输入要修改成绩学生的学号:";
    	cin >> s;
    	while ((stu[i].num - s) != 0 && i < n)i++;
    	if (i == n) {
    		cout << "======>>    对不起,无法找到该学生......    <<======" << endl;
    	}
    	else {
    		cout << "------------------------------------------------------------------------------------" << endl;
    		cout << "班级" << "\t" << "学号"  << "\t" << "姓名" << "\t"
    			 << "电子" << "\t" << "C++"  << "\t" << "多媒体" << "\t"
    			 << "英语" << "\t" << "数学"  << "\t" << "体育" << "\t"
    			 << "政治" << "\t" << "平均分" << endl;
    		cout << "------------------------------------------------------------------------------------" << endl;
    		cout << stu[i].class_0 << "\t" << stu[i].num       << "\t" << stu[i].name  << "\t"
    			 << stu[i].elec    << "\t" << stu[i].c_program << "\t" << stu[i].media << "\t"
    			 << stu[i].english << "\t" << stu[i].math      << "\t" << stu[i].sport << "\t"
    			 << stu[i].polity  << "\t" << stu[i].average   << endl;
    		cout << endl << "请重新输入该学生成绩: " << endl;
    		cout << "电子技术成绩:";
    		cin >> stu[i].elec;
    		cout << "C++成绩:";
    		cin >> stu[i].c_program;
    		cout << "多媒体技术成绩:";
    		cin >> stu[i].media;
    		cout << "大学英语成绩:";
    		cin >> stu[i].english;
    		cout << "高等数学成绩:";
    		cin >> stu[i].math;
    		cout << "大学体育成绩:";
    		cin >> stu[i].sport;
    		cout << "马克思主义基本原理成绩:";
    		cin >> stu[i].polity;
    		stu[i].average = (stu[i].elec + stu[i].c_program + stu[i].media +
    			stu[i].english + stu[i].math + stu[i].sport + stu[i].polity) / 7;
    		cout << "平均分:" << stu[i].average << endl;
    
    		char c;
    		cout << "======>>    是否保存数据 ?(y/n)";
    		cin >> c;
    		if (c != 'n' && c != 'N')
    			Write(stu, n);
    	}
    }
    
    void Delete(Student stu[]) {
    	system("cls");
    	int n = Read(stu);
    	int s;
    	int i = 0, j ;
    	cout << endl << "======>>    删除学生成绩    <<======" << endl;
    	cout << "请输入要删除的学生的学号:";
    	cin >> s;
    	while ((stu[i].num - s) != 0 && i < n)i++;
    	if (i == n) {
    		cout << "======>>    对不起,无法找到该学生......    <<======" << endl;
    	}
    	else {
    		for (j = i; j < n - 1; j++) {
    			strcpy(stu[j].class_0,stu[j + 1].class_0);
    			stu[j].num = stu[j + 1].num;
    			strcpy(stu[j].name, stu[j + 1].name);
    			stu[j].elec = stu[j + 1].elec;
    			stu[j].c_program = stu[j + 1].c_program;
    			stu[j].media = stu[j + 1].media;
    			stu[j].english = stu[j + 1].english;
    			stu[j].math = stu[j + 1].math;
    			stu[j].sport = stu[j + 1].sport;
    			stu[j].polity = stu[j + 1].polity;
    			stu[j].average = stu[j + 1].average;
    		}
    		cout << "======>>    提示:已成功删除!" << endl;
    	}
    	Write(stu, n - 1);
    }
    
    void Insert(Student stu[]) {
    	system("cls");
    	int n = Read(stu);
    	char s='0';
    	cout << endl << "=======>>    增加学生成绩    <<========" << endl;
    	while (s != 'n' && s != 'N') {
    		cout << "班级:";
    		cin >> stu[n].class_0;
    		cout << "学号:";
    		cin >> stu[n].num;
    		cout << "姓名:";
    		cin >> stu[n].name;
    		cout << "电子技术成绩:";
    		cin >> stu[n].elec;
    		cout << "C++成绩:";
    		cin >> stu[n].c_program;
    		cout << "多媒体技术成绩:";
    		cin >> stu[n].media;
    		cout << "大学英语成绩:";
    		cin >> stu[n].english;
    		cout << "高等数学成绩:";
    		cin >> stu[n].math;
    		cout << "大学体育成绩:";
    		cin >> stu[n].sport;
    		cout << "马克思主义基本原理成绩:";
    		cin >> stu[n].polity;
    		stu[n].average = (stu[n].elec + stu[n].c_program + stu[n].media +
    			stu[n].english + stu[n].math + stu[n].sport + stu[n].polity) / 7;
    		cout << "平均分:" << stu[n].average << endl;
    		n++;
    		cout << "======>>    是否继续插入(y/n)";
    		cin >> s;
    	}
    	Write(stu, n);
    }
    
    void Sort(Student stu[]) {
    	system("cls");
    	int i, j, k;
    	float s;
    	char t[20];
    	cout << endl << "======>>    降序排列    <<======" << endl;
    	int n = Read(stu);
    	for (i = 0; i < n-1; i++) {
    		for (j = 0; j < n - 1; j++) {
    			if (stu[j].average < stu[j + 1].average) {
    				//交换课程
    				strcpy(t, stu[j + 1].class_0);
    				strcpy(stu[j + 1].class_0, stu[j].class_0);
    				strcpy(stu[j].class_0, t);
    				//num
    				k = stu[j + 1].num;
    				stu[j + 1].num = stu[j].num;
    				stu[j].num = k;
    
    				//name
    				strcpy(t, stu[j + 1].name);
    				strcpy(stu[j + 1].name, stu[j].name);
    				strcpy(stu[j].name, t);
    				//elec
    				s = stu[j + 1].elec;
    				stu[j + 1].elec = stu[j].elec;
    				stu[j].elec = s;
    				//c_program
    				s = stu[j + 1].c_program;
    				stu[j + 1].c_program = stu[j].c_program;
    				stu[j].c_program = s;
    				//media
    				s = stu[j + 1].media;
    				stu[j + 1].media = stu[j].media;
    				stu[j].media = s;
    				//english
    				s = stu[j + 1].english;
    				stu[j + 1].english = stu[j].english;
    				stu[j].english = s;
    				//math
    				s = stu[j + 1].math;
    				stu[j + 1].math = stu[j].math;
    				stu[j].math = s;
    				//sport
    				s = stu[j + 1].sport;
    				stu[j + 1].sport = stu[j].sport;
    				stu[j].sport = s;
    				//polity
    				s = stu[j + 1].polity;
    				stu[j + 1].polity = stu[j].polity;
    				stu[j].polity = s;
    				//average
    				s = stu[j + 1].average;
    				stu[j + 1].average = stu[j].average;
    				stu[j].average = s;
    			}
    		}
    	}
    	cout << "------------------------------------------------------------------------------------" << endl;
    	cout << "班级" << "\t" << "学号" << "\t" << "姓名" << "\t"
    		 << "电子" << "\t" << "C++" << "\t" << "多媒体" << "\t"
    		 << "英语" << "\t" << "数学" << "\t" << "体育" << "\t"
    		 << "政治" << "\t" << "平均分" << endl;
    	cout << "------------------------------------------------------------------------------------" << endl;
    	for (int i = 0; i < n; i++) {
    		stu[i].order = i + 1;
    		cout << stu[i].class_0 << "\t" << stu[i].num       << "\t" << stu[i].name << "\t"
    			 << stu[i].elec    << "\t" << stu[i].c_program << "\t" << stu[i].media << "\t"
    			 << stu[i].english << "\t" << stu[i].math      << "\t" << stu[i].sport << "\t"
    			 << stu[i].polity  << "\t" << stu[i].average   << endl;
    	}
    	Write(stu, n);
    }
    
    void Output(Student stu[]) {
    	system("cls");
    	int n = Read(stu);
    	cout << endl << "======>>    显示全部学生成绩    <<======" << endl;
    	if (!stu) {
    		cout << "没有记录";
    	}
    	else {
    		cout << "------------------------------------------------------------------------------------" << endl;
    		cout << "班级" << "\t" << "学号"  << "\t" << "姓名"  << "\t" 
    			 << "电子" << "\t" << "C++"  << "\t" << "多媒体" << "\t" 
    			 << "英语" << "\t" << "数学"  << "\t" << "体育"  << "\t" 
    			 << "政治" << "\t" << "平均分" << endl;
    		cout << "------------------------------------------------------------------------------------" << endl;
    		for (int i = 0; i < n; i++) {
    			cout << stu[i].class_0 << "\t" << stu[i].num       << "\t" << stu[i].name  << "\t"
    				 << stu[i].elec    << "\t" << stu[i].c_program << "\t" << stu[i].media << "\t"
    				 << stu[i].english << "\t" << stu[i].math      << "\t" << stu[i].sport << "\t"
    				 << stu[i].polity  << "\t" << stu[i].average   << endl;
    		}
    		cout << "------------------------------------------------------------------------------------" << endl;
    	}
    }
    
    int menu() {
    	char c;
    	do {
    		system("cls");
    		cout << "******************************************************" << endl;
    		cout << "----------------欢迎使用学生成绩管理系统---------------" << endl;
    		cout << "    *          【1】输入学生成绩                  *    " << endl;
    		cout << "    *          【2】显示统计数据                  *    " << endl;
    		cout << "    *          【3】查找学生成绩                  *    " << endl;
    		cout << "    *          【4】修改学生成绩                  *    " << endl;
    		cout << "    *          【5】删除学生成绩                  *    " << endl;
    		cout << "    *          【6】插入学生成绩                  *    " << endl;
    		cout << "    *          【7】按平均分排列                  *    " << endl;
    		cout << "    *          【8】显示学生成绩                  *    " << endl;
    		cout << "    *          【0】退出管理系统                  *    " << endl;
    		cout << "******************************************************" << endl;
    		cout << "请选择您的操作 (0-8):" << endl;
    		c = getchar();
    	} while (c < '0' || c > '8');
    	return (c - '0');
    }
    
    int main() {
    	for (;;) {
    		switch (menu()) {
    			case 1:
    				Input(stu);
    				break;
    			case 2:
    				Statistic(stu);
    				break;
    			case 3:
    				Lookup(stu);
    				system("pause");
    				break;
    			case 4:
    				Modify(stu);
    				system("pause");
    				break;
    			case 5:
    				Delete(stu);
    				system("pause");
    				break;
    			case 6:
    				Insert(stu);
    				system("pause");
    				break;
    			case 7:
    				Sort(stu);
    				system("pause");
    				break;
    			case 8:
    				Output(stu);
    				system("pause");
    				break;
    			case 0:
    				cout << endl << "================感谢您使用学生成绩管理系统==============\n" << endl;
    				exit(0);
    		}
    	}
    	return 0;
    }

        该代码在visual studio 2019上运行没有问题,不知道在别的IDE中有没有问题,这是一个纯c++实现的,没有参杂c的内容,但是如果用c来实现,也基本就是这个样子,就是前面的Student类换成结构体struct,输入输出改为scanf,printf ,文件读写改为c的,其他的没有太大的改变。

        如下所示,当我们一开始运行这个程序,没有录入学生成绩,直接点击【8】显示学生成绩,它会提示失败,并抛出错误:

        

        这就是前面提到的那个问题,我们需要手动创建一个score.txt文件并写入相关记录,文件格式以及数据在前面你已经提到,或者我们点击【1】输入学生成绩,创建这个文件也是可以的,后续反复运行这个程序也不会报错了。 

    展开全文
  • 学生成绩管理系统 1. 功能模块与界面 (1)教师,学生登录 (2)学生显示自己的全部信息 (3)教师选择功能:课程管理,成绩录入,成绩查询,成绩修改,成绩删除,学生管理。 (4)课程管理中可以添加,修改,...
  • 一个用C++做的简易的学生成绩管理系统,基本功能丰富
  • 3.学生成绩管理系统.zip :合并前各个模块的代码,以及编译出来的可执行文件和中间生成文件。 4.参考程序文件夹:存放示例的可执行系统(朋友老师提供的仅能运行,无代码)。 【PS】下载后不会使用的,下面评论,我...
  • 实验题目1:班级学生学期成绩管理系统 (1)程序功能简介 灵活运用类的继承、对象成员等机制,设计一个能够实现班级学生学期成绩管理的程序。 (2)程序设计说明 ① 个人信息类CPerson的数据成员有姓名、性别、...
  • word word专业资料 C++程序设计 课程设计报告 设计题目学生成绩管理系统 目录 TOC \o "1-5" \h \z \o "Current Document" 一设计任务与要求 3 设计容 3 \o "Current Document" 课程设计的要求 3 系统分析需求分析 \o...
  • 面向对象学生信息管理系统可以很好的帮助同学理解C++中的面向对象编程,该系统包括,学生信息的增删改查、学院信息的增删改查、专业信息的增删改查、课程信息的增删改查已经学生信息的选课、非常适合大一新生需要...
  • 河南工程学院高级程序设计语言课程设计 成果报告 学生成绩管理系统设计与实现 学生学号 学生姓名 学 院 计算机学院 专业班级 软件工程1342 专业课程 高级程序设计语言 指导教师 2014 年 6 月 27 日 题 目 学生成绩...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,707
精华内容 4,282
关键字:

c+++学生成绩管理系统

c++ 订阅