问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言课程设计学生成绩统计

发布网友 发布时间:2024-01-06 05:59

我来回答

3个回答

热心网友 时间:2024-12-02 11:28

# include <iostream>
# include <fstream>
# include <string.h>
#include <conio.h>//用getch();
using namespace std;

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Student类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class Student
{
public:
char name[20];
char Id[20];
int MTnum; //数学课程得分
int ENnum; //英语课程得分
int PHnum; //物理课程得分
int sum; //总分
Student * Next;
void Input()
{
cout<<"\t\t请输入学生的姓名:"; cin>>name;
cout<<"\t\t请输入学生的学号:"; cin>>Id;
cout<<"\t\t请输入数学课程的成绩:"; cin>>MTnum;
cout<<"\t\t请输入英语课程的成绩:"; cin>>ENnum;
cout<<"\t\t请输入物理课程的成绩:"; cin>>PHnum;
sum=MTnum+ENnum+PHnum;
}
void ReadFile(istream & in)
{
in>>name>>Id>>MTnum>>ENnum>>PHnum>>sum;
}
void Show()
{
cout<<"姓名:"<<name<<endl<<"学号:"<<Id<<endl<<"C++:"<<MTnum<<endl
<<"数学:"<<ENnum<<endl<<"外语:"<<PHnum<<endl<<"总成

绩:"<<sum<<endl<<endl<<endl;
}
};

