学生信息管系统(顺序表和链表)

更新时间:2023-06-30 14:35:59 阅读: 评论:0

学⽣信息管系统(顺序表和链表)
//顺序表
//Seqlist.h
#ifndef SEQLIST_H
#define SEQLIST_H
#include<iostream>
#include<cstdio>
#include<iomanip>
using namespace std;
const int MAXSIZE=100;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
class Student{
public:
string name;//名字
string id;//学号
double score;//成绩
Student(string _name="NULL", string _id="NULL",double _score=0)
{
name=_name;
id=_id;
score=_score;
}
void Show()//输出所有信息
{
cout <<"|"<<id<<tw(16-(int)id.size())<<"|"<< name <<tw(16-(int)name.size())<<"|"<< score<<tw(15)<<tfill(' ')<<"\n";
}
void ShowOnly()//单输出
{
cout<<endl;
cout<<"姓名:"<<name<<'\n'<<"学号"<<id<<'\n'<<"成绩"<<score<<'\n';
}
};
class SeqList{
public:
Student *s;
int length;
// public:
SeqList(){}
int InitList();//初始化顺序表
int BuildList(int _length);//根据输⼊的表的⼤⼩构建顺序表表
void TraverList();//显⽰表
int FindId(string _name);// 根据姓名进⾏返回学⽣的学号和成绩
int GetElem(int i);//根据指定位置返回所有学⽣信息(姓名,学号,成绩)
int ListInrt(int i, string _name, string _id,double _score);//i位置插⼊学⽣信息
int ListDelete(int i);//删除指定位置学⽣信息
int ListLength();//获得表长
};
#endif
//Seqlist.cpp
#include"SeqList.h"
int SeqList::BuildList(int _length)
{
if(_length<0)return ERROR;
for(int i=0; i<_length; i++)
{
cout<<"请输⼊学⽣姓名: ";
cin>>s[i].name;
cin>>s[i].name;
cout<<"请输⼊学⽣学号: ";
cin>>s[i].id;
cout<<"请输⼊学⽣成绩: ";
cin>>s[i].score;
cout<<endl;
边塞诗句}
length=_length;
cout<<"建⽴完成!"<<endl;
return OK;
}
void SeqList::TraverList()
{
cout <<"|-----------------------------------------------\n";
cout <<"|id-------------|name-----------|score----------\n";
for(int i =0; i < length; i++){
s[i].Show();
}
cout <<"------------------------------------------------\n";
}
int SeqList::InitList()
{
s =new Student[MAXSIZE];
if(s==NULL)return ERROR;
length=0;
return OK;
}
int  SeqList::FindId(string _name)
{
for(int i=0; i<length; i++)
{
if(s[i].name==_name)
{
s[i].ShowOnly();
return OK;
}
}
return ERROR;
}
int  SeqList::GetElem(int i)
{
if(i>length || i<0)return ERROR;
s[i-1].ShowOnly();
return OK;
}
int  SeqList::ListInrt(int i, string _name, string _id,double _score ) {
if(i<=0|| i>length+1)return ERROR;
el
{
Student temp(_name, _id, _score);
for(int j=length-1; j>=i-1; j--)
永遇乐
{
s[j+1]=s[j];
青花瓷茶壶
}
s[i-1]=temp;
}
length++;
return OK;
}
int  SeqList::ListDelete(int i)
{
if(i<0|| i>length)return ERROR;
el
{
for(int j=i-1; j<length; j++)
for(int j=i-1; j<length; j++)
s[i-1]=s[i];
}
length--;
return OK;
}
int SeqList::ListLength()
{
return length;
}
//SeqlistMain.cpp
#include"SeqList.h"
SeqList L;
void Display();
void Test();
int main()
{
//  Student s[MAXSIZE];
L.InitList();
Display();
Test();
数字成语一到十return0;
}
void Display()
{
cout<<"|----------------------------------|"<<endl;
cout<<"1:构建⼀个指定长度的顺序表        |"<<endl;
cout<<"2:输出顺序表的所有信息            |"<<endl;
cout<<"3:根据姓名查找学⽣的学号和成绩:    |"<<endl;
cout<<"4:根据指定位置返回相应的学⽣信息  |"<<endl;
cout<<"5:将⼀个学⽣的信息插⼊到指定位置  |"<<endl;
cout<<"6:删除指定位置的学⽣信息          |"<<endl;
cout<<"7:统计表中学⽣的个数              |"<<endl;
cout<<"|----------------------------------|"<<endl;
}
void Test()//功能测试函数
{
L.InitList();
int Function;
int x;// 插⼊与删除的位置
string n;//name
string i;//id;
double s;//score阎维文的歌
int _length;
while(cin>>Function)
{
switch(Function)
{
ca1:
cout<<"请输⼊表长:";
cin>>_length;
if(!L.BuildList(_length)) cout<<"表长输⼊错误";
break;
ca2:
L.TraverList();
break;
ca3:
cout<<"请输⼊学⽣的姓名:";
cin>>n;
if(!L.FindId(n)) cout<<"没找到这个该名学⽣,是否输⼊错误";
break;
break;
ca4:
cout<<"请输⼊需要查找的学⽣的位置x:";
cin>>x;
if(!L.GetElem(x)) cout<<"输⼊的x超过了最⼤的学⽣数量或者x为负数";
break;
ca5:
cout<<"请输⼊插⼊的位置x:";
cin>>x;
cout<<endl;
cout<<"请输⼊学⽣的姓名:";
cin>>n;
cout<<"请输⼊学⽣的学号:";
cin>>i;
cout<<"请输⼊学⽣的成绩:";
cin>>s;
if(!L.ListInrt(x,n,i,s)) cout<<"输⼊的x超过了最⼤的学⽣数量,或者x是负数";
break;
ca6:
cout<<"请输⼊需要删除的学⽣的位置:";
cin>>x;
搞笑谜语
if(!L.ListDelete(x)) cout<<"输⼊的位置超过了最⼤学⽣数量,或者输⼊了负数";
break;
ca7:
cout<<"学⽣的总数为:";
cout<<L.ListLength()<<endl;
break;
default:break;
}
}
}
//链表
//LinkList.h
#ifndef LINKLIST_H
#define LINKLIST_H
#include<iomanip>
#include<iostream>
#include<cstdio>
#define ERROR 0;
#define OK 1;
const int MAXSIZE=1000;
using namespace std;
typedef struct Student{
string name;
string id;
double score;
}ElemType;
typedef struct LNode{
ElemType data;
LNode *next;
}LNode;
class LinkList{
private:
LNode *head;//
public:
LinkList();
virtual~LinkList();
void ClearList();
int InitList();//初始化链表
int BuildList(int _length);//根据长度构建链表
void TraverList();//显⽰表即遍历表
int FindId(ElemType e);// 根据姓名进⾏返回学⽣的学号和成绩
int GetElem(int i);//根据指定位置返回所有学⽣信息(姓名,学号,成绩)
int ListInrt(int i, ElemType &e);//i位置插⼊学⽣信息
int ListInrt(int i, ElemType &e);//i位置插⼊学⽣信息
int ListDelete(int i);//带头结点链表删除指定位置学⽣信息
int ListLength();//获得表长
};
#endif
//LinkList.cpp
#include"LinkList.h"
LinkList::LinkList(){
head=new LNode;
head->next=NULL;
}
LinkList::~LinkList(){//析构函数清空链表
LNode *p=head->next,*q;
while(p)
{
q=p->next;
delete p;
p=q;
}
delete head;
}
void LinkList::TraverList()
{
LNode *p=head->next;
cout <<"|-----------------------------------------------\n";
cout <<"|id-------------|name-----------|score----------\n";
while(p)
{
cout <<"|"<<p->data.id<<tw(16-(int)p->data.id.size())<<"|"<< p->data.name <<tw(16-(int)p->data.name.size())<<"|"<< p->data.score<<tw( 15)<<tfill(' ')<<"\n";
p=p->next;
}
cout <<"------------------------------------------------\n";
}
int LinkList::FindId(ElemType e)//根据姓名返回所有信息
{
LNode *p;
p=head->next;
while(p && p->data.name!=e.name)
{
p=p->next;
}
if(p==NULL)
脸部浮肿怎么快速消除{广播稿
return ERROR;
}
el
{
cout<<"学号:"<<p->data.id<<"姓名:"<<p->data.name<<"成绩:"<<p->data.score;
return OK;
}
}
int LinkList::GetElem(int i)
{
LNode *p;
p=head->next;
int j=1;
while(p && j<i)
{
p=p->next;
j++;
}
if(!p || j>i)
{

本文发布于:2023-06-30 14:35:59,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1070342.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:指定   位置   信息   返回   链表   删除   顺序   表长
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图