顺序表
#include<iostream>
#include<cstdio>
#include<string>
using namespace std; //然后在加上这句
void New_pro(); //新建顺序表
void Log_data(); //录入学生数据
void Inquire(); //查询学生信息
void Insert(); //插入学生信息
void Delete(); //删除学生信息
void Num_of_peo(); //统计学生人数
void Show_all(); //显示所有学生信息
void Menu(); //显示用户界面
int num=0; //统计学生人数
typedef struct Student{
string no;
string name;
int price;
}Student;
Student student[100];
int main(){
printf("欢迎进入学生信息管理系统!\n\t\t\t\t作者:Pibuyi\n\n");
int a;
while(1){
Menu();
cout<<"请输入数字选择:";
cin>>a;
if(a==1){
New_pro();
}else if(a==2){
Log_data();
}else if(a==3){
Inquire();
}else if(a==4){
Insert();
}else if(a==5){
Delete();
}else if(a==6){
Num_of_peo();
}else if(a==7){
Show_all();
}else break;
}
return 0;
}
void Menu(){
printf("\t\t******************************\n");
printf("\t\t* 1.新建顺序表 *\n");
printf("\t\t* 2.录入学生数据 *\n");
printf("\t\t* 3.查询学生信息 *\n");
printf("\t\t* 4.插入学生信息 *\n");
printf("\t\t* 5.删除学生信息 *\n");
printf("\t\t* 6.统计学生人数 *\n");
printf("\t\t* 7.显示所有学生信息 *\n");
printf("\t\t* 8.退出 *\n");
printf("\t\t******************************\n\n");
}
void New_pro(){
system("cls");
Student student[100];
num=0;
printf("已重新新建顺序表!\n\n");
}
void Log_data(){
system("cls");
int n;
printf("\n请输入学生人数(小于100):");
cin>>n;
num=n;
for(int i=0;i<n;i++){
printf("\n请输入第%d个学生的名字:",i+1);
cin>>student[i].name;
printf(" 学号:",i+1);
cin>>student[i].no;
printf(" 成绩:",i+1);
cin>>student[i].price;
printf("\n");
}
system("cls");
printf("学生信息录入完毕!\n\n");
}
void Inquire(){
system("cls");
int n,flag=0;
printf("\t\t1.姓名\n");
printf("\t\t2.学号\n");
printf("\t\t3.位置\n\n");
printf("请选择查询方式:");
scanf("%d",&n);
if(n==1){
string st;
system("cls");
printf("请输入学生姓名:");
cin>>st;
system("cls");
for(int i=0;i<100;i++){
if(st==student[i].name){
flag=1;
cout<<endl<<st<<"的相关信息如下:\n";
cout<<"学号:"<<student[i].no<<endl;
cout<<"成绩:"<<student[i].price<<endl<<endl;
break;
}
}
if(flag==0)
cout<<"没有找到该学生信息!"<<endl;
}
else if(n==2){
string st;
printf("请输入学生学号:");
cin>>st;
system("cls");
for(int i=0;i<100;i++){
if(st==student[i].no){
flag=1;
cout<<endl<<"学号为"<<st<<"学生的相关信息如下:\n";
cout<<"名字:"<<student[i].name<<endl;
cout<<"成绩:"<<student[i].price<<endl<<endl;
break;
}
}
if(flag==0)
cout<<"没有找到该学生信息!"<<endl;
}
else if(n==3){
system("cls");
int i;
cout<<"请输入学生的位置:";
cin>>i;
if(i<=num){
printf("已找到该位置学生信息如下:\n\n");
cout<<"\t\t\t名字:"<<student[i-1].name<<endl;
cout<<"\t\t\t学号"<<student[i-1].no<<endl;
cout<<"\t\t\t成绩:"<<student[i-1].price<<endl<<endl;
}
else
cout<<"没有找到该学生信息!"<<endl;
}
else printf("成功退出!\n");
}
void Insert(){
int c;
system("cls") ;
printf("\n请输入插入位置:");
cin>>c;
for(int i=num;i>=c;i--) {
student[i].name = student[i-1].name ;
student[i].no = student[i-1].no ;
student[i].price = student[i-1].price ;
}
printf("姓名:");
cin>>student[c-1].name ;
printf("学号");
cin>>student[c-1].no ;
printf("成绩:");
cin>>student[c-1].price ;
system("cls");
printf("插入成功!\n\n");
num++;
}
void Delete(){
system("cls");
int a;
printf("请输入删除学生的位置:");
cin>>a;
for(int i=a-1;i<num-1;i++){
student[i].name = student[i+1].name ;
student[i].no = student[i+1].no ;
student[i].price = student[i+1].price ;
}
num--;
}
void Num_of_peo(){
system("cls");
cout<<endl<<"学生总人数为:"<<num<<endl<<endl;
}
void Show_all(){
system("cls");
if(num>=0) {
printf("共有%d位学生\n\n",num);
for(int i=0;i<num;i++){
cout<<"姓名:"<<student[i].name<<endl ;
cout<<"学号:"<<student[i].no<<endl ;
cout<<"成绩:"<<student[i].price <<endl<<endl;
}
printf("全部学生信息显示完毕!\n\n");
}
else printf("请先录入学生信息!\n\n");
}
链表
#include<iostream>
#include<cstdio>
#include<string>
#include<windows.h>
using namespace std;
void Menu(); //显示用户界面
typedef struct Student{
string no;
string name;
int score;
struct Student* next; //指针域
}Student;
int n;
Student* New_pro() {
system("cls");
struct Student *head,*p1,*p2;
n=0;
p1=p2=new Student;
printf("已重新新建链表!\n\n请输入学生信息.\n");
cout<<"输入学生的学号为0时,停止录入.\n"<<endl;
cout<<"请输入学生学号:" ;
cin>>p1->no;
if(p1->no != "0"){
printf("请输入学生姓名:");
cin>>p1->name;
printf("请输入学生成绩:");
cin>>p1->score ;
cout<<endl;
}
while(p1->no != "0"){
n++;
if(n==1)
head=p1;
else
p2->next = p1;
p2 =p1;
p1 =new Student;
cout<<"请输入学生学号:" ;
cin>>p1->no;
if(p1->no != "0"){
printf("请输入学生姓名:");
cin>>p1->name;
printf("请输入学生成绩:");
cin>>p1->score ;
cout<<endl;
}
}
if(p1->no=="0") {
cout<<"您已退出录入模式!"<<endl;
system("pause");
system("cls");
}
p2->next =NULL;
return head;
}
Student* Delete(Student *head,string no){
Student *p,*q;
if(head==NULL){
printf("\nlist null!\n");
return head;
}
p=head;
while(no!=p->no&&(p->next !=NULL)){
q=p ;
p =p->next;
}
if(no==p->no){
printf("\n\n你删除的学生信息为:\n");
cout<<"\t\t学号:"<<p->no <<endl;
cout<<"\t\t姓名:"<<p->name <<endl;
cout<<"\t\t成绩:"<<p->score <<endl<<endl;
if(no==head->no ){
p=head;
head=head->next ;
delete p;
}
else{
q->next=p->next ;
delete p;
}
n=n-1;
cout<<"\n\n已删除学生信息!\n" <<endl;
system("pause");
system("cls");
}
else
cout<<"输入有误"<<endl;
return head;
}
Student* Insert(Student* head,Student *stud){
Student *p0,*p1,*p2;
p1=head;
p0=stud;
if(head==NULL){
head=p0;
p0->next =NULL;
}
else{
while((p0->no > p1->no)&&(p1->next != NULL)){ //寻找要插入的结点的前一个
p2=p1;
p1=p1->next ;
}
if(p0->no <= p1->no){
if(head==p1)
head=p0;
else
p2->next = p0;
p0->next=p1;
}
else{
p1->next =p0;
p0->next =NULL;
}
}
n++;
cout<<"\n\n已插入学生信息!\n" <<endl;
system("pause");
system("cls");
return head;
}
void Inquire(Student *head){
int flag=0;
Student *p;
int qw;
string Name,No;
printf("1.姓名.\n2.学号.\n请选择查找方式:");
cin>>qw;
if(head==NULL){
printf("\n\nlist null!\n");
}
p=head;
if(qw==1){
printf("\n\n请输入要查找的姓名:");cin>>Name;
while(p){
if(p->name ==Name){
cout<<"\n\n已查找到该学生!\n信息如下:\n"<<endl<<"学号:"<<p->no <<endl;
cout<<"姓名:"<<p->name <<endl;
cout<<"成绩:"<<p->score <<endl;
flag=1;
break;
}
p=p->next ;
}
}
else if(qw==2){
printf("请输入要查找的学号:");cin>>No;
while(p){
if(p->no ==No){
cout<<"\n\n已查找到该学生!\n信息如下:\n"<<endl<<"学号:"<<p->no <<endl;
cout<<"学号:"<<p->no <<endl;
cout<<"姓名:"<<p->name <<endl;
cout<<"成绩:"<<p->score <<endl;
flag=1;
break;
}
p=p->next ;
}
}
if(flag==0){
cout<<"没有扎到该学生信息!\n\n";
}
system("pause") ;
system("cls");
}
int Num_of_peo(Student *head){
Student* p=head;
int i=0;
while(p){
p->next ;
i++;
p=p->next ;
}
return i;
}
void printMark() {
string Mark = "欢迎进入学生成绩管理系统";
string Madeby = "作者:Pibuyi";
cout<<"\n\n"<<Mark<<","<<Madeby<<endl<<endl<<endl;
}
void Show_all(Student *head){
Student* p;
if(head==NULL){
printf("\nlist null!\n");
}
else{
p=head;
while(p){
cout<<"姓名:"<<p->name<<endl ;
cout<<"学号:"<<p->no<<endl ;
cout<<"成绩:"<<p->score<<endl<<endl ;
p=p->next ;
}
}
cout<<"全部学生信息已显示完毕!"<<endl;
system("pause") ;
system("cls");
}
void Menu(){
printf("\t\t******************************\n");
printf("\t\t* 1.新建链表 *\n");
printf("\t\t* 2.插入学生信息 *\n");
printf("\t\t* 3.删除学生信息 *\n");
printf("\t\t* 4.查询学生信息 *\n");
printf("\t\t* 5.统计学生人数 *\n");
printf("\t\t* 6.显示所有学生信息 *\n");
printf("\t\t* 7.退出 *\n");
printf("\t\t******************************\n\n");
}
int main(){
int choose,n;
string num;
Student *head,*p;
choose=-1;
printMark();
Sleep(1000);
while(1){
Menu();
cout<<"请输入数字选择:";
cin>>choose;
if(choose==1){
head=New_pro(); //新建顺序表
}else if(choose==2){
system("cls");
cout<<"请输入要学生的相关信息,输入0将结束\n\n" ;
p=new Student;
printf("学号:");
cin>>p->no ;
if(p->no !="0"){
printf("姓名:");cin>>p->name;
printf("成绩:");cin>>p->score;
head=Insert(head,p); //插入学生信息
}
}else if(choose==3){
system("cls");
p=new Student;
printf("\n\n请输入要删除学生学号:");
cin>>num ;
head=Delete(head,num); //删除学生信息
}else if(choose==4){
system("cls");
Inquire(head); //查询学生信息
}else if(choose==5){
cout<<"当前共有: "<<Num_of_peo(head)<<"个学生信息已录入系统!"<<endl; //统计学生人数
system("pause");
system("cls");
}else if(choose==6){
system("cls");
Show_all(head); //显示所有学生信息
}
else break;
}
return 0;
}
无文件操作,实力有限0.0