//=================================[说明]=======================================/
//学生成绩管理
//文件名:maincpp
//------!!!!!!---------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=1;i<n;i++)
{
k=p;
p1=p->next;
for (j=0;j<n-i;j++)
{
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)
{
studentAddItem(num,name,mark);
Input(&num, &name, &mark);
}
return;
}
void DoFind() //按学号查找
{
int num;
cout<<endl<<"当输入的学号为-1时表示结束输入"<<endl;
do
{
cout <<"请输入要查找的学生的学号: ";
cin>>num;
if (num==-1)continue;
studentSearch(num);
}
while (num!=-1);
return;
}
void DoDelete() //删除记录
{
cout<<endl<<"当输入的学号为-1时表示结束输入"<<endl;
int num;
do
{
cout <<"请输入要删除的学生的学号:";
cin>>num;
if (num==-1)continue;
studentRemoveItem(num);
}
while (num!=-1);
return;
}
void ShowAverage() //输出平均数
{
float avr=studentAverage();
if (avr>0)
{
cout<<"共有记录:\t"<<studentListCount()<<endl<<endl;
cout<<"平均成绩:\t"<<avr<<endl<<endl;
}
return;
}
//-------<主函数开始>-------
int main()
{
cout<<"Welcome!\n学生成绩管理系统\nVer 101\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: //按学号排序
studentSort();
break;
case 3: //按学号查找记录
DoFind();
break;
case 4: //删除由学号指定的记录
DoDelete();
break;
case 5: //列出所有记录
studentList();
break;
case 6: //输出平均成绩
ShowAverage();
break;
default:
cout<<"无效输入!"<<endl;
}
}
return 0;
}
//-------<主函数结束>-------
//------!!!!!!---------EOF-[程序代码结束]-------------------
可以这样理解:
以我现在的水平,每天写的原始代码大概是1200行。需要用相同多的时间来调试,再需要相同多的时间来优化,还需要相同多的时间来编译测试,算下来每天能写300行有效代码。
让我写一个windows的话,需要10W天=27397年
其实编码只是整个软件开发过程里面的一小部分。
以上就是关于求一个c++小程序源代码,要求200行以上,给100分,能用再加100全部的内容,包括:求一个c++小程序源代码,要求200行以上,给100分,能用再加100、Windows源代码有3000万行什么概念、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)