|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
SeqList.h- #include<iostream.h>
- template<class T>
- class SeqList
- {
- private:
- T* element;
- int size;
- int len;
- public:
- SeqList(int size=64);
- SeqList(T value[],int n);
- ~SeqList();
- int length();
- bool isEmpty();
- bool set(int i,T x);
- T get(int i);
- friend ostream& operator<<(ostream& out,SeqList<T>& list);
- void insert(int i,T x);
- void insert(T x);
- bool remove(int i,T& old);
- void clear();
- };
- template<class T>
- SeqList<T>::SeqList(int size)
- {
- this->size=size<64?64:size;
- this->element=new T[this->size];
- this->len=0;
- }
- template<class T>
- SeqList<T>::SeqList(T value[],int n)
- {
- if(n>0)
- {
- this->element=new T[2*n];
- this->size=2*n;
- for(int i=0;i<n;i++)
- this->element[i]=value[i];
- this->len=n;
- }
- }
- template<class T>
- SeqList<T>::~SeqList()
- {
- delete []this->element;
- }
- template<class T>
- bool SeqList<T>::isEmpty()
- {
- return len==0;
- }
- template<class T>
- int SeqList<T>::length()
- {
- return len;
- }
- template<class T>
- T SeqList<T>::get(int i)
- {
- if(i>=0&&i<len)
- return element[i];
- throw "参数无效";
- }
- template <class T>
- bool SeqList<T>::set(int i,T x)
- {
- if(i>=0&&i<len)
- {
- element[i]=x;
- return true;
- }
- return false;
- }
- template <class T>
- ostream& operator<<(ostream& out,SeqList<T>& list)
- {
- out<<"(";
- if(list.len>0)
- {
- out<<list.element[0];
- for(int i=1;i<list.len;i++)
- out<<","<<list.element[i];
- }
- out<<")\n";
- return out;
- }
- template <class T>
- void SeqList<T>::insert(int i,T x)
- {
- if(len==size)
- {
- T *temp=element;
- element=new T[size*2];
- for(int i=0;i<size;i++)
- element[i]=temp[i];
- size*=2;
- }
- if(i<0) i=0;
- if(i>len) i=len;
- for(int j=len-1;j>=i;j--)
- element[j+1]=element[j];
- element[i]=x;
- len++;
- }
- template <class T>
- void SeqList<T>::insert(T x)
- {
- insert(len,x);
- }
- template <class T>
- bool SeqList<T>::remove(int i,T& old)
- {
- if(len>0&&i>=0&&i<len)
- {
- old=element[i];
- for(int j=i;j<len;j++)
- element[j]=element[j+1];
- len--;
- return true;
- }
- return false;
- }
- template<class T>
- void SeqList<T>::clear()
- {
- len=0;
- }
复制代码 Student.h
- struct Student
- {
- int number;
- char name[20];
- double score;
-
- friend ostream& operator<<(ostream& out,Student &stu);
- };
- ostream& operator<<(ostream& out,Student& stu)
- {
- out << "(" << stu.number << "," << stu.name << "," <<stu.score <<")";
- return out;
- }
复制代码 Student.cpp- #include "SeqList.h"
- #include "Student.h"
- #include <string.h>
- double average(SeqList<Student> &stulist)
- {
- int n=stulist.length();
- if(n>0)
- {
- double sum=0.0;
- for(int i=0;i<n;i++)
- sum+=stulist.get(i).score;
- return sum/n;}
- return 0.0;
- }
- void printGrade(SeqList<Student> &stulist)
- {
- int n=stulist.length();
- if(n>0)
- {
- int grade[5]={0};
- for(int i=0;i<n;i++)
- {
- double x=stulist.get(i).score;
- if(x>=90&&x<=100)
- grade[0]++;
- if(x>=80&&x<90)
- grade[1]++;
- if(x>=70&&x<80)
- grade[2]++;
- if(x>=60&&x<70)
- grade[3]++;
- else if(x>=0&&x<60)
- grade[4]++;
- }
- cout<<"优秀"<<grade[0]<<",良好"<<grade[1]<<",中等"<<grade[2]<<",及格"<<grade[3]<<",不及格"<<grade[4]<<endl;
- }
- }
- int main()
- {
- Student group[]={{200977400,"王明",100}};
- SeqList<Student> stulist(group,1);
- cout<<"1.输出学生成绩表"<<endl;
- cout<<"2.添加学生成绩信息"<<endl;
- cout<<"3.查找学生信息"<<endl;
- cout<<"4.删除学生信息"<<endl;
- cout<<"5.输出平均成绩"<<endl;
- int n=0;
- cin>>n;
- while(n!=0)
- {
- if(n==1)
- {
- cout<<"学生成绩("<<stulist.length()<<"人):";
- cout<<stulist;
- cout<<endl;
- int len1=stulist.length();
- cout<<len1<<endl;
- }
- if(n==2)
- {cout<<"输入学生个数:";
- int k;
- cin>>k;
- Student stu1;
- for(int j=0;j<k;j++)
- {cout<<"姓名:";
- cin>>stu1.name;
- stu1.number=stulist.length()+200977400;
- cout<<"学号:"<<stu1.number<<endl;
- cout<<"成绩:";
- cin>>stu1.score;
- stulist.insert(stu1);
- cout<<endl;
- }
- }
- if(n==3)
- {char c[20];
- char q[20]="q";
- cout<<"输入姓名(输入q退出):";
- cin>>c;
- while(strcmp(c,q)==1)
- {
- for(int i=0;i<stulist.length();i++)
- {
-
- if (strcmp(c,stulist.get(i).name)==0)
- {
- cout<<stulist.get(i).name<<endl;
- cout<<stulist.get(i).number<<endl;
- cout<<stulist.get(i).score<<endl;
- cout<<"输入姓名继续查找(输入q退出):";
- }
- }cout<<"查找失败重新输入:";
- cin>>c;
- }
- }
- if(n==4)
- {int c;
- Student stu;
- cout<<"输入删除学号:";
- cin>>c;
- for(int i=0;i<stulist.length();i++)
- {
-
- if (c==stulist.get(i).number)
- {
- stulist.remove(i,stu);
- }
- }
- cout<<"已删除"<<stu.name<<endl;
- }
- if(n==5)
- {
- printGrade(stulist);
- cout<<"平均成绩:"<<average(stulist)<<endl;
- }
- cout<<"其他操作(输入Q退出):";
- cin>>n;
- }
- return 0;
- }
复制代码 为什么SeqList.h里不添加#include<iostream.h>就出错
查找的地方- while(strcmp(c,q)==1)
- {
- for(int i=0;i<stulist.length();i++)
- {
-
- if (strcmp(c,stulist.get(i).name)==0)
- {
- cout<<stulist.get(i).name<<endl;
- cout<<stulist.get(i).number<<endl;
- cout<<stulist.get(i).score<<endl;
- cout<<"输入姓名继续查找(输入q退出):";
- }
- }cout<<"查找失败重新输入:";
- cin>>c;
- }
复制代码 变成这样- while(strcmp(c,q)==1)
- {
- for(int i=0;i<stulist.length();i++)
- {
-
- if (strcmp(c,stulist.get(i).name)==0)
- {
- cout<<stulist.get(i).name<<endl;
- cout<<stulist.get(i).number<<endl;
- cout<<stulist.get(i).score<<endl;
- cout<<"输入姓名继续查找(输入q退出):";
- else
- cout<<"查找失败重新输入:";
- }
- }
- cin>>c;
- }
复制代码 老是循环的时候出错 |
|