教工信息管理系统Word下载.docx
- 文档编号:19415413
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:16
- 大小:150.27KB
教工信息管理系统Word下载.docx
《教工信息管理系统Word下载.docx》由会员分享,可在线阅读,更多相关《教工信息管理系统Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
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()
{
tList<
cTeacher>
tListMedic;
tListMedic.Create();
//创建链表
ReadData(&
tListMedic);
while
(1)
{
cout<
<
"
\n\n教工管理系统\n\n"
;
-----------------------------\n\n"
1:
教工信息录入\n\n"
2:
教工信息显示\n\n"
3:
教工信息保存\n\n"
4:
教工信息删除\n\n"
cout<
5:
按工资排序\n\n"
6:
教工信息修改\n\n"
7:
教工信息查询\n\n"
8:
退出系统\n\n"
请你选择所需操作的序号(1~8):
intchoose=0;
cin>
>
choose;
switch(choose)//根据用户选择执行相关功能
{
case1:
AddTheTeacher(&
//教工基本信息录入
break;
case2:
Display(&
//教工基本信息显示
case3:
SaveData(&
//教工基本信息保存
case4:
DeleteTheTeacher(&
//教工基本信息删除
case5:
ArrangeData(&
//教工按工资从小到大排序
case6:
ModifyTheTeacher(&
//教工基本信息修改
case7:
FindTheTeacher(&
//教工基本信息查询
case8:
exit(0);
//退出
default:
break;
}
}
return0;
}
(2)信息的添加
教工信息的添加,创建cTeacher类的tempTeacher对象,调用构造函数。
提示输入“教工号”、“教工名”、“教工出生年月”、“教工职务”、“教工住址”、“教工电话号码”和“教工工资”,输入成功后显示“录入成功”。
通过Insert函数录入教工的信息。
voidAddTheTeacher(tList<
*tListMedic)//录入教工函数
cTeachertempTeacher;
//定义临时教工
下面开始录入教工信息\n"
请输入教工号:
cin>
tempTeacher.NUM;
//读入教工号
请输入教工名:
tempTeacher.Name;
//读入教工名
请输入教工出生日期:
tempTeacher.Time;
//读入出生日期
请输入教工职务:
tempTeacher.Post;
//读入职务
请输入教工住址:
tempTeacher.Address;
//读入住址
请输入教工电话号码:
tempTeacher.Phone;
//读入电话号码
请输入工资"
tempTeacher.Pay;
//读入工资
tempTeacher.flag=true;
tListMedic->
Insert(tempTeacher);
录入成功!
\n"
system("
pause"
);
cls"
(3)信息的删除
删除教工信息,提示输入要删除的教工的教工号,定义一个指向链表第一个节点的指针p。
如果指针创建成功,开始用while和if语句实现p指向的节点的教工号与存在的教工号的比较。
如果相同,输出该教工的信息;
如果没有相同的,提示没有所查询的教工。
voidDeleteTheTeacher(tList<
*tListMedic)//删除教工信息
charnum[SIZE];
\n请输入你要删除教工的教工号:
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;
p=p->
if(flag==false)cout<
对不起,没有你所查询的教工!
//如果找不到
else//如果找到了
count--;
找到了,该教工的原始信息是:
\n\n教工号:
(p->
data).NUM<
\t教工名:
data).Name<
\n\t\t出生日期:
data).Time<
\n\t\t职务:
data).Post;
\n\t\t住址:
data).Address<
\n\t\t电话号码:
data).Phone<
\n\t\t工资"
data).Pay;
endl;
(p->
data).flag=false;
该教工的信息删除成功!
}
return;
(4)信息的修改
教工信息的修改,提示输入要修改的教工的教工号,定义一个指向链表第一个节点的指针p。
如果相同,提示重新输入教工的各个信息;
voidModifyTheTeacher(tList<
*tListMedic)//修改教工信息
\n请输入你要修改的教工的教工号:
else//如果找到了
{//显示屏幕
\n下面开始修改该教工的信息:
cTeachertempTeacher;
请输入教工名:
请输入出生日期:
请输入工资:
tempTeacher.flag=true;
p->
data=tempTeacher;
修改成功!
4.系统的调试
程序调试是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。
这是保证计算机信息系统正确性的必不可少的步骤。
编完计算机程序,必须送入计算机中测试。
编程结束后,经Debug调试发现在以下程序段出现错误:
voidArrangeData(tList<
*tListMedic)//按照工资从小到大排序
cNode<
*p,*q;
for(p=tListMedic->
p!
=NULL;
p=p->
next)
for(q=p;
q!
q=q->
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;
data.flag=q->
strcpy(p->
data.Address,q->
strcpy(p->
data.NUM,q->
data.Name,q->
data.Time,q->
data.Post,q->
p->
data.Phone=q->
data.Pay=q->
q->
data.flag=tempTeacher.flag;
strcpy(q->
data.Address,tempTeacher.Address);
strcpy(q->
data.NUM,tempTeacher.NUM);
data.Name,tempTeacher.Name);
data.Time,tempTeacher.Time);
data.Post,tempTeacher.Post);
data.Phone=tempTeacher.Phone;
data.Pay=tempTeacher.Pay;
}
cout<
按照工资从小到大排序成功"
经过仔细的查找,发现在程序中有两个for语句和一个if语句,在程序末尾少了一个”}”,修改后程序运行正确。
三、总结
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.
通过短短四天时间的课程设计,在无形的压力下提高了我的办事速度,锻炼了我的工作效率。
课程设计是与实际接轨的,我通过网络了解了需要完成的教工信息管理系统的相关数据。
然后对需要实现的功能进行分析、设计、编程和测试。
面向对象程序设计作为一门软件设计课程,常用来解决一些实际问题。
此次设计加强了我灵活应用理论知识的能力,也锻炼了我理论联系实际的技能。
在设计过程中,总会遇到这样或那样的问题,如标识符大小写的问题,函数体缺少“}”,以及有些函数没有事先声明等问题。
一个小问题会引起一连串的错误,需要做大量的工作,花大量的时间才能解决。
自然而然,培养了我的耐心。
也为以后的工作积累了经验,增强了信心。
本次设计使我对C++有了更深的认识和理解,让我认识到一个好的程序会给解决实际问题带来很大的便利。
编程过程有一个清晰的编程思路是很重要的。
我们学习的知识是有限的,在以后的工作中我们肯定会遇到更多未知领域的问题,锻炼这方面的能力会使我们受益匪浅。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教工 信息管理 系统