顺序表应用-学生学籍管理
来源:互联网 发布:linux java home 编辑:程序博客网 时间:2024/04/29 08:12
学生学籍主要有:
每个学生的学号(唯一),姓名,性别,出生日期,地址等数据项构成数据元素
要完成如下 功能:
1、插入
2、删除
3、修改
4、查询
5、输出
考虑到学生学籍表一般只会在开学毕业会有增加或者删除操作,而平时会进行频繁的查找或者小部分修改,所以采用顺序表比较好。为学籍表设计一个模板类,类中包含存储学生的基本信息的顺序表以及在上面的操作成员函数。为每个学生涉及的数据建立一个结构类型,并用此结构类型对学籍表模板类进行实例化:
const int MAX=200;struct stu{int id;char name[20];char sex;int date;char add[20];};template<typename T>void change(T &x){ int y; cout<<"enter 1,2 3 4 for name,sex,date,add"<<endl; cin>>y; switch(y){ case 1:{cout<<"enter the name ";char name[20];cin>>name;strcpy(x.name,name);break;}case 2:{cout<<"enter the sex ";char sex;cin>>sex;x.sex=sex;break;}case 3:{cout<<"enter the date ";int t;cin>>t;x.date=t;break;} case 4:{cout<<"enter the add ";char add[20];cin>>add;strcpy(x.add,add);break;} default:cout<<"error"<<endl;} }template<typename T> class seqlist{ private: T data[MAX]; int size; public: seqlist(){size=0;} seqlist(T a[],int n){ if(n>MAX)throw"n error"; for(int i=0;i<n;i++) data[i]=a[i]; size=n;} ~seqlist(){}; int getsize(){return size;} T get(int i){ if(i>size||i<1)throw"i error"; return data[i-1];} void prt(){ if(size<1)cout<<"empty"<<endl;else {for(int i=0;i<size;i++){cout<<setw(5)<<data[i].id<<" "<<setw(5)<<data[i].name<<" "<<setw(5)<<data[i].sex<<" "<<setw(5)<<data[i].date<<" "<<setw(5)<<data[i].add<<" ";cout<<endl;}cout<<endl;}} int loc(T x){ for(int i=0;i<size;i++) if(data[i]==x)return i+1; return -1;} void insert(int i,T x){ if(size>=MAX)throw"overflow"; if(i>size+1||i<1)throw"i error"; for(int j=size;j>=i;j--) data[j]=data[j-1]; data[i-1]=x; size++;} T del(int i){ if(size<1)throw"downflow"; if(i>size||i<1)throw"i error"; T x=data[i-1]; for(int j=i;j<size;j++) data[j-1]=data[j]; size--; return x;} void fun(int ids){ int f=1; for(int i=0;i<size;i++) if(data[i].id==ids){f=0;cout<<"you find:"<<endl; cout<<setw(5)<<data[i].id<<" "<<setw(5)<<data[i].name<<" "<<setw(5)<<data[i].sex<<" "<<setw(5)<<data[i].date<<" "<<setw(5)<<data[i].add<<" "; cout<<endl; change(data[i]);break;} if(f==0)cout<<"change done"<<endl; else cout<<"change failed"<<endl;} };
调用:
int main(){stu a[]={{100,"yan",'a',1992,"anhui"},{101,"wu",'a',1993,"jiangxi"},{102,"zhang",'b',1992,"shanghai"}}; seqlist<stu>l(a,3); l.prt(); stu b={0,"none",'a',1990,"beijing"}; l.insert(2,b); l.prt(); l.del(1); l.prt(); l.fun(102); l.prt();system("pause");return 0;}
结果:
0 0
- 顺序表应用-学生学籍管理
- 单向链表实现学生学籍管理
- 学生学籍管理系统
- 学生学籍管理系统
- 学生学籍管理系统
- 顺序表应用学生管理系统
- 学生学籍管理系统(jsp+javabeans)
- 软件工程实验(学生学籍管理系统)
- C#控制台 学生学籍管理系统
- 学生学籍管理系统数据流图
- C语言课程设计--学生学籍管理系统
- 学生学籍管理系统_需求分析
- 学生学籍管理系统_数据库设计
- 学生学籍管理系统_登陆界面设计
- 学生学籍管理系统_源码下载
- C语言模拟学生学籍管理系统
- 学生成绩学籍管理系统(链表)
- 学生学籍管理系统~~功能界面
- Qt error: Exception at 0x58083aea,: read access violation at: 0x0, flags=0x0 (first
- centos下安装transmission下载工具
- 未完成任务
- PHP实现网页跳转
- 1628 Pizza Delivery
- 顺序表应用-学生学籍管理
- 2015.5.17 学习继承概念
- 黑马程序员——IOS基础(函数)
- java影射射射...
- C语言提高之——从结构和指针看数据结构链表
- Low-Rank Matrix Recovery and Completion via Convex Optimization
- 微信支付
- 虚拟机下CentOS 6.5配置IP地址的三种方法
- 五种开源协议(GPL,LGPL,BSD,MIT,Apache)