《2022年C++教师信息管理系统.pdf》由会员分享,可在线阅读,更多相关《2022年C++教师信息管理系统.pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C+教师信息管理系统一、 课程设计问题描述学院教学信息管理系统就是高等学校教务管理的重要组成部分,其内容较多 ,为了简化计论 ,要求设计的管理系统能够完成以下功能: (1)输入: 输入每一位教师记录 , 将其信息写入文件中 ; (2)显示: 显示每位教师记录 ; (3)排序: 按职工号或教学效果综合评分进行排序, 并显示 ; (4)查找: 完成按姓名或课程查找教师的相关记录, 并显示 ; (5)创建:创建新的纪录 ,输入数位教师记录 ,显示在屏幕上并保存 ; 二、 课程设计目的与要求 : 经过一个学期的 C+面向对象实用教程课程的学习,已经有了一定地程序设计基础 ,但就是要学好 C+程序设计
2、,不仅要认真阅读课本知识与从事课堂学习,更重要的就是要进行上机实践,通过上机实践才能增强与巩固知识。三、 系统设计 (算法分析 ) 1、 整体结构整个程序定义四个类(1) CPerson类:包含数据成员 name,age,sex, 记录姓名 ,年龄,性别这些信息 ,并包含构造函数及其她成员函数(定义 CPerson类以后若有需要 ,可再通过继承派生其她类 ); (2) CTeacher: 共有继承 CPerson类,包含数据成员 title,teano,course,score, 分别记录职称 ,职工号 ,3 门课程与教学效果综合评分等信息,另有其她成员函数 ; (3) CNode 类:节点类
3、 ,包含 2 个数据成员 ,CTeacher类对象 p 与 CNode 类指针对象 next,作为构建链表的单位 ; (4) CList 类:链表类 ,声明为 CNode类的友元类 ,数据成员有头结点 head,尾节点tail,记录当前节点的p 与当前节点前一节点的pre,链表相关的输入 ,显示,排序,查找,创建全部设为成员函数。总体流程为先打开文件,读取文件中的记录来创建链表,然后对链表进行操作,最后保存至文件中2、流程图就是否开始打开文件读取记录输入 choice choice=0?精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - -
4、- - - - - - -第 1 页,共 14 页 - - - - - - - - - - C+教师信息管理系统就是否3、各函数的功能与实现学院教学信息管理系统的相关功能由对应的函数来实现。(1) 输入教师信息并显示void Append() 通过提示一步步输入信息,由程序构建新节点并加入链表(2) 显示所有记录void Print() (3)按职工号或教学效果综合评分排序并显示int SortMenu() void SortMenuControl() void InsertByTeano(CNode *newp) void SortByTeano() void InsertByScore(C
5、Node *newp) void SortByScore() (4)按姓名或课程查找教师记录并显示int SearchMenu() void SearchMenuControl() void SearchByName() void SearchByCourse() 四、程序源代码#include stdafx、h #include #include #include #include #include #include using namespace std; 显示当前记录添加记录创建新纪录排序查找保存保存结束精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载
6、 名师归纳 - - - - - - - - - -第 2 页,共 14 页 - - - - - - - - - - C+教师信息管理系统class CPerson private: string name; int age; char sex; public: CPerson() CPerson(string name,int age=0,char sex=M) this-name=name; this-age=age; this-sex=sex; void SetAge(int age=0) this-age=age; void SetNameAndSex(string name,char
7、sex) this-name=name; this-sex=sex; void ShowInfo() coutnametaget(sex=M? 男:女)endl; string GetName() return name; int GetAge() return age; char GetSex() return sex; ; class CTeacher:public CPerson private: 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 14 页 - - - - - - - -
8、- - C+教师信息管理系统string title;/职称string teano;/职工号vector course;/ 教授课程float score;/教学效果综合评分public: CTeacher() CTeacher(string name,int age=0,char sex=M):CPerson(name,age,sex) void SetData(string title,string teano) this-title=title; this-teano=teano; void SetCourse(string c1,string c2,string c3) course
9、、push_back(c1); course、push_back(c2); course、push_back(c3); void SetScore(float score) this-score=score; void ShowInfo() coutteanotGetName()tGetAge()t(GetSex()=M?男:)titletcourse0tcourse1tcourse2tscoretitle=one、title; this-teano=one 、teano; this-course0=one、course0; this-course1=one、course1; this-cou
10、rse2=one、course2; this-score=one 、score; vector GetCourse() return course; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 14 页 - - - - - - - - - - C+教师信息管理系统 string GetTitle() return title; string GetTeano() return teano; float GetScore() return score; ; class CNode frien
11、d class CList; private: CTeacher data; CNode *next; ; class CList private: CNode *head; CNode *tail; CNode *p; CNode *pre; int num;/当前节点数public: int MainMenu() cout1、显示当前记录 endl; cout2、添加记录 endl; cout3、排序 endl; cout4、查找 endl; cout5、创建新纪录 endl; cout0、退出 endl; coutchoice; return choice; void MainMenuC
12、ontrol() 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 14 页 - - - - - - - - - - C+教师信息管理系统 ReadData(); while ( 1 ) int choice=MainMenu(); if ( choice=0 ) break; switch ( choice ) case 1:Print(); break; case 2:Append(); break; case 3:SortMenuControl(); break; case 4:Searc
13、hMenuControl(); break; case 5:NewList(); break; coutc; if ( c=y ) Save(); void ReadData() head=tail=new CNode; head-next=NULL; num=0; char fname80; coutfname; ifstream ); if ( !file ) cout出现未知错误导致无法打开!teanonameagesextitlecourse0course1course2score; p=new CNode; 精品资料 - - - 欢迎下载 - - - - - - - - - - -
14、欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 14 页 - - - - - - - - - - C+教师信息管理系统p-data 、SetNameAndSex(name,sex); p-data 、SetAge(age); p-data 、SetData(title,teano); p-data 、SetCourse(course0,course1,course2); p-data 、SetScore(score); tail-next=p; tail=p; num+; tail-next=NULL; void Print() for ( p=head-next;
15、p!=NULL; p=p-next) p-data 、ShowInfo(); coutendl; void Append() while ( 1 ) p=new CNode; cout请输入 :endl; coutname; coutage; coutsex; p-data 、SetNameAndSex(name,sex); p-data 、SetAge(age); couttitle; coutteano; p-data 、SetData(title,teano); coutcourse0course1course2; 精品资料 - - - 欢迎下载 - - - - - - - - - -
16、- 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 14 页 - - - - - - - - - - C+教师信息管理系统p-data 、SetCourse(course0,course1,course2); coutscore; p-data 、SetScore(score); p-next=tail-next; tail-next=p; tail=p; num+; char c; coutc; cin、get(); if ( c!=y ) break; tail-next=NULL; Print(); int SortMenu() cout1、按职工号排序 end
17、l; cout2、按教学效果综合评分排序endl; cout0、退出 endl; coutchoice; return choice; void SortMenuControl() while ( 1 ) int choice=SortMenu(); if ( choice=0 ) break; switch ( choice ) case 1:SortByTeano(); break; case 2:SortByScore(); break; Print(); void InsertByTeano(CNode *newp) 精品资料 - - - 欢迎下载 - - - - - - - - -
18、- - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 14 页 - - - - - - - - - - C+教师信息管理系统for ( pre=head,p=head-next; p!=NULL; pre=p,p=p-next) if ( newp-data、GetTeano() data 、GetTeano() ) break; newp-next=p; pre-next=newp; void SortByTeano() p=head-next; head-next=NULL; CNode *nextp; while ( p!=NULL ) nextp=p-nex
19、t; InsertByTeano(p); p=nextp; void InsertByScore(CNode *newp) for ( pre=head,p=head-next; p!=NULL; pre=p,p=p-next) if ( newp-data、GetScore() data 、GetScore() ) break; newp-next=p; pre-next=newp; void SortByScore() p=head-next; head-next=NULL; CNode *nextp; while ( p!=NULL ) nextp=p-next; InsertBySco
20、re(p); p=nextp; int SearchMenu() cout1、按姓名查找 endl; cout2、按课程查找 endl; cout0、退出 endl; coutchoice; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 14 页 - - - - - - - - - - C+教师信息管理系统return choice; void SearchMenuControl() while ( 1 ) int choice=SearchMenu(); if ( choice=0 ) b
21、reak; switch ( choice ) case 1:SearchByName(); break; case 2:SearchByCourse(); break; void SearchByName() int n=0; coutname; for ( p=head-next; p!=NULL; p=p-next) if ( p-data、GetName()=name ) p-data、ShowInfo(); n+; if ( n=0 ) cout没有相关记录 endl; coutendl; void SearchByCourse() int n=0; coutc; for ( p=h
22、ead-next; p!=NULL; p=p-next) vector course=p-data 、GetCourse(); for (int i=0; idata、ShowInfo(); n+; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 14 页 - - - - - - - - - - C+教师信息管理系统break; if ( n=0 ) cout没有相关记录 endl; coutnext=NULL; while ( 1 ) p=new CNode; cout请输入 :endl;
23、 coutname; coutage; coutsex; p-data 、SetNameAndSex(name,sex); p-data 、SetAge(age); couttitle; coutteano; p-data 、SetData(title,teano); coutcourse0course1course2; p-data 、SetCourse(course0,course1,course2); coutscore; p-data 、SetScore(score); tail-next=p; tail=p; num+; 精品资料 - - - 欢迎下载 - - - - - - - -
24、 - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 14 页 - - - - - - - - - - C+教师信息管理系统coutc; cin、get(); if ( c!=y ) break; tail-next=NULL; void Save() char fname80; coutfname; ofstream ); if ( !file ) cout出现未知错误导致无法打开!next; p!=NULL; p=p-next) vector course=p-data 、GetCourse(); filedata、GetTeano()t data、Ge
25、tName()t data、GetAge()t data、GetSex()t data、GetTitle()t course0tcourse1tcourse2t data、GetScore()next; p!=NULL; p=head-next) head-next=p-next; delete p; delete head; head=NULL; tail=NULL; pre=NULL; num=0; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 14 页 - - - - - - - -
26、 - - C+教师信息管理系统 CList() for ( p=head-next; p!=NULL; p=head-next) head-next=p-next; delete p; delete head; head=NULL; tail=NULL; pre=NULL; ; int main(int argc, char* argv) CList list1; list1、MainMenuControl(); CList list2; list2、MainMenuControl(); return 0; 五、缺陷1、每次都要读取文件中的记录,若就是只想创建新记录 ,则此部多余 ; 2、判断
27、文件末尾的语句 ()!=EOF,当文件末尾为图一所示就是可正常读取完,若如图二所示 ,则会多读一次 ; 图一图二3、没有控制输出格式 ,输出格式混乱 ,不美观 ; 4、 输入时没有错误输入检测 ,因此必须正确输入才能保证程序正常运行,如输入文精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 14 页 - - - - - - - - - - C+教师信息管理系统件名时必须完全正确 ,输入性别就是必须输入M/F。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 14 页,共 14 页 - - - - - - - - - -