C++教师信息管理系统.docx
- 文档编号:30607078
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:23
- 大小:125.84KB
C++教师信息管理系统.docx
《C++教师信息管理系统.docx》由会员分享,可在线阅读,更多相关《C++教师信息管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
C++教师信息管理系统
一、课程设计问题描述
学院教学信息管理系统是高等学校教务管理的重要组成部分,其内容较多,为了简化计论,要求设计的管理系统能够完成以下功能:
(1)输入:
输入每一位教师记录,将其信息写入文件中;
(2)显示:
显示每位教师记录;
(3)排序:
按职工号或教学效果综合评分进行排序,并显示;
(4)查找:
完成按姓名或课程查找教师的相关记录,并显示;
(5)创建:
创建新的纪录,输入数位教师记录,显示在屏幕上并保存;
二、课程设计目的和要求:
经过一个学期的《C++面向对象实用教程》课程的学习,已经有了一定地程序设计基础,但是要学好C++程序设计,不仅要认真阅读课本知识和从事课堂学习,更重要的是要进行上机实践,通过上机实践才能增强和巩固知识。
三、系统设计(算法分析)
1、整体结构
整个程序定义四个类
(1)CPerson类:
包含数据成员name,age,sex,记录姓名,年龄,性别这些信息,并包含构造函数及其他成员函数(定义CPerson类以后若有需要,可再通过继承派生其他类);
(2)CTeacher:
共有继承CPerson类,包含数据成员title,teano,course,score,分别记录职称,职工号,3门课程和教学效果综合评分等信息,另有其他成员函数;
(3)CNode类:
节点类,包含2个数据成员,CTeacher类对象p和CNode类指针对象next,作为构建链表的单位;
(4)CList类:
链表类,声明为CNode类的友元类,数据成员有头结点head,尾节点tail,记录当前节点的p和当前节点前一节点的pre,链表相关的输入,显示,排序,查找,创建全部设为成员函数。
总体流程为先打开文件,读取文件中的记录来创建链表,然后对链表进行操作,最后保存至文件中
2、流程图
是
否
是
否
3、各函数的功能和实现
学院教学信息管理系统的相关功能由对应的函数来实现。
(1)输入教师信息并显示
voidAppend()
通过提示一步步输入信息,由程序构建新节点并加入链表
(2)显示所有记录
voidPrint()
(3)按职工号或教学效果综合评分排序并显示
intSortMenu()
voidSortMenuControl()
voidInsertByTeano(CNode*newp)
voidSortByTeano()
voidInsertByScore(CNode*newp)
voidSortByScore()
(4)按姓名或课程查找教师记录并显示
intSearchMenu()
voidSearchMenuControl()
voidSearchByName()
voidSearchByCourse()
四、程序源代码
#include"stdafx.h"
#include
#include
#include
#include
#include
#include
usingnamespacestd;
classCPerson
{
private:
stringname;
intage;
charsex;
public:
CPerson()
{}
CPerson(stringname,intage=0,charsex='M')
{
this->name=name;
this->age=age;
this->sex=sex;
}
voidSetAge(intage=0)
{
this->age=age;
}
voidSetNameAndSex(stringname,charsex)
{
this->name=name;
this->sex=sex;
}
voidShowInfo()
{
cout< "男": "女")< } stringGetName() { returnname; } intGetAge() { returnage; } charGetSex() { returnsex; } }; classCTeacher: publicCPerson { private: stringtitle;//职称 stringteano;//职工号 vector floatscore;//教学效果综合评分 public: CTeacher() {} CTeacher(stringname,intage=0,charsex='M'): CPerson(name,age,sex) {} voidSetData(stringtitle,stringteano) { this->title=title; this->teano=teano; } voidSetCourse(stringc1,stringc2,stringc3) { course.push_back(c1); course.push_back(c2); course.push_back(c3); } voidSetScore(floatscore) { this->score=score; } voidShowInfo() { cout< "男": ")< } voidoperator=(CTeacher&one) { CPerson(one.GetName(),one.GetAge(),one.GetSex()); this->title=one.title; this->teano=one.teano; this->course[0]=one.course[0]; this->course[1]=one.course[1]; this->course[2]=one.course[2]; this->score=one.score; } vector { returncourse; } stringGetTitle() { returntitle; } stringGetTeano() { returnteano; } floatGetScore() { returnscore; } }; classCNode { friendclassCList; private: CTeacherdata; CNode*next; }; classCList { private: CNode*head; CNode*tail; CNode*p; CNode*pre; intnum;//当前节点数 public: intMainMenu() { cout<<"1.显示当前记录"< cout<<"2.添加记录"< cout<<"3.排序"< cout<<"4.查找"< cout<<"5.创建新纪录"< cout<<"0.退出"< cout< intchoice; cin>>choice; returnchoice; } voidMainMenuControl() { ReadData(); while (1) { intchoice=MainMenu(); if(choice==0)break; switch(choice) { case1: Print();break; case2: Append();break; case3: SortMenuControl();break; case4: SearchMenuControl();break; case5: NewList();break; } } cout<<"是否保存? (Y/N): "; charc; cin>>c; if(c=='y')Save(); } voidReadData() { head=tail=newCNode; head->next=NULL; num=0; charfname[80]; cout<<"请输入要读取的文件: "; cin>>fname; ifstreamfile(fname); if(! file) { cout<<"出现未知错误导致无法打开! "< exit (1); } stringname,title,teano,course[3]; intage; charsex; floatscore; while(file.peek()! =EOF) { file>>teano>>name>>age>>sex>>title>>course[0]>>course[1]>>course[2]>>score; p=newCNode; p->data.SetNameAndSex(name,sex); p->data.SetAge(age); p->data.SetData(title,teano); p->data.SetCourse(course[0],course[1],course[2]); p->data.SetScore(score); tail->next=p; tail=p; num++; } tail->next=NULL; } voidPrint() { for(p=head->next;p! =NULL;p=p->next) p->data.ShowInfo(); cout< } voidAppend() { while (1) { p=newCNode; cout<<"请输入: "< cout<<"姓名: "; stringname; cin>>name; cout<<"年龄: "; intage; cin>>age; cout<<"性别(F/M): "; charsex; cin>>sex; p->data.SetNameAndSex(name,sex); p->data.SetAge(age); cout<<"职称: "; stringtitle; cin>>title; cout<<"职工号: "; stringteano; cin>>teano; p->data.SetData(title,teano); cout<<"教授课程: "; stringcourse[3]; cin>>course[0]>>course[1]>>course[2]; p->data.SetCourse(course[0],course[1],course[2]); cout<<"教学效果综合评分: "; floatscore; cin>>score; p->data.SetScore(score); p->next=tail->next; tail->next=p; tail=p; num++; charc; cout<<"是否继续添加? (Y/N): "; cin>>c; cin.get(); if(c! ='y')break; } tail->next=NULL; Print(); } intSortMenu() { cout<<"1.按职工号排序"< cout<<"2.按教学效果综合评分排序"< cout<<"0.退出"< cout< intchoice; cin>>choice; returnchoice; } voidSortMenuControl() { while (1) { intchoice=SortMenu(); if(choice==0)break; switch(choice) { case1: SortByTeano();break; case2: SortByScore();break; } Print(); } } voidInsertByTeano(CNode*newp) { for(pre=head,p=head->next;p! =NULL;pre=p,p=p->next) if(newp->data.GetTeano() newp->next=p; pre->next=newp; } voidSortByTeano() { p=head->next; head->next=NULL; CNode*nextp; while(p! =NULL) { nextp=p->next; InsertByTeano(p); p=nextp; } } voidInsertByScore(CNode*newp) { for(pre=head,p=head->next;p! =NULL;pre=p,p=p->next) if(newp->data.GetScore() newp->next=p; pre->next=newp; } voidSortByScore() { p=head->next; head->next=NULL; CNode*nextp; while(p! =NULL) { nextp=p->next; InsertByScore(p); p=nextp; } } intSearchMenu() { cout<<"1.按姓名查找"< cout<<"2.按课程查找"< cout<<"0.退出"< cout< intchoice; cin>>choice; returnchoice; } voidSearchMenuControl() { while (1) { intchoice=SearchMenu(); if(choice==0)break; switch(choice) { case1: SearchByName();break; case2: SearchByCourse();break; } } } voidSearchByName() { intn=0; cout<<"请输入姓名: "; stringname; cin>>name; for(p=head->next;p! =NULL;p=p->next) if(p->data.GetName()==name) { p->data.ShowInfo(); n++; } if(n==0)cout<<"没有相关记录"< cout< } voidSearchByCourse() { intn=0; cout<<"请输入查找课程: "; stringc; cin>>c; for(p=head->next;p! =NULL;p=p->next) { vector for(inti=0;i<3;i++) if(c==course[i]) { p->data.ShowInfo(); n++; break; } } if(n==0)cout<<"没有相关记录"< cout< } voidNewList() { Destory(); head=tail=newCNode; head->next=NULL; while (1) { p=newCNode; cout<<"请输入: "< cout<<"姓名: "; stringname; cin>>name; cout<<"年龄: "; intage; cin>>age; cout<<"性别(F/M): "; charsex; cin>>sex; p->data.SetNameAndSex(name,sex); p->data.SetAge(age); cout<<"职称: "; stringtitle; cin>>title; cout<<"职工号: "; stringteano; cin>>teano; p->data.SetData(title,teano); cout<<"教授课程: "; stringcourse[3]; cin>>course[0]>>course[1]>>course[2]; p->data.SetCourse(course[0],course[1],course[2]); cout<<"教学效果综合评分: "; floatscore; cin>>score; p->data.SetScore(score); tail->next=p; tail=p; num++; cout<<"是否继续输入? (Y/N): "; charc; cin>>c; cin.get(); if(c! ='y')break; } tail->next=NULL; } voidSave() { charfname[80]; cout<<"保存到: "; cin>>fname; ofstreamfile(fname); if(! file) { cout<<"出现未知错误导致无法打开! "< exit (1); } for(p=head->next;p! =NULL;p=p->next) { vector file< < < < < < < } file.close(); } voidDestory() { for(p=head->next;p! =NULL;p=head->next) { head->next=p->next; deletep; } deletehead; head=NULL; tail=NULL; pre=NULL; num=0; } ~CList() { for(p=head->next;p! =NULL;p=head->next) { head->next=p->next; deletep; } deletehead; head=NULL; tail=NULL; pre=NULL; } }; intmain(intargc,char*argv[]) { CListli
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 教师 信息管理 系统