教师评学管理系统.docx
《教师评学管理系统.docx》由会员分享,可在线阅读,更多相关《教师评学管理系统.docx(29页珍藏版)》请在冰豆网上搜索。
教师评学管理系统
教师评学管理系统:
(上传时间:
2012/7/17)
注:
本题目源码仅供参考,直接套用者后果自负。
涉及知识:
运算符重载、链表、友元、输入输出流等。
####GUIDIAN####
要求:
该系统主要处理教师评学信息。
班级信息主要包括:
班级编号、班级名称、所在院系、评学成绩等内容。
教师信息主要包括:
编号、姓名、电话等内容。
完成以下的操作:
班级信息、教师信息、评学信息的录入、修改、删除和查询。
提示:
建立学校类、教师类、班级类、评学类
学校、教师、班级、评学信息的初始化
学校、教师、班级、评学信息的添加、修改、删除、查找
学校、教师、班级、评学信息的输出
对评学信息按评学成绩排序
使用方法:
按照注释分别加入到各个头文件中。
附录:
源程序
//ChainChart.h
#ifndefCHAINCHART_H
#defineCHAINCHART_H
#include"School.h"//链表类
classNode
{
public:
Matem;
Teachert;
Schools;
Evaluatee;
Node*next;
};
classList
{
private:
charSchool[32];
charName[32];
charTel[32];
intNumber;
intMark;
public:
Node*head;
List();
boolTof();//判断d
voidPaixu();//排序d
voidDel();//删除d
voidAdd();//增加d
voidFind();//查询d
voidFix();//修改d
voidInsert();//插入d
voidPrint();//打印d
intLength();//长度判断d
voidSave();//保存d
voidLoad();//载入d
};
#endif
//school.h
#ifndefSCHOOL_H
#defineSCHOOL_H//学校类
#include
classMate
{
private:
charDepartment[32];
doubleMark;
public:
charName[32];
intNumber;
voidSet();
voidShow();
voidSet(float);
friendostream&operator<<(ostream&stream,Mate&m)
{
cout<returnstream;
}
};
classTeacher
{
private:
charTel[32];
public:
intNumber;
charName[32];
voidShow();
voidSet(char*,char*,int);
friendostream&operator<<(ostream&stream,Teacher&t)
{
cout<returnstream;
}
};
classSchool
{
charName[32];
public:
voidSet(char*);
voidShow();
friendostream&operator<<(ostream&stream,School&s)
{
cout<returnstream;
}
};
classEvaluate
{
public:
voidSet();
voidShow();
doubleMark;
doubleRecord();
friendostream&operator<<(ostream&stream,Evaluate&e)
{
cout<returnstream;
}
};
#endif
//Chainchart.cpp
#include"ChainChart.h"
#include"School.h"
#include
#include
#include
List:
:
List()
{
head=newNode;
head->next=NULL;
};
boolList:
:
Tof()//判断是否继续输入
{
chartof;
cout<<"*************继续输入信息?
yes:
yno:
n*************"<cin>>tof;
if(tof=='n')
{returntrue;}
elseif(tof=='y')
{returnfalse;}
else{returnTof();}
};
intList:
:
Length()//求链表的长度
{
intsum=0;
Node*cur;
cur=head->next;
while(cur!
=NULL)
{cur=cur->next;sum++;}
returnsum;
};
voidList:
:
Add()//加入新链表
{
Node*pre;
Node*nw=newNode;
head->next=nw;
nw->next=newNode;
chartof;
cout<<"---------下面开始录入:
-------"<cout<cout<<"输入您(老师)的学校:
"<cin>>School;
cout<<"输入您的编号:
"<cin>>Number;
cout<<"输入您的电话:
"<cin>>Tel;
cout<<"输入您的名字:
"<cin>>Name;
nw->s.Set(School);//录入学校名字
nw->t.Set(Name,Tel,Number);//录入老师信息
cout<<"---------------------------------您是"<nw->m.Set();//录入班级的信息
cout<<"是否直接录入这个班级的成绩y/n"<cin>>tof;
if(tof=='y')
{
nw->e.Set();//录入评学成绩
}
elseif(tof=='n')
{
nw->e.Mark=nw->e.Record();
}
pre=nw;
nw=nw->next;
if(Tof())
{
pre->next=NULL;
nw=NULL;
cout<<"##########评学信息录入完毕,下面进行下一步操作!
##########"<cout<return;
};
while(true)
{
nw->s.Set(School);//录入学校名字
nw->t.Set(Name,Tel,Number);//录入老师信息
cout<<"--------------------------------您是"<nw->m.Set();//录入班级的信息
cout<<"是否直接录入这个班级的成绩y/n"<cin>>tof;
if(tof=='y')
{
nw->e.Set();//录入评学成绩
}
elseif(tof=='n')
{
nw->e.Mark=nw->e.Record();
}
nw->next=newNode;
pre=nw;
nw=nw->next;
if(Tof())
{
pre->next=NULL;
nw=NULL;
cout<cout<<"##########评学信息录入完毕,下面进行下一步操作!
##########"<cout<return;
}
}
pre->next=NULL;
deletenw;
cout<cout<<"##########评学信息录入完毕,下面进行下一步操作!
##########"<cout<};
voidList:
:
Paixu()//链表排序
{
Node*cur,*pre,*tem,*tem2;
if(head->next->next==NULL)
{return;}//把if语句放进去就不执行,i很小
for(inti=0;i{
cur=head->next;
tem=head;
pre=cur;
cur=cur->next;
for(intj=0;j{
if(pre->e.Mark>cur->e.Mark)
{
pre->next=cur->next;
cur->next=pre;
tem->next=cur;
tem2=cur;
cur=pre;
pre=tem2;
}
if(j==Length()-2)//防止排序越界
{break;}
pre=pre->next;
cur=cur->next;
tem=tem->next;
}
}
cout<<"---------------------------排序成功--------------------------------"<cur->next=NULL;
};
voidList:
:
Print()//链表打印
{
Node*cur;
cur=head->next;
inti=1;
if(head->next==NULL)
{cout<<"表中还没有人,怎么打印"<cout<cout<<"-----------------------------"<<"下面开始打印各个信息"<<"--------------------------------"<cout<cout<<"序号"<<""<<"学校"<<""<<"老师编号"<<""<<"名字"<<""<<"电话"<<""<<"班级编号"<<""<<"名称"<<""<<"学院"<<""<<"成绩"<if(cur->next==NULL)
{
cout<s<t<m<e<cout<cout<<"------------------------"<<"打印完毕,请继续下一步操作"<<"------------------------------"<return;
}
while(cur->next!
=NULL)
{
cout<s<t<m<e<cur=cur->next;
i++;
}
cout<s<t<m<e<cout<<"------------------------"<<"打印完毕,请继续下一步操作"<<"------------------------------"<};
//chainchart2.cpp
#include"ChainChart.h"
#include"School.h"
#include
#include
#include
voidList:
:
Insert()
{
Node*cur,*nw;
cur=head;
if(cur->next==NULL)
{cout<<"表中没有人,请先加入!
"<while(cur->next!
=NULL)
{
cur=cur->next;
}
nw=newNode;
cur->next=nw;
cout<<"输入您的学校:
"<cin>>School;
cout<<"输入老师的编号:
"<cin>>Number;
cout<<"输入老师的电话:
"<cin>>Tel;
cout<<"输入老师的名字:
"<cin>>Name;
nw->s.Set(School);//录入学校名字
nw->t.Set(Name,Tel,Number);//录入老师信息
nw->m.Set();//录入班级的信息
nw->e.Set();//录入评学成绩
nw->next=NULL;
}
voidList:
:
Del()//删除函数
{
intNumber;
Node*cur,*pre;
cout<<"输入要删除班级的编号"<cin>>Number;
intj=0;
if(head==NULL)
{
cout<<"表是空的,不能删除"<return;
}
cur=pre=head;
while(j{
pre=cur;
cur=cur->next;
if(cur->m.Number==Number)
{
if(head==cur)
{head=head->next;}//如果是头指针指向的节点,则还要重新添加引导
else{pre->next=cur->next;}
cout<<"这个班级的信息已经删除!
"<return;
}
j++;
}
cout<<"找不到这个班的编号,请重新输入!
"<Del();
};
voidList:
:
Find()//查找函数
{
Node*cur;
cur=head->next;
cout<<"输入要查找的班级编号"<cin>>Number;
intj=0;
if(head==NULL)
{
cout<<"表是空的,不能查找"<return;
}
cur=head;
while(j{
cur=cur->next;
if(cur->m.Number==Number)
{
cout<<"已经找到,下面输出信息"<cout<<"学校"<<""<<"老师编号"<<""<<"名字"<<""<<"电话"<<""<<"班级编号"<<""<<"名称"<<""<<"学院"<<""<<"成绩"<cout<s<t<m<e<return;
}
j++;
}
cout<<"%%%%%%找来找去,找不到这班%%%%%%%"<return;
};
voidList:
:
Fix()
{
inti=0;
charchoose;
charNam[32];
intNum;
intNumber;
charName[32];
charTel[32];
charSchool[32];
Node*cur;
cur=head->next;
while
(1)
{
cout<<"请输入修改的目标,修改班级信息:
1修改老师信息:
2"<cin>>choose;
i=0;
cur=head->next;
if(choose=='1')
{
i=0;
cout<<"请输入班级的编号:
"<cin>>Num;
cout<<"请输入班级的名称:
"<cin>>Nam;
cur=head->next;
while(i{
if(cur->m.Number==Num&&strcmp(Nam,cur->m.Name)==0)
{
cout<<"下面录入这个班级要修改的信息:
"<cur->m.Set();
cout<<"班级信息修改成功!
"<i=0;
return;
}
i++;
cur=cur->next;
if(i==Length()-1)
{cout<<"查不到这个班,请重新输入"<}
}
elseif(choose=='2')
{
i=0;
cur=head->next;
cout<<"请输入老师的编号:
"<cin>>Num;
cout<<"请输入老师的姓名:
"<cin>>Nam;
cout<<"----------下面录入老师要修改的信息:
-----------"<cout<<"输入您的学校:
"<cin>>School;
cout<<"输入老师的编号:
"<cin>>Number;
cout<<"输入老师的电话:
"<cin>>Tel;
cout<<"输入老师的名字:
"<cin>>Name;
while(i{
if(cur->t.Number==Num&&strcmp(Nam,cur->t.Name)==0)
{
cur->s.Set(School);//录入学校名字
cur->t.Set(Name,Tel,Number);//录入老师信息
if(i==Length()-1)
{cout<<"********老师信息修改成功!
********"<}
i++;
cur=cur->next;
if(i==Length())
{cout<<"%%%%%%%查不到这个老师,请重新输入%%%%%%"<}
}
else
{cout<<"%%%%%%%%信息输入不正确,请重新输入!
%%%%%"<}
};
voidList:
:
Save()
{
Node*cur;
ofstreamout("data.txt",ios:
:
binary);
cur=head->next;
for(inti=0;i{
cout<s<t<m<e<out.write((char*)cur,sizeof(*cur));
cur=cur->next;
}
cout<<"写入文件成功!
"<out.close();
};
voidList:
:
Load()
{
Node*cur,*pre,*nw;
head=newNode;
nw=newNode;
head->next=nw;
pre=nw;
cur=nw;
ifstreamin("data.txt",ios:
:
binary);
while(in)
{
in.read((char*)cur,sizeof(*cur));
if(!
in)
{break;}
nw=newNode;
cur->next=nw;
pre=cur;
cur=cur->next;
}
pre->next=NULL;
cout<<"读出文件成功!
"<in.close();
};
//School.cpp
#include"School.h"
#include
#include
#include
#include
voidSchool:
:
Set(char*p)
{
strcpy(Name,p);
};
voidSchool:
:
Show()
{
cout<<"学校:
"<};
voidEvaluate:
:
Set()
{
cout<<"请输入这个班级的成绩"<cin>>Mark;
cout<<"这位班级的信息输入完毕!
"<cout<<"-----------------------------------"<};
voidEvaluate:
:
Show()
{
cout<<"成绩:
"<};
voidTeacher:
:
Set(char*p,char*q,intn)
{
strcpy(Tel,q);
strcpy(Name,p);
Number=n;
};
voidT