学生管理系统 C++

cpp2012 2010-09-16 12:41:20
使用下面的数据,用C/C++设计一个简单的学籍管理系统,实现出最基本的功能。
学生基本信息文件(A.TXT)及其内容:A.TXT文件不需要编程录入数据,可用文本编辑工具直接生成
学号 姓名 性别 宿舍号码 电话号码
01 张成成 男 501 87732111
02 李成华 女 101 87723112
03 王成凤 女 101 87723112
04 张明明 男 502 87734333
05 陈东 男 501 87732111
06 李果 男 502 87734333
07 张园园 女 102 87756122
… …. .. … ………..
学生成绩基本信息文件(B.TXT)及其内容:
学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩 综合成绩 实得学分
01 A01 大学物理 3 66 78 82
02 B03 高等数学 4 78 -1 90
01 B03 高等数学 4 45 -1 88
02 C01 VF 3 65 76 66
… …. ………. .. .. …

(一) 功能要求及说明:
(1) 数据录入功能: 对B.TXT进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据. 综合成绩、学分由程序根据条件自动运算。
综合成绩的计算:如果本课程的实验成绩为-1,则表示无实验,综合成绩=平时成绩*30%+卷面成绩*70%; 如果实验成绩不为-1,表示本课程有实验,综合成绩=平时成绩*15%+实验成绩*.15%+卷面成绩*70% .
实得学分的计算: 采用等级学分制.
综合成绩在90-100之间 ,应得学分=学分*100% 综合成绩在80-90之间 ,应得学分=学分*80%
综合成绩在70-80之间 ,应得学分=学分*75% 综合成绩在60-70之间 ,应得学分=学分*60%
综合成绩在60以下 ,应得学分=学分*0%
(2)查询功能:分为学生基本情况查询和成绩查询两种
A:学生基本情况查询:
A1----输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出。
A2---输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。
B:成绩查询:
B1:输入一个学号时,查询出此生的所有课程情况,格式如下:
学 号:xx 姓 名:xxxxx
课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx
课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx
课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx
… … … … ……… … …
共修:xx科,实得总学分为: xxx
(3)删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息。
(4 ) 排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
(5)储存,处理数据时必须使用结构和链表.
...全文
434 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
anselm90 2010-09-17
  • 打赏
  • 举报
回复
百度去吧。。。
excited_lamb 2010-09-17
  • 打赏
  • 举报
回复

template <typename T>
void Read(list<T>& L, istream& in)
{
while(!in.eof())
{
T t;
in >> t;
L.push_back(t);
}
}

template <typename T>
void Write(list<T>& L, ostream& out = std::cout)
{
list<T>::iterator it = L.begin();
list<T>::iterator end = L.end();

while(it != end)
{
out << *it << endl;
it++;
}
}

class StudentCmp
{
public:
StudentCmp(const string& key, const string& val)
: m_key(key), m_val(val) { }

bool operator()(const Student& s)
{
if(m_key == "number")
return s.get_number() == m_val;
else if(m_key == "name")
return s.get_name() == m_val;
else if(m_key == "dormPhoneNumber")
return s.get_dormPhoneNumber() == m_val;
else
return false;
}
private:
string m_key;
string m_val;
};

class CourseCmp
{
public:
CourseCmp(const string& key, const string& val = "")
: m_key(key), m_val(val) { }

bool operator()(const Course& c)
{
if(m_key == "number")
return c.get_studentNumber() == m_val;
else
return false;
}

bool operator()(const Course& c1, const Course& c2)
{
if(m_key == "finalScore_ASC")
return c1.get_finalScore() < c2.get_finalScore();
else if(m_key == "finalScore_DES")
return c2.get_finalScore() < c1.get_finalScore();
else if(m_key == "finalCredit_ASC")
return c1.get_finalCredit() < c2.get_finalCredit();
else if(m_key == "finalCredit_DES")
return c2.get_finalCredit() < c1.get_finalCredit();
else
return false;
}
private:
string m_key;
string m_val;
};

