
//学生成绩管理
//文件名:main.cpp
//------!!!!!!---------BOF-[程序代码开始]-------------------
#include<iostream>
#include<string>
using namespace std
//=============<开始定义结构体>===================================================
struct combox
{
int num
int mark
string name
combox *next
}
//=============<结束定义结构体>===================================================
//=============<开始定义Commonbox类>==============================================
//-----类体开始------------------------
class Commonbox
{
private:
combox *head
void Swap(combox *,combox *)//交换两个combox变量的数据域
void Print(combox *)//输出一combox指定的记录
combox *Find(int)//查找条例条件的记录,并返回该记录的指针
public:
Commonbox()
{
head=NULL
}
int ListCount()//统计当前链表的记录总数,返回一个整数
void AddItem(int num, string name, int mark)//添加一条记录到表尾
void RemoveItem(int)//删除一条指定的记录
void List()//列出当前链表中的所有记录
void Sort()//对当前链表进行排序
void Search(int)//在当前链表查找指定记录并输出
float Average()//计算平均成绩
}
//-----类体结束------------------------
//-----类成员函数开始----------------------------------
int Commonbox::ListCount() //统计当前链表的记录总数,返回一个整数
{
if (! head)return 0
combox *p=head
int n=0
while (p)
{
n++
p=p->next
}
return n
}
void Commonbox::AddItem(int num, string name, int mark) //添加一条记录到表尾
{
if (! head)
{
head=new combox
head->mark=mark
head->num=num
head->name=name
head->next=NULL
return
}
combox *t=head
while (t &&t->num!=num)
t=t->next
if (t)
{
cout<<" *** 作失败:学号为"<<num<<"的记录已经存在!"<<endl
return
}
combox *p=head
while (p->next)p=p->next
combox *p1=new combox
p1->num=num
p1->mark=mark
p1->name=name
p1->next=NULL
p->next=p1
return
}
void Commonbox::RemoveItem(int num) //删除一条指定的记录
{
combox *t=Find(num)
if (! t)return
combox *p=head
//如果要删除的记录位于表头
if (head==t)
{
head=head->next
delete p
cout <<"成功删除学号为 "<<num<<" 的记录!"<<endl<<endl
return
}
while (p->next!=t)p=p->next
combox *p1=p->next
p->next=p1->next
delete p1
cout <<"成功删除学号为 "<<num<<" 的记录!"<<endl<<endl
return
}
void Commonbox::Print(combox *p) //输出一combox指定的记录
{
cout<<p->num<<"\t\t"
cout<<p->name<<"\t\t"
cout<<p->mark<<endl
return
}
void Commonbox::List() //列出当前链表中的所有记录
{
if (ListCount()==0)
{
cout <<"错误:当前的列表为空!"<<endl
return
}
combox *p=head
cout<<"共有记录:"<<ListCount()<<endl
cout<<"学号\t\t姓名\t\t分数"<<endl
while (p)
{
Print(p)
p=p->next
}
cout <<endl
return
}
void Commonbox::Search(int num) //在当前链表查找指定记录并输出
{
cout <<"Searching...."<<endl
combox *p=Find(num)
if (p)
{
cout<<"学号\t\t姓名\t\t分数"<<endl
Print(p)
}
cout <<endl
}
combox *Commonbox::Find(int num)
{
if (ListCount()==0)
{
cout <<"错误:当前的列表为空!"<<endl
return NULL
}
combox *p=head
while (p)
{
if (p->num==num)break
p=p->next
}
if (! p)
{
cout <<"错误:找不到该记录!\n"
return NULL
}
return p
}
void Commonbox::Swap(combox *p1, combox *p2) //交换两个combox变量的数据域
{
combox *temp=new combox
temp->num=p1->num
temp->mark=p1->mark
temp->name=p1->name
p1->num=p2->num
p1->mark=p2->mark
p1->name=p2->name
p2->num=temp->num
p2->mark=temp->mark
p2->name=temp->name
}
void Commonbox::Sort() //对当前链表进行排序
{
cout <<"Sorting..."<<endl
if (ListCount()<2) return
combox *temp=NULL,*p=NULL,*p1=NULL,*p2=NULL,*k=NULL
int n=ListCount(),i,j
p=head
for (i=1i<ni++)
{
k=p
p1=p->next
for (j=0j<n-ij++)
{
if (k->num >p1->num)
{
k=p1
}
p1=p1->next
}
if (p!=k)Swap(k,p)
p=p->next
}
cout <<"Complete successfully!"<<endl<<endl
return
}
float Commonbox::Average() //计算平均成绩
{
if (ListCount()==0)
{
cout <<"错误:当前的列表为空!"<<endl
return -1
}
int sum=0,n=0
combox *p=head
while (p)
{
sum += p->mark
p=p->next
n++
}
return float(sum)/n
}
//-----类成员函数结束----------------------------------
//=============<结束定义Commonbox类>==============================================
Commonbox student//定义全局变量
int Menu()
{
cout <<"===========[主选单:]==========="<<endl
int n=1,select=-1
cout <<n++<<".输入学生成绩"<<endl<<endl
cout <<n++<<".按学号排序"<<endl<<endl
cout <<n++<<".按学号查找记录"<<endl<<endl
cout <<n++<<".删除由学号指定的记录"<<endl<<endl
cout <<n++<<".列出所有记录"<<endl<<endl
cout <<n++<<".计算平均成绩"<<endl<<endl
cout <<"0.退出"<<endl<<endl
cout <<"[请选择(输入相应数字)]:"
cin >>select
return select
}
char Exit() //返回一个字符患,用于确认退出
{
char s
cout<<"确定要退出程序吗?[Y/N]:"
cin >>s
return s
}
void Input(int *num, string *name, int *mark) //输入学生信息
{
cout <<"请输入 学号 姓名 分数:"
cin >>*num
if (*num==-1)return
cin >>*name>>*mark
return
}
void AddNew() //增加记录
{
int num=0,mark=0
string name=""
cout<<endl<<"当输入的学号为-1时表示结束输入."<<endl
Input(&num, &name, &mark)
while (num!=-1)
{
student.AddItem(num,name,mark)
Input(&num, &name, &mark)
}
return
}
void DoFind() //按学号查找
{
int num
cout<<endl<<"当输入的学号为-1时表示结束输入."<<endl
do
{
cout <<"请输入要查找的学生的学号: "
cin>>num
if (num==-1)continue
student.Search(num)
}
while (num!=-1)
return
}
void DoDelete() //删除记录
{
cout<<endl<<"当输入的学号为-1时表示结束输入."<<endl
int num
do
{
cout <<"请输入要删除的学生的学号:"
cin>>num
if (num==-1)continue
student.RemoveItem(num)
}
while (num!=-1)
return
}
void ShowAverage() //输出平均数
{
float avr=student.Average()
if (avr>0)
{
cout<<"共有记录:\t"<<student.ListCount()<<endl<<endl
cout<<"平均成绩:\t"<<avr<<endl<<endl
}
return
}
//-------******<主函数开始>******-------
int main()
{
cout<<"Welcome!\n学生成绩管理系统\nVer 1.01\nBy FondBoy\n\n"
int select
char s
while (1)
{
select=Menu()
switch (select)
{
case 0: //退出程序
s=Exit()
if (s=='y' || s=='Y')return 0
break
case 1: //输入学生成绩
AddNew()
break
case 2: //按学号排序
student.Sort()
break
case 3: //按学号查找记录
DoFind()
break
case 4: //删除由学号指定的记录
DoDelete()
break
case 5: //列出所有记录
student.List()
break
case 6: //输出平均成绩
ShowAverage()
break
default:
cout<<"无效输入!"<<endl
}
}
return 0
}
//-------******<主函数结束>******-------
//------!!!!!!---------EOF-[程序代码结束]-------------------
#include <stdio.h>void main()
{
int age
printf("please input the child age:")
scanf("%d",&age)
switch(age)
{
case 2:
case 3: printf("%d,enter the Lower class.\n",age)break
case 4: printf("%d,enter the Middle class.\n",age)break
case 5:
case 6: printf("%d,enter the Higher class.\n",age)break
default : printf(" you chlid shuld goto more Higher class.\n")break
}
}
国行switch微信小程序退款时间是24小时以内。根据查询相关资料显示,截止于2023年1月30日,国行switch微信小程序发布的通过中显示,购买退款时间在一个工作日24小时内完成,会将款项原路退回至账户。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)