c++ 成绩录入输出程序 容器 vector

gstar_WD 2009-03-11 12:52:34
写一个【命令行输入】程序 读取学生的名字 课程 分数 最后全部输出

注意可以有无数个学生 每个学生有无数个课程。 课程由课程名和分数组成

以面向对象的形式编写。

大致是这么做的:基础三个类 studentlist{有很多学生} student{有很多课程} course
然后这么用容器 就是vector 来做? 对vector不这么熟 因为个数多 所以数组直接抛弃。可以用链表的,但是list的代码写起来比较费力。。。c++ 这么强大的STL可以简单的处理,但是我还不是很了解恩。编下代码吧。。我正在学vector 网上也有蛮多的源代码的。。。
...全文
279 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
gstar_WD 2009-03-18
  • 打赏
  • 举报
回复
呵呵 谢谢大家了 我自己编好了。还是谢谢大家了。大家的代码我都看了。。不过写的不是很OO[面向对象]额。。我写的main函数就只有三四行。
nerrymeeting 2009-03-14
  • 打赏
  • 举报
回复
#pragma warning(disable : 4786)

#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;
class CCourse
{
public:
string csName;
unsigned score;
};
typedef vector<CCourse> _sCourse;
class CStudent
{
public:
string stuName;
_sCourse ct;

};


int main(int argc, char* argv[])
{
vector<CStudent> stu;

CStudent cStu;

CCourse cs;
_sCourse _sCT;
while (1) {
cin >> cStu.stuName;
if(cStu.stuName == "*")
break;
while(1)
{
cin >> cs.csName;
cin >> cs.score;
if(cs.csName == "quit")
break;
_sCT.push_back(cs);
}
cStu.ct = _sCT;
stu.push_back(cStu);
}
return 0;
}
yel_hb 2009-03-14
  • 打赏
  • 举报
回复
可以参考下C++ Primer中讲容器的章节~容器相对于数组有长度动态增长的好处~而且有很多的函数可用~
nerrymeeting 2009-03-14
  • 打赏
  • 举报
回复
vector<CCourse cu> stu;

再加个map吧 map<string stuName,stu>cu; 通过学生名得到学生所有的课程和分数.
blackjenny242 2009-03-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 blackjenny242 的回复:]

....
class STU;  //学生类
vector <STU> students;
do
{

STU stu;
cin>> stu.stuname;// 输入学生名字
cin>>stu.coursename;
...

students.pushback(stu);
} while(结束条件);
....

[/Quote]
//输出的话
for(int ix=0;ix<students.size();++ix)
{
cout<<students[ix].stuname<<endl;
...
}
blackjenny242 2009-03-14
  • 打赏
  • 举报
回复

....
class STU; //学生类
vector <STU> students;
do
{

STU stu;
cin>> stu.stuname;// 输入学生名字
cin>>stu.coursename;
...

students.pushback(stu);
} while(结束条件);
....
  • 打赏
  • 举报
回复
拿本C++ primer,看看顺序容器的章节呗。
ztenv 版主 2009-03-13
  • 打赏
  • 举报
回复
继续学习中,看一下STL吧,我也正在学;
wecode66 2009-03-13
  • 打赏
  • 举报
回复
#include <Windows.h>
#include <stdio.h>
#include <tchar.h>
#include <vector>
#include <string>
#include <iostream>

using namespace std;

// 课程类
//
class CCourse
{
public:
wstring name; // 课程名
unsigned score; // 分数
};

//
class CStudent
{
public:
std::vector<CCourse> m_course;

// 录入成绩
bool InputScore(unsigned score);{...}

// 录入课程名
bool InputCourse(LPCTSTR lpszName){...};
};


// 定义全局的学生档案
std::vector<CStudent> g_student;

int _tmain(int argc, _TCHAR* argv[])
{
// 学生名字
TCHAR StudentName[256];
ZeroMemory(StudentName, 256);

// 课程名字
TCHAR CourseName[256];
ZeroMemory(CourseName, 256);

// 分数
unsigned score = 0;

wcout<<L"========== c++ cheng ji lu ru & shu chu cheng xu (vector) =========="<<endl;

do
{
// 输入学生名字
...

// 循环输入课程,成绩,按某个键退出
do
{
...输入课程,名字...
}while(1);
} while(1);

getchar();
return 0;
}

八级程序员 2009-03-13
  • 打赏
  • 举报
回复
看书吧~ 呵呵~ 我也不会~
TOMWANGCHENGQING 2009-03-12
  • 打赏
  • 举报
回复
高手能不能讲详细点啊
chin_chen 2009-03-11
  • 打赏
  • 举报
回复
数据是放在数据库里面的还是怎么的。
你那个两个结构体怎么关联起来的啊?
vector<datatype>student;
while()
{
student.push_back();
.....
}
elmnd 2009-03-11
  • 打赏
  • 举报
回复

class course
{
......
};

class student{
course cc;
.....
};
vector<student>stu;
//大概这样子吧

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