void Remove(list<Student>& L1, list<Course>& L2, const string& number)
{
L1.remove_if(StudentCmp("number", number));
L2.remove_if(CourseCmp("number", number));
}

void Query(list<Student>& L, const string& key, const string& val)
{
StudentCmp cmp(key, val);

list<Student>::iterator a = L.begin();
list<Student>::iterator b = L.end();

while(1)
{
list<Student>::iterator it = find_if(a, b, cmp);

if(it == b)
break;

cout << *it << endl;
a = ++it;
}
}

void Query(list<Student>& L1, list<Course>& L2, const string& number)
{
list<Student>::iterator it;
it = find_if(L1.begin(), L1.end(), StudentCmp("number", number));

if(it == L1.end())
return;

const string& name = it->get_name();
cout << "学号: " << number << "\t"
<< "姓名: " << name << endl;

list<Course>::iterator a = L2.begin();
list<Course>::iterator b = L2.end();
int cnt = 0;
double totalCredit = 0.0;

while(1)
{
list<Course>::iterator it = find_if(a, b, CourseCmp("number", number));

if(it == b)
break;

cout << "课程编号: " << it->get_courseNumber() << "\t"
<< "课程名称: " << setw(12) << left << it->get_name() << "\t"
<< "综合成绩: " << it->get_finalScore() << "\t"
<< "实得学分: " << it->get_finalCredit() << endl;

cnt++;
totalCredit += it->get_finalCredit();
a = ++it;
}

cout << "共修: " << cnt << "科" << "\t"
<< "实得总学分为: " << totalCredit << endl;

}

void Sort(list<Course>& L, const string& sortType)
{
L.sort(CourseCmp(sortType));
}
excited_lamb 2010-09-17
  • 打赏
  • 举报
回复

class Course
{
public:
//getter
const string& get_studentNumber() const { return m_StudentNumber; }
const string& get_courseNumber() const { return m_CourseNumber; }
const string& get_name() const { return m_Name; }
double get_credit() const { return m_Credit; }
double get_commonScore() const { return m_CommomScore; }
double get_experimentScore() const { return m_ExperimentSocre; }
double get_paperScore() const { return m_PaperScore; }
double get_finalScore() const { return m_FinalScore; }
double get_finalCredit() const { return m_FinalCredit; }

//setter


void update_finalScore();
void update_finalCredit();

friend ostream& operator << (ostream& out, const Course& c);
friend istream& operator >> (istream& in, Course& c);

public:
string m_StudentNumber;
string m_CourseNumber;
string m_Name;
double m_Credit;
double m_CommomScore;
double m_ExperimentSocre;
double m_PaperScore;
double m_FinalScore;
double m_FinalCredit;
};

void Course::update_finalCredit()
{
double t = m_FinalScore;
double x = 0.0;

if(t >= 90 && t <= 100)
x = 1.0;
else if( t >= 80 && t < 90)
x = 0.8;
else if(t >= 70 && t < 80)
x = 0.75;
else if(t >= 60 && t < 70)
x = 0.6;

m_FinalCredit = m_Credit * x;
}

void Course::update_finalScore()
{
if(m_ExperimentSocre == -1)
{
m_FinalScore =
m_CommomScore * 0.3 +
m_PaperScore * 0.7;
}
else
{
m_FinalScore =
m_CommomScore * 0.15 +
m_ExperimentSocre * 0.15 +
m_PaperScore * 0.7;
}
}

ostream& operator << (ostream& out, const Course& c)
{
out << c.get_studentNumber() << "\t"
<< c.get_courseNumber() << "\t"
<< setw(12) << left
<< c.get_name() << "\t"
<< c.get_credit() << "\t"
<< c.get_commonScore() << "\t"
<< c.get_experimentScore() << "\t"
<< c.get_paperScore() << "\t"
<< c.get_finalScore() << "\t"
<< c.get_finalCredit();
return out;
}

