logo资料库

c++编写高校学籍管理系统+详细注释.doc

第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
资料共10页,剩余部分请下载后查看
#include #include #include #include //student 类 //学号 //姓名 //性别 //成绩 class student { protected: int number; char name[20]; char sex[6]; float score[3]; public: student *next; student(){ } ~student(){ } char* getname(){ return name; } int getnumber(){ return number;} float getscore(int i) { return score[i];} float getg(){ return (score[0]+score[1]+score[2]); } //取得学生总成绩 //next 是指针变量,指向类变量(建立链表) //构造函数 //析构函数 //返回 name 的地址 //获取学号 //取得学生指定科目成绩 //用来判断输入性别是不是男或女 不是为 1,是为 0 //录入信息 void input() { int a=1; cout<<"按提示输入:"<>number; cout<<"请输入姓名: "; cin>>name; do { cout<<"请输入性别: "; cin>>sex; if(strcmp(sex,"男")==0 || strcmp(sex,"女")==0) { //运用比较函数 strcmp cout<<"请输入信号分数: "; cin>>score[0]; cout<<"请输入英语分数: "; cin>>score[1]; cout<<"请输入 C++分数: ";
cin>>score[2]; a=0; else cout<<"您输入的性别不存在!请重新输入!"<>number>>name>>sex>>score[0]>>score[1]>>score[2]; 这里的>>操作符是重载过的,是写入的功能。 //将 name sex 等写入到文件中, //显示信息 is.get(); } void output() { cout<<"学生基本信息如下:"<
{ public: school(){ head=new student; head->next=NULL; key=0; } //析构函数,new:动态 内存分配和初始化 ~school(){ delete head; } 理与释放内存 //构造函数,delete:清 void input(); void mend(); void del(); int find(student **p,int num,char *pn="^"); void found(); void show(); void count(); void save(); void begin(); void clear(); char mainmenu(); //录入函数 //修改函数 //删除函数 //子查找函数 //查找函数 //显示函数 //统计函数 //保存函数 //初始化函数 //清空函数 //主菜单函数 //学生类节点 //判断是否写入文件 0 写入 1 没有写入 int getkey(){ return key;} void setkey(int k){ key=k; } private: student *head; int key; }; //录入函数 void school::input() { student *p,*p2=NULL; p=head; int n; while(p->next) p=p->next; while(n) { p2=new student; p2->input(); p->next=p2; p2->next=NULL; p=p->next; school::setkey(1); cout<<"按 1 继续,按 0 返回 : ";
cin>>n; } } //子查找函数 int school::find(student **p1,int num,char *pn) { student *p; p=head; while(p->next) { (*p1)=p; if( (p->next)->getnumber()==num||!strcmp( (p->next)->getname(),pn ) ) return 1; p=p->next; } return 0; } //查找函数 void school::found() { student *p; int num=-1,n=9; char name[20]="^"; do { cout<<"1:按学号查找,2:按姓名查找: "; cin>>n; }while(n<1||n>2); if(n==1) { cout<<"请输入学号: "; cin>>num; } if(n==2) { cout<<"请输入姓名: "; cin>>name; } if(!find(&p,num,name) ) {
cout<<"SORRY!找不到你要查找的内容!"<next)->output(); } //删除函数 void school::del() { student *p,*p2; int num; cout<<"请输入学号: "; cin>>num; if( !find(&p,num,"^") ) { cout<<"SORRY!找不到你要删除的内容!"<next)->output(); p2=p->next; p->next=p2->next; delete p2; school::setkey(1); } //显示函数 void school::show() { student *p; p=head; while(p->next) { (p->next)->output(); p=p->next; } } //修改函数 void school::mend() { student *p; int num=-1,n; char name[20]="^";
do { cout<<"1:按学号修改,2:按姓名修改: "; cin>>n; }while(n<1||n>2); if(n==1) { cout<<"请输入学号: "; cin>>num; } if(n==2) { cout<<"请输入姓名: "; cin>>name; } if( !find(&p,num,name) ) { cout<<"SORRY!找不到你要修改的内容!"<next)->output(); (p->next)->input(); school::setkey(1); } //保存函数 void school::save() { student *p; p=head; ofstream os("student.txt",ios::out); if (school::getkey()==1) { while(p->next) { (p->next)->output(os); p=p->next; } } cout<<"文件已保存! "<
//初始化函数 void school::begin() { student *p,*p2; p=head; clear(); long t; ifstream is("student.txt",ios::in); if(!is) { ofstream os("student.txt",ios::out); os.close(); return ; } int num=-1; while(1) { num=-1; t=is.tellg(); is>>num; is.seekg(t); if(num<0) { is.close(); return; } p2=new student; p2->input(is); p->next=p2; p2->next=NULL; p=p->next; } } //清空函数 void school::clear() { student *p,*p2; p=head->next; while( p ) { p2=p;
p=p->next; delete p2; } } //统计函数 void school::count() { student *p; p=head; int n=0; double g[3]={0,0,0}; float j[3]={0,0,0}; while(p->next) { //这里只要为真就一直循环 p=p->next; n++;//统计人数 for(int i=0;i<3;i++) { g[i]=g[i]+(p->getscore(i) ); (p->getscore(i) )>=60? i++ : 0 ; // i 统计大于 60 分的总科数 } } cout<<"信号总分:"<
分享到:
收藏