//﹌﹌﹌﹌﹌﹌﹌﹌﹌Studentmassage类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class Studentmassage
{
public:
Studentmassage();
~Studentmassage();
void ShowMenu();
void Find();
void Save();
void ModifyItem();
void RemoveItem();
void Swap(Student *,Student *);
void Sort();
//void Unpass();
int ListCount();
//void Average();
void Display()
{
for(Student * p=Head->Next;p!=End;p=p->Next)
p->Show();
cout<<"输入任意字符!继续……";
getch();
}
void AddItem()
{
End->Input();
End->Next=new Student;
End=End->Next;
cout<<"添加成功!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
private:
Student * Head,* End;
ifstream in;
ofstream out;
Student *FindItem(char * name)
{
for(Student * p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个指针,

不成功就返回空
if(!strcmp(p->Next->name,name))return p;
return NULL;
}
Student *FindID(char * Id)
{
for(Student * p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个指针,

不成功就返回空
if(!strcmp(p->Next->Id,Id))return p;
return NULL;
}
};

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
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;
}
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Studentmassage::~Studentmassage()
{
Save();
for(Student * temp;Head->Next!=End;)
{
temp=Head->Next;
Head->Next=Head->Next->Next;
delete temp;
}
delete Head,End;
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::ShowMenu()
{
cout<<"〓〓〓〓〓〓〓〓〓〓 ☆ 学 生 成 绩 管 理 系 统 ☆ 〓〓〓〓〓〓〓〓〓

〓"<<endl;
cout<<"〓〓〓〓〓〓〓★★★★★ ★★★★★★★ ★★★★★〓〓〓〓〓〓

〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 1.增加学生成绩 ☆ ★〓〓〓〓〓〓〓〓

〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 2.显示学生成绩 ☆ ★〓〓〓〓〓〓〓〓

〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 3.排序统计成绩 ☆ ★〓〓〓〓〓〓〓〓

〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 4.查找学生成绩 ☆ ★〓〓〓〓〓〓〓〓

〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 5.删除学生成绩 ☆ ★〓〓〓〓〓〓〓〓

〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 6.修改学生信息 ☆ ★〓〓〓〓〓〓〓〓

〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 0.安全退出系统 ☆ ★〓〓〓〓〓〓〓〓

〓"<<endl;

cout<<"\n\t\t\n\t\t请选择:";
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Find()
{
char name[20] ,Id[10];
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->Show();
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到该姓名的学生!"<<'\n'<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}break;
case 2:
{
cout<<"\t\t请输入要查找的学生的学号:";cin>>Id;
if(p=FindID(Id))
{
p->Next->Show();
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到该学好的学生!"<<'\n'<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}break;
}

}

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

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌删除信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
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;
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Swap(Student *p1, Student *p2)//交换两个combox变量的数据域
{
Student *temp=new Student;
strcpy(temp->name,p1->name);
strcpy(temp->Id,p1->Id);
temp->MTnum=p1->MTnum;
temp->ENnum=p1->ENnum;
temp->PHnum=p1->PHnum;
temp->sum=p1->sum;

strcpy(p1->name,p2->name);
strcpy(p1->Id,p2->Id);
p1->MTnum=p2->MTnum;
p1->ENnum=p2->ENnum;
p1->PHnum=p2->PHnum;
p1->sum=p2->sum;

strcpy(p2->name,temp->name);
strcpy(p2->Id,temp->Id);
p2->MTnum=temp->MTnum;
p2->ENnum=temp->ENnum;
p2->PHnum=temp->PHnum;
p2->sum=temp->sum;
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
int Studentmassage::ListCount()//统计当前链表的记录总数,返回一个整数
{
if(! Head)
return 0;
int n=0;
for(Student * p=Head->Next;p!=End;p=p->Next)
{
n++;
}
return n;
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Sort()//对当前链表进行排序
{
cout <<"Sorting..."<<endl;
Student *p=NULL,*p1=NULL,*k=NULL;
int n=Studentmassage::ListCount();
if(n<2)
return;
for(p=Head->Next;p!=End;p=p->Next)
for(k=p->Next;k!=End;k=k->Next)
{
if(p->sum>k->sum)
{
Studentmassage::Swap(p,k);
}
}
cout <<"排序完成!"<<endl;
getch();
return;
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌保存函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
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->MTnum<<"\t"
<<p->ENnum<<"\t"<<p->PHnum<<"\t"<<p->sum<<'\n';
out.close();
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
int main()
{
int x,i=0;
bool quit=false;
cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§"<<endl;
for(i=0;i<3;i++)
cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl;
cout<<"\t\t◎★★★★【 欢迎进入学生成绩管理系统 】★★★★◎"<<endl;
for(i=0;i<3;i++)
cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl;
cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§\n"<<endl;;
Studentmassage Grade;
cout<<"按任意键开始……";
getch();
while(!quit)
{
system("cls");
Grade.ShowMenu();
cin>>x;
switch(x)
{
case 0:quit=true;break;
case 1:Grade.AddItem();break;
case 2:Grade.Display();break;
case 3:Grade.Sort();break;
case 4:Grade.Find();break;
case 5:Grade.RemoveItem();break;
case 6:Grade.ModifyItem();break;
}
}
return 0;
}

热心网友 时间:2024-12-02 11:28

采纳答案留QQ

热心网友 时间:2024-12-02 11:29

fgrssaefds
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
罗马全面战争怎么样提高元老院评价? 半夜家中镜匾忽然碎了 镜子忽然碎掉怎么解 化能异养型微生物分类 如何判断自养微生物与异养微生物 如何得知某微生物是否为哪种氨基酸的异养型微生物。 滨州市北海振宇电子科技有限责任公司怎么样? 北京振宇科技有限公司怎么样? 上海振宇化工科技有限公司经营范围 商业医保是否值得购买? 一年只能改一次吗? 从临平到杭州可以在哪儿乘车,并且是在杭州哪儿下的车,票价多少,谢谢大家... 临平方向怎么坐车去邵逸夫医院,要详细点的谢谢高手来帮忙如题... ...省杭州市江干区庆春东路3号 (邵逸夫医院)公交车怎么坐 求助,淘宝买家因为拍错宝贝申请了退款退货,我作为卖家要怎么操作_百 ... 车牌号比如是粤B 开头。这是那个省的。 义乌宾王客运中心什么时候搬迁 培组词培的组词培字怎么组词 ...宽9厘米的长方形上剪下一个最大的半圆,求半圆的周长。 2、在一张... 如何追女生?怎么追女生? 如何追一位女生? 四川省乐山市有几个寺庙可以削发为尼 证明:在主理想整环中.P是素理想当且仅当P由素元生成. 魔兽争霸冰封王座单机ORPG9种武器保存错误 40磅指的是什么意思呀 有关元旦的剪纸视频教程 从临平出发,怎样坐公交车到杭州邵逸夫医院,大家帮帮忙呀,谢谢啦! 求螺丝的扭力 是外国的车, 请问40磅尺等于多少公斤力? 还有96磅尺... 如何追女生,怎么追女生 现在银行下班,怎么办理提取公积金 ...语种为日语或俄语的学生,在高考选择学校或专业的时候会有什么... 英语考级该如何报考。? ...存储单位表示(即太阳外壳内部空间能装多少个地球)是多少馈字节?_百 ... ...的详细地址在那里?这个派出所以前是在宾王市场的最近搬到篁园市场的... 法院审判委员会专职委员和委员的区别 性赵的男孩中间带有明字的名字 关于游民星空鬼泣3完整破解版的问题。 我是 游民星空 下的完整破解版的,但是安装完了打不开 ...框架,其中一个三角形框架的三边长分别为4,5,6,另一个三角形框架的... 大学英语等级考试与全国英语等级考试有啥区别 ...的三角形框架,其中一个三角形框架的三边长分别是4,5,6,另一个三角... 广西民族大学的官方生活作息时间表……有上课下课时间的……_百度知... 赵明琴名字怎么样? 怎么一年内强制改第二次 在淘宝买东西,东西拍错了,申请退款!过去几天了卖家也不退!该怎么办... “超龄”劳动者上班途中被撞身亡可否认定工伤 假设一个三角形的三边长分别为6.7.8,能否求出此三角形内心到三边的距 ... 孩子驼背如何纠正? ...三角形框架,其中一个三角形框架的三边分别是4,5,6,另一个三角形的... 微信重新注册了,怎么找回以前那个?