istream& operator >> (istream& in, Course& c)
{
in >> c.m_StudentNumber
>> c.m_CourseNumber
>> c.m_Name
>> c.m_Credit
>> c.m_CommomScore
>> c.m_ExperimentSocre
>> c.m_PaperScore;

c.update_finalScore();
c.update_finalCredit();

return in;
}
excited_lamb 2010-09-17
  • 打赏
  • 举报
回复

class Student
{
public:
//getter
const string& get_number() const { return m_Number; }
const string& get_name() const { return m_Name; }
const string& get_sex() const { return m_Sex; }
const string& get_dormPhoneNumber() const { return m_DormPhoneNumber; }
const string& get_telePhoneNumber() const { return m_TelePhoneNumber; }

//setter
void set_number(string& number) { m_Number = number; }
void set_name(string& name) { m_Name = name; }
void set_sex(string& sex) { m_Sex = sex; }
void set_dormPhoneNumber(string& dormPhoneNumber) { m_DormPhoneNumber = dormPhoneNumber; }
void set_telePhoneNumber(string& telePhoneNumber) { m_TelePhoneNumber = telePhoneNumber; }

//io
friend ostream& operator << (ostream& out, const Student& s);
friend istream& operator >> (istream& in, Student& s);

private:
string m_Number;
string m_Name;
string m_Sex;
string m_DormPhoneNumber;
string m_TelePhoneNumber;
};

ostream& operator << (ostream& out, const Student& s)
{
out << s.get_number() << "\t"
<< s.get_name() << "\t"
<< s.get_sex() << "\t"
<< s.get_dormPhoneNumber() << "\t"
<< s.get_telePhoneNumber();
return out;
}

istream& operator >> (istream& in, Student& s)
{
in >> s.m_Number
>> s.m_Name
>> s.m_Sex
>> s.m_DormPhoneNumber
>> s.m_TelePhoneNumber;
return in;
}
aofengdaxia 2010-09-17
  • 打赏
  • 举报
回复
外包价,2000起步
genlic 2010-09-17
  • 打赏
  • 举报
回复
热心的多。。但是没人会给你发的...
要么自己写,要么自己网上下载...
哎。这作业真有这么难么..
doctor1190 2010-09-16
  • 打赏
  • 举报
回复
问题直接一步到位,从需求到结果
nouce 2010-09-16
  • 打赏
  • 举报
回复
哎。。。。。。。。
jingsihu 2010-09-16
  • 打赏
  • 举报
回复
你真屌,还没开始编就上CSDN了
cpp2012 2010-09-16
  • 打赏
  • 举报
回复
外包是什么意思???
jingsihu 2010-09-16
  • 打赏
  • 举报
回复
你是想外包吧
wyfwx 2010-09-16
  • 打赏
  • 举报
回复
想干啥,外包给我们帮你做?
Csuxiaowu 2010-09-16
  • 打赏
  • 举报
回复
你想干什么 ?
dingshaofengbinbin 2010-09-16
  • 打赏
  • 举报
回复
我有个MFC的,你要不要啊!!!
  • 打赏
  • 举报
回复
我帮你做吧,20块,要的话联系我~~703003659
Q446512799 2010-09-16
  • 打赏
  • 举报
回复
what do you want?
pingpingok 2010-09-16
  • 打赏
  • 举报
回复
悲剧。。。。。
cpp2012 2010-09-16
  • 打赏
  • 举报
回复
热心的果然好多啊,,期待哦!!嘿嘿
龙哥依旧 2010-09-16
  • 打赏
  • 举报
回复
上学的时候能把这些做出来,个人认为已经很不错了,能用VB做出来就行(虽然我现在拿VB也还做不出来,但我用VC能做出来)
独酌逸醉 2010-09-16
  • 打赏
  • 举报
回复
真悲剧!

64,651

社区成员

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

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