c和c++的一些训练题(9)(学生成绩管理系统)
来源:互联网 发布:回家吃饭网络订餐 编辑:程序博客网 时间:2024/06/11 15:37
问题的提出:编程建立学生成绩管理系统。要求具有以下功能:一个学生的信息包括学号、姓名、英语成绩、语文成绩、数学成绩,要求输入每位学生的信息并显示这些信息;同时计算每位学生的总分即英语、语文、数学成绩之和,并对输入的若干学生按总分排名,按总分名次输出每位学生及其信息;最后计算这些学生的英语平均分、语文平均分和数学平均分,并输出结果。
遇到的问题:
(1).1>test7.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall Student::Student(void)" (??0Student@@QAE@XZ),该符号在函数 _wmain 中被引用
1>D:\jiangshan\test7\Debug\test7.exe : fatal error LNK1120: 1 个无法解析的外部命令
这是因为你在类定义里面列出了构造函数的原型,但是没有函数体,所以链接时发生错误
需要把构造函数Student();改为Student() {}
(2).new和delete的使用方法
new和delete运算符用于动态分配和撤销内存的运算符
new用法:
1. 开辟单变量地址空间
1)new int; //开辟一个存放数组的存储空间,返回一个指向该存储空间的地址.int *a = new int 即为将一个int类型的地址赋值给整型指针a.
2)int *a = new int(5) 作用同上,但是同时将整数赋值为5
2. 开辟数组空间
一维: int *a = newint[100];开辟一个大小为100的整型数组空间
二维: int **a = newint[5][6]
三维及其以上:依此类推.
一般用法: new 类型 [初值]
delete用法:
1. int *a = new int;
delete a; //释放单个int的空间
2.int *a = new int[5];
delete [] a; //释放int数组空间
代码:
// test3.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <iomanip>#include <string>using namespace std;class Student{private://int total;int number;string name;float Chin;float Engl;float Math;float sumS;public:Student(){}Student(int n, string str, float c, float e, float m){number=n;name=str;Chin=c;Engl=e;Math=m;}void setup(int n, string str, float c, float e, float m){//Student s;number=n;name=str;Chin=c;Engl=e;Math=m;//return s;}void sum(float c, float e, float m){sumS=c+e+m;}friend void Bubble(Student *s, int n);friend void Show(Student *s,int n);friend ostream & operator<<(ostream &, Student &);};ostream & operator<<(ostream &os, Student &s){cout<<left<<setw(10)<<"学生学号:"<<left<<setw(4)<<s.number;//cin>>num;cout<<left<<setw(10)<<" 学生姓名:"<<left<<setw(7)<<s.name;//cin>>str;cout<<left<<setw(10)<<" 语文成绩:"<<left<<setw(4)<<s.Chin;//cin>>c;cout<<left<<setw(10)<<"英语成绩:"<<left<<setw(4)<<s.Engl;//cin>>e;cout<<left<<setw(10)<<"数学成绩:"<<left<<setw(4)<<s.Math;//cin>>m;cout<<left<<setw(10)<<"总成绩:"<<left<<setw(4)<<s.sumS;return os;}void Bubble(Student *s, int n){Student temp;for(int i=0; i<n; i++){for(int j=0; j<n-1-i; j++){if(s[j].sumS<=s[j+1].sumS) { temp=s[j]; s[j]=s[j+1]; s[j+1]=temp; } }}}void Show(Student *s,int n){cout<<left<<setw(10)<<"学生学号";//cin>>num;cout<<left<<setw(10)<<"学生姓名";//cin>>str;cout<<left<<setw(10)<<"语文成绩";//cin>>c;cout<<left<<setw(10)<<"英语成绩";//cin>>e;cout<<left<<setw(10)<<"数学成绩";//cin>>m;cout<<left<<setw(10)<<"总成绩";cout<<endl;float avg_c = 0;float avg_m = 0;float avg_e = 0;for(int i=0; i<n; i++){cout<<left<<setw(10)<<s[i].number;//cin>>num;cout<<left<<setw(10)<<s[i].name;//cin>>str;cout<<left<<setw(10)<<s[i].Chin;//cin>>c;cout<<left<<setw(10)<<s[i].Engl;//cin>>e;cout<<left<<setw(10)<<s[i].Math;//cin>>m;cout<<left<<setw(10)<<s[i].sumS;cout<<endl;avg_c=avg_c+s[i].Chin;avg_m=avg_m+s[i].Math;avg_e=avg_e+s[i].Engl;}avg_c=avg_c/n;avg_e=avg_e/n;avg_m=avg_m/n;cout<<"语文的平均分为:"<<avg_c<<endl;cout<<"英语的平均分为:"<<avg_e<<endl;cout<<"数学的平均分为:"<<avg_m<<endl;}int _tmain(int argc, _TCHAR* argv[]){cout<<"请输入一共有多少个学生:";int n;cin>>n;//分别n个学生的信息int num;string str;float c;float e;float m;Student *s = new Student[n];for(int i=0;i<n;i++){cout<<"第"<<(i+1)<<"个学生的信息:"<<endl;cout<<"学生学号:";cin>>num;cout<<"学生姓名:";cin>>str;cout<<"语文成绩:";cin>>c;cout<<"英语成绩:";cin>>e;cout<<"数学成绩:";cin>>m;s[i].setup(num,str,c,e,m);s[i].sum(c,e,m);}//根据总成绩,对这些学生进行排序Bubble(s, n);Show(s,n);//for(int i=0;i<n;i++)//{//cout<<s[i]<<endl;//}//cout<<s[0];delete [] s;system("pause");return 0;}结果:
- c和c++的一些训练题(9)(学生成绩管理系统)
- 学生成绩管理系统(c++)
- 学生成绩管理系统的初步实现(C)
- 学生成绩管理系统(C语言)
- 学生成绩管理系统(C语言)
- 学生成绩管理系统(C语言)
- 学生成绩管理系统(C语言)
- (c语言课程设计)学生成绩管理系统
- 大学生成绩管理系统(C语言)
- 学生成绩管理系统(c++)控制台应用程序
- 学生成绩管理系统(C语言实现)
- C语言小项目(简单的学生成绩管理系统)
- c语言的学生成绩管理系统
- <C++>简单的学生成绩管理系统
- 简易学生成绩管理系统(c++)
- 学生成绩管理系统-C
- C语言学生成绩管理系统
- 学生成绩管理系统【c】
- 《AngularJS权威教程》
- F - Flowers
- Android学习笔记の五
- 15 Wallpaper 之OnTouch OnIntercept dispatch事件机制
- Raising Modulo Numbers (poj 1995 快速幂水题)
- c和c++的一些训练题(9)(学生成绩管理系统)
- HDU 4549 M斐波那契数列(矩阵快速幂)
- poj 3185 The Water Bowls (高斯消元)
- 怎样在Linux启动后执行指定的命令
- WindowsHOOK编程
- 黑马程序员--java基础--语言基础部分
- Web高并发解决方案
- Java的控制结构-笔记
- 无器械健身