教工信息管理系统.docx

上传人:b****5 文档编号:6403956 上传时间:2023-01-06 格式:DOCX 页数:16 大小:150.27KB
下载 相关 举报
教工信息管理系统.docx_第1页
第1页 / 共16页
教工信息管理系统.docx_第2页
第2页 / 共16页
教工信息管理系统.docx_第3页
第3页 / 共16页
教工信息管理系统.docx_第4页
第4页 / 共16页
教工信息管理系统.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

教工信息管理系统.docx

《教工信息管理系统.docx》由会员分享,可在线阅读,更多相关《教工信息管理系统.docx(16页珍藏版)》请在冰豆网上搜索。

教工信息管理系统.docx

教工信息管理系统

学号:

课程设计报告

 

课程设计名称:

面向对象程序设计课程设计

题目:

教工信息管理系统

学生姓名:

专业班级:

指导教师:

完成时间:

年月日年月日

成绩:

 

一、系统的需求分析

需求分析是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。

可以说,“需求分析”就是确定要计算机“做什么”。

需求分析包括提炼,分析和仔细审查已收集到的需求,以确保所有的风险承担者都明其含义并找出其中的错误,遗憾或其它不足的地方。

本次课程设计需要实现的是——教工信息管理系统。

主要实现的功能包括:

教工信息的录入、查询、修改、删除、排序、输出。

教工信息可写入文件,也可从文件中读取。

教工信息涉及的数据有教工号、姓名、出生年月、职务、工资、住址、电话等。

按照需求分析所得,教工信息系统有以下几个功能模块:

1.教工信息录入模块

该模块主要录入教工的教工号、姓名、出生年月、职务、地址、电话号码和工资信息。

2.教工信息显示模块

该模块主要显示教工的所有信息,有教工号、姓名、出生年月、职务、地址、电话号码和工资信息。

3.教工信息删除模块

该模块先提示输入要删除的教工的教工号,然后查找与输入相同的教工号,查找到该教工后,删除该教工的所有信息。

4.教工信息排序模块

选择排序后,该模块提示已经成功按照工资高低排序,如需查看排序后信息,选择“教工信息显示”输出信息。

5.教工信息修改模块

该模块先提示输入要修改的教工的教工号,按照输入的教工号查找到该教工,然后删除该教工信息。

6.教工信息查询模块

该教工模块提示选择需要按教工号查询、按姓名查询还是按职务查询,然后通过选择查询的方式查找到该教工。

由上述需求分析可得,系统的功能模块图如图1所示。

 

图1教工信息系统功能模块图

二、系统的设计与实现

根据第一章的需求分析,接下来给出的是系统的设计与实现。

1.类的设计

根据上述需求分析得出有以下教工类和链表类。

(1)教工类

教工类cteacher中有成员:

教工号NUM[SIZE],教工姓名Name[SIZE],出生日期Time[SIZE],职务Post[SIZE],住址Address[SIZE],电话号码Phone,工资Pay,标志flag和构造函数cTeacher()。

其中私有成员有NUM[SIZE]、Name[SIZE]、Time[SIZE]、Post[SIZE]、Address[SIZE]、Phone、Pay、flag,公有成员有cTeacher()。

教工类的UML图如图2所示。

 

图2教工类的UML图

(2)链表类

链表类tList中,有成员:

构造函数tList(),创建链表Create(),判断链表是否为空的函数Empty()const,从尾部插入一个元素的函数Insert(constTe),返回第i个节点的函数GetcNode(inti),在链表中查询某个值的函数boolFind(constTe),析构函数~tList(),头节点head。

链表类的UML图如图3所示。

 

图3链表类的UML图

2.界面设计

(1)主界面的设计

主界面中显示教工信息系统的信息,有教工信息录入、教工信息显示、教工信息保存、教工信息删除、按工资排序、教工信息修改、教工信息查询、退出系统。

教工信息管理系统如图4所示。

图4教工信息管理系统

(2)教工信息录入的设计

提示输入教工号、教工名、教工出生日期、教工职务、教工地址、教工电话号码和工资。

教工信息录入如图5所示。

图5教工信息录入

(3)教工信息的删除设计

输入要删除的教工的教工号,先找到该教工的原始信息,然后显示并提示该教工的信息删除成功。

教工信息删除如图6所示。

图6教工信息删除

(4)教工信息的排序设计

按照工资从小到大排序,选择排序后,提示输出按照工资从小到大排序成功。

教工信息按照工资排序如图7所示。

图7工资排序

(5)教工信息的显示设计

选择教工信息显示,显示出已存入的教工信息。

教工信息的显示如图8所示。

 

图8教工信息的显示

(6)教工信息的修改设计

选择要修改的教工的教工号,然后系统提示重新输入教工的教工号、教工名、教工出生日期、教工职务、教工地址、教工电话号码和工资。

教工信息的修改如图9所示。

图9教工信息的修改

(7)教工信息的查询设计

选择查询的方式,可以按教工号、教工名、教工职务查询。

教工信息的查询如图10所示。

图10教工信息的查询

