⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 111.txt

📁 In c + + written students information management system, the introduction of practical test run, goo
💻 TXT
📖 第 1 页 / 共 2 页
字号:
p1->next=p2; 
} //插入到p3所指结点之后 
} 
else 
{ 
p2->next=p1; 
p1->next=NULL; 
} //插入到尾结点之后 
} 
n++;//将学生人数加1 
cout<<"\t你输入的学生信息已经成功插入"<<endl; 
return (head); 
} 
//------------>删除函数 
student *Information::cancel(student *head,long int num)//定义一个指向struct student

//的结构体指针函数*delete()用来删除考生信息. 
{ 

if(head==NULL)//若调用次函数以前的头指针head为空 
{ 
return(head); 
} 
else 
{ 
p1=head;//否则将头指针赋给p1 
while(num!=p1->id&&p1->next!=NULL)//寻找要删除的结点当p1所指的学生学号不是输入的学生

//学号并且p1所指的next指针不为空 
{ 
p2=p1; 
p1=p1->next; 
}//p2指向原p1指向的结点p1后移一个结点 
if(num==p1->id)//如果输入的学生学号是p1所指的学生学号//结点找到后删除 
{ 
if(p1==head) head=p1->next;//如果head指针和p1指针相等则将下一个结点赋给指针head 
else 
p2->next=p1->next;//否则将p1所指结点赋给p2所指结点将要删除的学生信息跳过去 
cout<<" 删除学号为"<<num<<"的学生\n"; 
n--;//将学生人数减1 
} 
return(head);//将头指针返回 
} 
} 
//------------>查找函数 
student *Information::find(student *head,long int num) 
//定义一个指向struct student的结构体指针函数*find()用来查找学生信息. 
{ 

if(head==NULL)//若调用次函数以前的头指针head为空 
{ 
cout<<" 这是一个空表,请先输入考生成绩.\n"; 
return(head); 
} 
else 
{ 
p1=head;//否则将头指针赋给p1 
while(num!=p1->id&&p1->next!=NULL) 
//寻找结点当p1所指的学生准考证号不是输入的学生学号并且p1所指的next指针不为空 
{ 
p1=p1->next; 
}//p2指向原p1指向的结点p1后移一个结点 
if(num==p1->id)//如果要查找的学生学号是p1所指的学生准考证号 
{ 
cout<<"------------------------------------------------------------------------------- \n"; 
cout<<"    学号  姓名 性别 年龄  出生年月   电话       Email        地址              \n"; 
cout<<"-------------------------------------------------------------------------------\n"; 
cout<<setw(5)<<p1->id 
<<setw(9)<<p1->name 
<<setw(3)<<p1->sex 
<<setw(4)<<p1->age 
<<setw(8)<<p1->birthday 
<<setw(15)<<p1->phone 
<<setw(12)<<p1->email 
<<setw(10)<<p1->address <<endl;
cout<<"------------------------------------------------------------------------------\n"; 
} 
else 
cout<<" 没找到学号为"<<num<<"的学生.\n"; //结点没找到 
return(head); 
} 
} 
//------------定义inorder()函数将学生的学号从小到大排列并输出 
void Information::inorder(student *head) 
{ 
int i,k,m=0,j; 
student *p[Q];//定义一个指向struct student的结构体指针数组p 
if(head!=NULL)//如果头指针是空则继续 
{ m=count(head); 
cout<<"------------------------------------------------------------------------------\n"; 
cout<<"                           学生信息统计表                                    \n"; 
cout<<"------------------------------------------------------------------------------\n"; 
cout<<"    学号  姓名 性别 年龄  出生年月   电话       Email        地址              \n"; 
cout<<"------------------------------------------------------------------------------\n"; 
p1=head; 
for(k=0;k<m;k++) 
{ 
p[k]=p1; 
p1=p1->next; 
} 
for(k=0;k<m-1;k++) //选择排序法 
for(j=k+1;j<m;j++) 
if(p[k]->id>p[j]->id) 
{ 
p2=p[k]; 
p[k]=p[j]; 
p[j]=p2; 
} //从小到大排列的指针 
for(i=0;i<m;i++) 
{ 
cout<<setw(5)<<p1->id 
<<setw(9)<<p1->name 
<<setw(3)<<p1->sex 
<<setw(4)<<p1->age 
<<setw(8)<<p1->birthday 
<<setw(15)<<p1->phone 
<<setw(12)<<p1->email 
<<setw(10)<<p1->address<<endl;
cout<<"------------------------------------------------------------------------------\n"; 
} 
} 
} 
//------------------->保存函数. 
void Information::save(student *head) 
{ 
ofstream out("data.txt",ios::out); 
out<<count(head)<<endl; 
while(head!=NULL) 
{ out<<head->name<<"\t" 
<<head->id<<"\t"<<"\t" 
<<head->sex<<"\t" 
<<head->age<<"\t" 
<<head->birthday<<"\t" 
<<head->phone<<"\t" 
<<head->email<<"\t" 
<<head->address<<endl; 
head=head->next; 
} 

} 
//----------->读取函数的实现 
student *Information::Read() 
{ int i=0; 
p1=p2=( student *)malloc(LEN); 
head=NULL; 
ifstream in("data.txt",ios::out); 
in>>i; 
if(i==0){cout<<" data.txt 文件中的数据为空,请先输入数据。"<<endl; return 0;} 
else { 
cout<<" …………………………………………………………………………………………"<<endl; 
for(;i>0;i--) 
{ p1=(student *)malloc(LEN); 
cin>>st.name>>st.id>>st.sex 
>>st.age>>st.birthday>>st.phone>>st.email 
>>st.address; 
strcpy(p1->name,st.name); 
p1->id=st.id; 
p1->sex=st.sex; 
p1->age=st.age; 
p1-> birthday=st.birthday; 
strcpy(p1->email,st.email);
strcpy(p1->phone,st.phone);
strcpy(p1->address,st.address);
if(n==0)head=p1;//如果是输入第一组学生信息就将指针p1赋给指针head 
else p2->next=p1;//否则将p1赋给p2所指结构体的next指针 
p2=p1;//将指针p1赋给指针p2 
n++; //将n的值加1 
//显示读入数据 
cout<<" "<<p1->name<<"\t" 
<<p1->id<<"\t"<<"\t" 
<<p1->sex<<"\t" 
<<p1->age<<"\t" 
<<p1->birthday <<"\t" 
<<p1->phone <<"\t" 
<<p1->email<<"\t" 
<<p1->address<<endl; 
cout<<" …………………………………………………………………………………………"<<endl; 
// 
} 
cout<<" 数据已经成功读取完毕。"<<endl; 
p2->next=NULL; 
return (head); 
} 

} 
//------------------------------>主函数. 
int main(void) 
{ 
Information person; 
student *head=NULL; 
char str[10]; 
int flag=0; 
int choice; 
long int i; 
head=person.Read(); 
do{ 




cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl; 
cout<<"┃                        学生成绩管理系统主菜单界面                        ┃"<<endl ; 
cout<<"┃                           读取数据请输入数字零                           ┃"<<endl; 
cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫"<<endl; 
cout<<"┃                             ①.输入学生信息                              ┃"<<endl; 
cout<<"┃                             ②.显示学生信息                              ┃"<<endl; 
cout<<"┃                             ③.排序统计信息                              ┃"<<endl; 
cout<<"┃                             ④.查找学生信息                              ┃"<<endl; 
cout<<"┃                             ⑤.增加学生信息                              ┃"<<endl; 
cout<<"┃                             ⑥.删除学生信息                              ┃"<<endl; 
cout<<"┃                             ⑦.保存退出系统                              ┃"<<endl; 
cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"<<endl; 
cout<<"请输入您的选择(1--7):( )\b\b"; 

cin>>str; 
if(atoi(str)>7 || atoi(str)<0) 
cout<<"对不起,请输入1-7这几个数字!!\n"; 
else 
{ 
choice=atoi(str); 
switch(choice) 
{ 
case 0: 
person.Read();
break;
case 1: 
head=person.creat(); 
break; 
case 2: 
person.output(head); 
break; 
case 3: 
person.inorder(head); 

cout<<" 学生人数为:"<<person.count(head)<<"人\n"; 
break; 
case 4: 
cout<<" 请输入要查找的学号(8位):"; 
do{ 
cin>>str; 
if(atol(str)>99999999 || atol(str)<1) 
cout<<"对不起,请输入正确输入!!!\n"; 
else 
{i=atol(str); flag=1; } 
}while(flag==0); 

flag=0; 
person.find(head,i); 
break; 
case 5: 
head=person.insert(head); 
person.output(head); 
break; 
case 6: 
cout<<" 请输入要删除的学号(8位):"; 
do{ 
cin>>str; 
if(atol(str)>99999999 || atol(str)<1) 
cout<<"对不起,请输入正确输入!!!h\n"; 
else 
{i=atol(str); flag=1; } 
}while(flag==0); 

flag=0; 
head=person.cancel(head,i); 
person.output(head); 
break; 
case 7: 
person.save(head); 
cout<<"文件已保存!可以安全退出!!!"<<endl; 
break; 
default :cout<<" 对不起,您的输入有误,请重新输入。\n"; 
break; 
} 
} 
}while(choice!=7); 

return 0; 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -