C++教师信息管理系统范本模板.docx
- 文档编号:9775755
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:23
- 大小:123.30KB
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〈iostream〉
#include #include #include #include〈cstring〉 #include〈string〉 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<〈name〈〈”\t"< ”男”: ”女")< } stringGetName() { returnname; } intGetAge() { returnage; } charGetSex() { returnsex; } }; classCTeacher: publicCPerson { private: stringtitle;//职称 stringteano;//职工号 vector〈string>course;//教授课程 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< ”男”: ")〈〈title<<"\t”<〈course[0]〈〈"\t"〈〈course[1]〈<"\t"〈 } 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〈string〉GetCourse() { 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.显示当前记录"<〈endl; cout<〈"2.添加记录”〈 cout〈〈"3.排序”〈〈endl; cout<<"4。 查找”〈 cout〈〈”5.创建新纪录"<〈endl; 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〈〈endl; } 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。 按教学效果综合评分排序”〈〈endl; 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() GetTeano())break; 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()〈p—〉data.GetScore())break; 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。 按课程查找"〈〈endl; cout〈<”0。 退出"〈〈endl; 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〈<”没有相关记录”<〈endl; cout< } voidSearchByCourse() { intn=0; cout〈〈”请输入查找课程: "; stringc; cin〉>c; for(p=head-〉next;p! =NULL;p=p->next) { vector GetCourse(); 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〈<”请输入: "〈〈endl; 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〈string〉course=p->data.GetCourse(); file〈 GetTeano()<〈"\t” < < GetAge()<<”\t” 〈〈p—>data。 GetSex()〈<”\t” < GetTitle()〈<"\t" <〈course[0]<<"\t”〈〈course[1]〈<”\t”< < GetScore()〈 } 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[]) { CListlist1; list1。 MainMenuControl(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 教师 信息管理 系统 范本 模板
![提示](https://static.bdocx.com/images/bang_tan.gif)