帮我这只菜鸟看看这个程序错在那里,应如何改正
//===============written ========================//
//////////////////////////////////////////////////////////////
#include<iomanip.h>//学生成绩管理系统的链表实现
#include<string.h>
//===============declaration================================//
class node{//节点类
friend class list;
public:
void getdata();
// ~node(){delete next;}
private:
char number[10];
char name[10];
bool sex;
float score[4];
node * next;
};
void node::getdata(){//赋值函数
char rtemp[10];
float rscore;
int temp;
cout<<"Name:";
cin>>rtemp;
strcpy(name,rtemp);
cout<<"Number:";
cin>>rtemp;
strcpy(number,rtemp);
cout<<"Sex(0-female,1-male):";
cin>>temp;
while(!(temp==0||temp==1)){
cout<<"\n对不起,输入错误,请重输!\nSex(0-female,1-male):";
cin>>temp;
}
if(temp==1) sex=true;
else sex=false;
for(int j=0;j<4;j++){
cout<<"Score"<<j<<":";
cin>>rscore ;
score[j]=rscore;
}
cout<<endl;
}
//----------------------------------------------------------------------//
class list{//ADT表类
public:
list(){first=NULL;}
~list();
bool search(const char *x);
bool Insert(int k,node &x);
bool Delete(int k);
void PrintList(ostream & out);
private:
node* first;
};
list::~list()//析构函数
{
node *p;
while(first){
p=first->next;
delete first;
first=p;
}
}
bool list::search(const char *x )//按学号查找
{
bool success=false;
node * p=first;
int k=1;
while(strcmp(p->number,x)!=0 && p){
p=p->next;
k++;
}
if(p) {
success=true;
cout<<"该记录为第"<<k<<"条"<<":";
cout<<"name:"<<
p->name<<";number:"<<p->number
<<";sex:";
if(p->sex=true) cout<<"male";
else cout<<"female";
for(int j=0;j<4;j++){
cout<<";score"<<j<<":"<<p->score[j]
<<"."<<endl<<endl; }
}
return success;
}
void list::PrintList(ostream & out)//输出ADT表
{
node *p=first;
int i=1;
while(p){
out<<"No"<<i<<":"<<endl<<"name:"<<
p->name<<";number:"<<p->number
<<";sex:";
if(p->sex=true) out<<"male";
else out<<"female";
for(int j=0;j<4;j++){
out<<";score:"<<j<<p->score[j]
<<"."<<endl<<endl;}
p=p->next;
}
}
bool list::Insert(int k,node &x)//在第k个元素后插入
{
bool success=false;
node * p=first;
int s=1;
if(k==0) {
if(!first){
first=new node;
first->next=NULL;
}
x.next=first->next;
first=&x;
success=true;
}
else if(k>0){
if(p && s!=k){
s++;
p=p->next;
}
if(p){
x.next=p->next;
p=&x;
success=true;
}
}
return success;
}
bool list::Delete(int k)//删除第k个元素后的元素
{
bool success=false;
node * p=first;
int s=1;
if(k==0 && p) {
first=first->next;
success=true;
}
else if(k>0){
if(s!=k && p->next){
p=p->next;
s++;
}
if(p->next){
p=p->next->next;
success=true;
}
}
return success;
}
//=================end of declration============================//
//=================main function===============================//
void createadt(int n,list & x);
void insert(list &x);
void Delete(list &x);
void search(list &x);
void print(list &x);
void main()
{
int n;
list x;
cout<<"********************************"<<endl;
cout<<"********************************"<<endl;
cout<<"* ◎欢迎进入学生成绩管理系统◎ *"<<endl;
cout<<"********************************"<<endl;
cout<<"********************************"<<endl<<endl;
cout<<"请先建立一张表!"<<endl<<endl;
cout<<"输入表中的记录数:";
cin>>n;
while(n<0){
cout<<"对不起,输入错误!\n请重新输入:";
cin>>n;
}
cout<<"\n开始建表......"<<endl;
createadt(n,x);
cout<<"......建表结束\n";
do{
cout<<"请选择操作\n1.插入 2.删除 3.查询 4.打印 5.退出"<<endl;
cin>>n;
while(n<1||n>5){
cout<<"对不起,输入错误!\n请重新输入:";
cin>>n;
}
cout<<"\n执行操作......"<<endl;
switch(n){
case(1):insert(x);break;
case(2):Delete(x);break;
case(3):search(x);break;
case(4):print(x);break;
}
} while(n!=5);
cout<<"感谢使用本管理系统!\n请真诚提出建议,谢谢!\n再见!!";
// char m;
// cin>>m;
}
//========================end of main function=========================================//
void createadt(int n,list & x)
{
for(int i=1;i<=n;i++)
{ cout<<"No"<<i<<":"<<endl;
node a;
a.getdata();
x.Insert(i-1,a);
}
}
//-----------------------------------------------------------------------------//
void insert(list &x)
{
cout<<"请输入插入的记录有关信息:"<<endl;
node a;
a.getdata();
cout<<"需要插入在第几条的后面:";
int j;
cin>>j;
if(x.Insert(j,a)) cout<<"\n插入成功"<<endl;
else cout<<"\n对不起,插入失败"<<endl;
}
//----------------------------------------------------------------------------//
void Delete(list &x)
{
cout<<"需要在第几条的后面删除:";
int j;
cin>>j;
if(x.Delete (j)) cout<<"\n删除成功"<<endl;
else cout<<"\n对不起,输入有误,删除失败"<<endl;
}
//---------------------------------------------------------------------------//
void search(list& x)
{
cout<<"输入要查询的学生学号:";
char *a;
cin>>a;
if(!x.search(a)) cout<<"您要查询的记录不存在!\n";
}
//---------------------------------------------------------------------------//
void print(list& x)
{
x.PrintList(cout);
}
相关推荐
44、服务器端 Java 开发全解析
本博客全面解析了使用 Java 进行服务器端开发的多种实现方式,包括标准 CGI、Netscape/server-java 和 Sun 的 Servlet 技术。通过详细的代码示例,如 HelloWorld 和 Greetings,展示了服务器端 Java 应用的开发流程。同时,对比了不同实现方式的优缺点,并提供了开发流程图和优化建议。博客还展望了服务器端 Java 应用的未来发展趋势,如与云计算的融合、人工智能的应用等,为开发者提供了全面的技术参考。
Kotlin简介及其在服务器端Java开发中的应用
Kotlin是一种现代化的静态类型编程语言,可以与Java无缝互操作,并具有许多有用的特性,如空安全性和扩展函数。Kotlin可以与Java代码无缝地互操作,这意味着您可以在Kotlin项目中使用Java库,并且两种语言可以共享相同的代码库。这对于现有的Java项目迁移到Kotlin,或者在新的Kotlin项目中使用现有的Java库非常有用。本文将介绍Kotlin的基本特性,并提供一些在服务器端Java开发中使用Kotlin的示例代码。Kotlin允许开发人员为现有的类添加新的函数,而无需修改其源代码。
深入解析Java游戏服务器端开发的最佳实践——构建高效、稳定的游戏世界
在当今的互联网时代,网络游戏已经成为人们娱乐生活中不可或缺的一部分。而作为游戏的核心支撑部分,游戏服务器端的开发质量直接决定了游戏运行的稳定性、流畅性和可扩展性。Java语言,以其跨平台特性、丰富的库支持和强大的社区后盾,成为了众多游戏开发者构建服务器端架构的首选。本文将带您深入了解Java在游戏服务器端开发中的最佳实践,通过详尽的代码示例和深度解析,揭示如何打造一个高效、稳定的在线游戏世界。
JEP30-PX100A PartModel Product Guidelines for Electronic-Device Substrates and Assemblies – XML Requ
JEP30-PX100A PartModel Product Guidelines for Electronic-Device Substrates and Assemblies – XML Requirements
基于Matlab的自动睡眠粒状结构检测算法,从脑电信号中进行。.zip
1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。


