版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计问题描述学院教学信息管理系统是高等学校教务管理的重要组成部分,其内容较多,为了简化计论,规定设计的管理系统可以完毕以下功能:(1)输入:输入每一位教师记录,将其信息写入文献中;(2)显示:显示每位教师记录;(3)排序:按职工号或教学效果综合评分进行排序,并显示;(4)查找:完毕按姓名或课程查找教师的相关记录,并显示;(5)创建:创建新的纪录,输入数位教师记录,显示在屏幕上并保存;课程设计目的和规定:通过一个学期的《C++面向对象实用教程》课程的学习,已有了一定地程序设计基础,但是要学好C++程序设计,不仅要认真阅读课本知识和从事课堂学习,更重要的是要进行上机实践,通过上机实践才干增强和巩固知识。三、系统设计(算法分析)1、整体结构 整个程序定义四个类CPerson类:包含数据成员name,age,sex,记录姓名,年龄,性别这些信息,并包含构造函数及其他成员函数(定义CPerson类以后若有需要,可再通过继承派生其他类);CTeacher:共有继承CPerson类,包含数据成员title,teano,course,score,分别记录职称,职工号,3门课程和教学效果综合评分等信息,另有其他成员函数;CNode类:节点类,包含2个数据成员,CTeacher类对象p和CNode类指针对象next,作为构建链表的单位;CList类:链表类,声明为CNode类的友元类,数据成员有头结点head,尾节点tail,记录当前节点的p和当前节点前一节点的pre,链表相关的输入,显示,排序,查找,创建所有设为成员函数。总体流程为先打开文献,读取文献中的记录来创建链表,然后对链表进行操作,最后保存至文献中2、流程图开始开始打开文献打开文献读取记录输入choice输入choicechoice==0?choice==0?是否查找排序创建新纪录查找排序创建新纪录添加记录显示当前记录添加记录显示当前记录保存保存是保存否保存结束结束3、各函数的功能和实现学院教学信息管理系统的相关功能由相应的函数来实现。输入教师信息并显示voidAppend()通过提醒一步步输入信息,由程序构建新节点并加入链表显示所有记录voidPrint()(3)按职工号或教学效果综合评分排序并显示intSortMenu()voidSortMenuControl()voidInsertByTeano(CNode*newp)voidSortByTeano()voidInsertByScore(CNode*newp)voidSortByScore()(4)按姓名或课程查找教师记录并显示intSearchMenu()voidSearchMenuControl()voidSearchByName()voidSearchByCourse()四、程序源代码#include"stdafx.h"#include<iostream>#include<fstream>#include<vector>#include<algorithm>#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"<<age<<"\t"<<(sex=='M'?"男":"女")<<endl; } 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<<teano<<"\t"<<GetName()<<"\t"<<GetAge()<<"\t"<<(GetSex()=='M'?"男":")<<title<<"\t"<<course[0]<<"\t"<<course[1]<<"\t"<<course[2]<<"\t"<<score<<endl; } 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.添加记录"<<endl; cout<<"3.排序"<<endl; cout<<"4.查找"<<endl; cout<<"5.创建新纪录"<<endl; cout<<"0.退出"<<endl; cout<<endl; 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<<"出现未知错误导致无法打开!"<<endl; 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<<"请输入:"<<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); 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.按职工号排序"<<endl; cout<<"2.按教学效果综合评分排序"<<endl; cout<<"0.退出"<<endl; cout<<endl; 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()<p->data.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.按姓名查找"<<endl; cout<<"2.按课程查找"<<endl; cout<<"0.退出"<<endl; cout<<endl; 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<<endl; } voidSearchByCourse() { intn=0; cout<<"请输入查找课程:"; stringc; cin>>c; for(p=head->next;p!=NULL;p=p->next) { vector<string>course=p->data.GetCourse(); for(inti=0;i<3;i++) if(c==course[i]) { p->data.ShowInfo(); n++; break; } } if(n==0) cout<<"没有相关记录"<<endl; cout<<endl; } 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<<"出现未知错误导致无法打开!"<<endl; exit(1); } for(p=head->next;p!=NULL;p=p->next)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《高分散蒙脱土-二氧化硅分散体的制备及其在水性环氧涂料中的应用研究》
- 电商物流的智能化发展
- 2024年度版BF存量房屋买卖合同
- 2024年度烘焙工坊厨房设备采购及安装合同
- 《兔的单引物PCR指纹分析》
- 不锈钢门禁系统生产与销售2024年度合同
- 《Fas-c-Myc相关信号分子在肺腺癌A549细胞放疗抵抗中的作用研究》
- 《行政协议相对人违约的解决路径研究》
- 《五种67-呋喃香豆素对大鼠肝微粒体细胞色素P4501A2和2E1活性的影响》
- 《基于区块链的智能制造生产线管理平台设计与实现》
- 江苏省南京市鼓楼区2024-2025学年七年级上学期期中数学试卷(含答案解析)
- 《基础会计》教学课件-整套教程电子讲义
- 国家中小学智慧教育平台培训专题讲座
- 读书分享会评分表(精编版)
- “珠江专科医疗联盟”推进学科发展的实践与创新PPT课件
- 第九讲常微分方程模型2
- 消防泵房及雨淋阀室建筑施工方案
- 律师事务所申请注销登记表(样表)
- 课程思政示范课程—课程思政矩阵图(示例)
- 县教体系统2021年教职工体检方案
- 漏水维修报价表
评论
0/150
提交评论