3.关键程序代码的分析

(1)系统的登录

在主函数中,创建链表,输出教工信息系统的各功能提示。

选择需要执行功能的序号,由switch判断、选择功能。

选择1,执行教工基本信息的录入;选择2,执行教工基本信息的显示;选择3,执行教工基本信息的保存;选择4,执行教工基本信息的删除;选择5,执行教工工资按从高到低排序;选择6,执行教工基本信息的修改;选择7,执行教工基本信息的查询;选择8退出。

intmain()

{

tListtListMedic;

tListMedic.Create();//创建链表

ReadData(&tListMedic);

while

(1)

{

cout<<"\n\n教工管理系统\n\n";

cout<<"-----------------------------\n\n";

cout<<"1:

教工信息录入\n\n";

cout<<"2:

教工信息显示\n\n";

cout<<"3:

教工信息保存\n\n";

cout<<"4:

教工信息删除\n\n";

cout<<"5:

按工资排序\n\n";

cout<<"6:

教工信息修改\n\n";

cout<<"7:

教工信息查询\n\n";

cout<<"8:

退出系统\n\n";

cout<<"请你选择所需操作的序号(1~8):

";

intchoose=0;

cin>>choose;

switch(choose)//根据用户选择执行相关功能

{

case1:

AddTheTeacher(&tListMedic);//教工基本信息录入

break;

case2:

Display(&tListMedic);//教工基本信息显示

break;

case3:

SaveData(&tListMedic);//教工基本信息保存

break;

case4:

DeleteTheTeacher(&tListMedic);//教工基本信息删除

break;

case5:

ArrangeData(&tListMedic);//教工按工资从小到大排序

break;

case6:

ModifyTheTeacher(&tListMedic);//教工基本信息修改

break;

case7:

FindTheTeacher(&tListMedic);//教工基本信息查询

break;

case8:

exit(0);//退出

default:

break;

}

}

return0;

}

(2)信息的添加

教工信息的添加,创建cTeacher类的tempTeacher对象,调用构造函数。

提示输入“教工号”、“教工名”、“教工出生年月”、“教工职务”、“教工住址”、“教工电话号码”和“教工工资”,输入成功后显示“录入成功”。

通过Insert函数录入教工的信息。

voidAddTheTeacher(tList*tListMedic)//录入教工函数

{

cTeachertempTeacher;//定义临时教工

cout<<"下面开始录入教工信息\n";

cout<<"请输入教工号:

";

cin>>tempTeacher.NUM;//读入教工号

cout<<"请输入教工名:

";

cin>>tempTeacher.Name;//读入教工名

cout<<"请输入教工出生日期:

";

cin>>tempTeacher.Time;//读入出生日期

cout<<"请输入教工职务:

";

cin>>tempTeacher.Post;//读入职务

cout<<"请输入教工住址:

";

cin>>tempTeacher.Address;//读入住址

cout<<"请输入教工电话号码:

";

cin>>tempTeacher.Phone;//读入电话号码

cout<<"请输入工资";

cin>>tempTeacher.Pay;//读入工资

tempTeacher.flag=true;

tListMedic->Insert(tempTeacher);

cout<<"录入成功!

\n";

system("pause");

system("cls");

}

(3)信息的删除

删除教工信息,提示输入要删除的教工的教工号,定义一个指向链表第一个节点的指针p。

如果指针创建成功,开始用while和if语句实现p指向的节点的教工号与存在的教工号的比较。

如果相同,输出该教工的信息;如果没有相同的,提示没有所查询的教工。

voidDeleteTheTeacher(tList*tListMedic)//删除教工信息

{

charnum[SIZE];

cout<<"\n请输入你要删除教工的教工号:

";

cin>>num;//读取教工号

boolflag=false;

intcount=0;

cNode*p;

p=tListMedic->head->next;

while(p)

{

if(strcmp(p->data.NUM,num)==0&&p->data.flag)

{

count++;

flag=true;

break;

}

p=p->next;

}

if(flag==false)cout<<"对不起,没有你所查询的教工!

\n";//如果找不到

else//如果找到了

{

count--;

cout<<"找到了,该教工的原始信息是:

\n";

cout<<"\n\n教工号:

"<<(p->data).NUM<<"\t教工名:

"<<(p->data).Name<<"\n\t\t出生日期:

"<<(p->data).Time<<"\n\t\t职务:

"<<(p->data).Post;

cout<<"\n\t\t住址:

"<<(p->data).Address<<"\n\t\t电话号码:

"<<(p->data).Phone<<"\n\t\t工资"<<(p->data).Pay;

cout<

(p->data).flag=false;

cout<<"该教工的信息删除成功!

\n";

}

cout<

system("pause");

system("cls");

return;

}

(4)信息的修改

教工信息的修改,提示输入要修改的教工的教工号,定义一个指向链表第一个节点的指针p。

如果指针创建成功,开始用while和if语句实现p指向的节点的教工号与存在的教工号的比较。

如果相同,提示重新输入教工的各个信息;如果没有相同的,提示没有所查询的教工。

voidModifyTheTeacher(tList*tListMedic)//修改教工信息

{

charnum[SIZE];

cout<<"\n请输入你要修改的教工的教工号:

";

cin>>num;//读取教工号

boolflag=false;

cNode*p;

p=tListMedic->head->next;

while(p)

{

if(strcmp(p->data.NUM,num)==0&&p->data.flag)

{

flag=true;

break;

}

p=p->next;

}

if(flag==false)cout<<"对不起,没有你所查询的教工!

\n";//如果找不到

else//如果找到了

{//显示屏幕

cout<<"找到了,该教工的原始信息是:

\n";

cout<<"\n\n教工号:

"<<(p->data).NUM<<"\t教工名:

"<<(p->data).Name<<"\n\t\t出生日期:

"<<(p->data).Time<<"\n\t\t职务:

"<<(p->data).Post;

cout<<"\n\t\t住址:

"<<(p->data).Address<<"\n\t\t电话号码:

"<<(p->data).Phone<<"\n\t\t工资"<<(p->data).Pay;

cout<<"\n下面开始修改该教工的信息:

\n";

cTeachertempTeacher;//定义临时教工

cout<<"请输入教工号:

";

cin>>tempTeacher.NUM;//读入教工号

cout<<"请输入教工名:

";

cin>>tempTeacher.Name;//读入教工名

cout<<"请输入出生日期:

";

cin>>tempTeacher.Time;//读入出生日期

cout<<"请输入教工职务:

";

cin>>tempTeacher.Post;//读入职务

cout<<"请输入教工住址:

";

cin>>tempTeacher.Address;//读入住址

cout<<"请输入教工电话号码:

";

cin>>tempTeacher.Phone;//读入电话号码

cout<<"请输入工资:

";

cin>>tempTeacher.Pay;//读入工资

tempTeacher.flag=true;

p->data=tempTeacher;

cout<<"修改成功!

";

}

cout<

system("pause");

system("cls");

return;

}

4.系统的调试

程序调试是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。

这是保证计算机信息系统正确性的必不可少的步骤。

编完计算机程序,必须送入计算机中测试。

编程结束后,经Debug调试发现在以下程序段出现错误:

voidArrangeData(tList*tListMedic)//按照工资从小到大排序

{

cNode*p,*q;

cTeachertempTeacher;

for(p=tListMedic->head->next;p!

=NULL;p=p->next)

{

for(q=p;q!

=NULL;q=q->next)

{

if(p->data.Pay>q->data.Pay)

{

tempTeacher.flag=p->data.flag;

strcpy(tempTeacher.Address,p->data.Address);

strcpy(tempTeacher.NUM,p->data.NUM);

strcpy(tempTeacher.Name,p->data.Name);

strcpy(tempTeacher.Time,p->data.Time);

strcpy(tempTeacher.Post,p->data.Post);

tempTeacher.Phone=p->data.Phone;

tempTeacher.Pay=p->data.Pay;

p->data.flag=q->data.flag;

strcpy(p->data.Address,q->data.Address);

strcpy(p->data.NUM,q->data.NUM);

strcpy(p->data.Name,q->data.Name);

strcpy(p->data.Time,q->data.Time);

strcpy(p->data.Post,q->data.Post);

p->data.Phone=q->data.Phone;

p->data.Pay=q->data.Pay;

q->data.flag=tempTeacher.flag;

strcpy(q->data.Address,tempTeacher.Address);

strcpy(q->data.NUM,tempTeacher.NUM);

strcpy(q->data.Name,tempTeacher.Name);

strcpy(q->data.Time,tempTeacher.Time);

strcpy(q->data.Post,tempTeacher.Post);

q->data.Phone=tempTeacher.Phone;

q->data.Pay=tempTeacher.Pay;

}

}

cout<<"按照工资从小到大排序成功"<

}

经过仔细的查找,发现在程序中有两个for语句和一个if语句,在程序末尾少了一个”}”,修改后程序运行正确。

三、总结

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.

通过短短四天时间的课程设计,在无形的压力下提高了我的办事速度,锻炼了我的工作效率。

课程设计是与实际接轨的,我通过网络了解了需要完成的教工信息管理系统的相关数据。

然后对需要实现的功能进行分析、设计、编程和测试。

面向对象程序设计作为一门软件设计课程,常用来解决一些实际问题。

此次设计加强了我灵活应用理论知识的能力,也锻炼了我理论联系实际的技能。

在设计过程中,总会遇到这样或那样的问题,如标识符大小写的问题,函数体缺少“}”,以及有些函数没有事先声明等问题。

一个小问题会引起一连串的错误,需要做大量的工作,花大量的时间才能解决。

自然而然,培养了我的耐心。

也为以后的工作积累了经验,增强了信心。

本次设计使我对C++有了更深的认识和理解,让我认识到一个好的程序会给解决实际问题带来很大的便利。

编程过程有一个清晰的编程思路是很重要的。

我们学习的知识是有限的,在以后的工作中我们肯定会遇到更多未知领域的问题,锻炼这方面的能力会使我们受益匪浅。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1