net程序设计实验三3员工津贴计算程序和委托事件.docx
- 文档编号:4078485
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:13
- 大小:213.56KB
net程序设计实验三3员工津贴计算程序和委托事件.docx
《net程序设计实验三3员工津贴计算程序和委托事件.docx》由会员分享,可在线阅读,更多相关《net程序设计实验三3员工津贴计算程序和委托事件.docx(13页珍藏版)》请在冰豆网上搜索。
net程序设计实验三3员工津贴计算程序和委托事件
成绩
批阅
日期
台州学院
电子与信息工程学院实验报告
班级学号姓名吴前斌
同组
实验课程:
.net程序设计
实验项目:
面向对象程序编程
实验日期:
2019年4月13日
4)在Worker类中要求创建一个用于检查用户输入工龄是否合法的CheckNum()方法。
若输入值不能转换为int类型,方法返回false,否则返回true。
5)在Worker类中声明一个委托IsFalseDelegate,通过该委托声明一个IsFalse事件及其事件触发方法ActiveEvent(),使得用户输入的工龄值大于50时触发IsFalse事件,并调用BackError()事件处理程序弹出图3-3-3所示的信息框提醒用户输入可能有错。
图3-3-3触发IsFalse事件
[实验3-3-2]委托和事件
设计一个控制台程序,利用委托和事件实现:
刘备设鸿门宴,吩咐关羽和张飞各自带队埋伏在门外,刘备摔杯为号,关羽和张飞则带队杀出;约定以杯为令:
若左手举杯,则关羽带队杀出;若右手举杯,则张飞带队杀出;若直接摔杯,则关羽和张飞同时杀出。
如图3-3-4。
图3-3-4
四、实验步骤及结果记录(文字说明、关键代码配截图)
五、实验小结(实验过程中遇到哪些问题,你是如何解决的,哪些知识点是你学习中的难点)
六、源程序(和实验报告一起打包上交,打包文件命名:
学号姓名.net程序设计实验3-3)
数据记录
[实验3-3-1]员工津贴计算程序
使用接口、子接口、子类设计一个员工津贴计算程序。
程序启动后显示图1、2、3所示界面:
图1
图2
图3
实现的代码如下:
publicpartialclassForm1:
Form
{
interfaceIEmployee
{
stringName{get;set;}
boolSex{get;set;}
intSubsidy();
}
interfaceITeacher:
IEmployee
{
stringPost{get;set;}
newintSubsidy();
}
interfaceIWorker:
IEmployee
{
intWorkingYear{get;set;}
newintSubsidy();
}
classTeacher:
ITeacher
{
privatestring_name;
privatebool_sex;
privatestring_post;
publicstringName{get=>_name;set=>_name=value;}
publicboolSex{get=>_sex;set=>_sex=value;}
publicstringPost{get=>_post;set=>_post=value;}
publicintSubsidy()
{
ints=0;
switch(Post)
{
case"教授":
s=1200;break;
case"副教授":
s=800;break;
case"讲师":
s=500;break;
case"助教":
s=300;break;
}
returns;
}
}
classWorker:
IWorker
{
privatestring_name;
privatebool_sex;
privateint_workingyear;
publicstringName{get=>_name;set=>_name=value;}
publicboolSex{get=>_sex;set=>_sex=value;}
publicintWorkingYear{get=>_workingyear;set=>_workingyear=value;}
publicintSubsidy()
{
returnWorkingYear*15;
}
publicboolCheckNum(stringnum)
{
inty;
if(int.TryParse(num,outy)==false)
{
returnfalse;
}
elsereturntrue;
}
//先声明委托
publicdelegatevoidIsFalseDelegate();
//根据委托声明事件
publiceventIsFalseDelegateevent_IsFalse;
publicvoidActiveEvent(stringval)
{
if(int.Parse(val)>50)
{
event_IsFalse();
}
}
publicvoiderror()
{
MessageBox.Show("工龄输入有错误!
","提醒",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
publicForm1()
{
InitializeComponent();
}
privatevoidForm1_Load(objectsender,EventArgse)
{
this.Text="接口和接口的继承";
cb_teacher_sex.Items.Add("男");
cb_teacher_sex.Items.Add("女");
cb_teacher_sex.Text="男";
cb_teacher_post.Items.Add("教授");
cb_teacher_post.Items.Add("副教授");
cb_teacher_post.Items.Add("讲师");
cb_teacher_post.Items.Add("助教");
cb_teacher_post.Text="教授";
cb_worker_sex.Items.Add("男");
cb_worker_sex.Items.Add("女");
cb_worker_sex.Text="男";
lb_teacher_show.Text="";
lb_worker_show.Text="";
}
privatevoidbtn_teacher_Click(objectsender,EventArgse)
{
if(text_teacher_name.Text=="")
{
MessageBox.Show("请输入教师姓名","出错",MessageBoxButtons.OK,MessageBoxIcon.Error);
return;
}
Teachert=newTeacher();
t.Post=cb_teacher_post.Text;
t.Name=text_teacher_name.Text;
stringsex;
if(cb_teacher_sex.Text=="男")
{
t.Sex=true;
sex="男";
}
else
{
t.Sex=false;
sex="女";
}
strings=t.Subsidy().ToString();
lb_teacher_show.Text=t.Name+""+sex+""+t.Post+"津贴:
"+t.Subsidy().ToString();
}
privatevoidbtn_worker_Click(objectsender,EventArgse)
{
if(text_worker_name.Text==""||text_worker_year.Text=="")
{
MessageBox.Show("姓名和工龄值都不能为空!
","错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
return;
}
Workerw=newWorker();
//检查工龄值是否合法
if(w.CheckNum(text_worker_year.Text)==false)
{
MessageBox.Show("工龄值输入不正确!
","错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
return;
}
//事件订阅
w.event_IsFalse+=newWorker.IsFalseDelegate(w.error);
//判断工龄值是否过大(大于50)
w.ActiveEvent(text_worker_year.Text);
w.Name=text_worker_name.Text;
w.WorkingYear=int.Parse(text_worker_year.Text);
stringsex;
if(cb_worker_sex.Text=="男")
{
w.Sex=true;
sex="男";
}
else
{
w.Sex=false;
sex="女";
}
lb_worker_show.Text=w.Name+""+sex+""+w.WorkingYear.ToString()+"津贴:
"+w.Subsidy().ToString();
}
privatevoidtext_teacher_name_TextChanged(objectsender,EventArgse)
{
}
}
}
[实验3-3-2]委托和事件
设计一个控制台程序,利用委托和事件实现:
刘备设鸿门宴,吩咐关羽和张飞各自带队埋伏在门外,刘备摔杯为号,关羽和张飞则带队杀出;约定以杯为令:
若左手举杯,则关羽带队杀出;若右手举杯,则张飞带队杀出;若直接摔杯,则关羽和张飞同时杀出。
如下图4所示:
图4
设计的部分代码如下:
{
classProgram
{
publicdelegatevoidraise();
publicdelegatevoidfall();
publicclassliubei
{
publiceventraiseevent_right;//左手事件
publiceventraiseevent_left;//右手事件
publicvoidmethod_right()
{
Console.WriteLine("刘备左手举杯");
if(event_right!
=null)event_right();
}
publicvoidmethod_left()
{
Console.WriteLine("刘备右手举杯");
if(event_left!
=null)event_left();
}
publiceventfallevent_fall;//摔杯事件
publicvoidmethod_fall()
{
Console.WriteLine("刘备摔杯");
if(event_fall!
=null)event_fall();
}
}
publicclassguanyu
{
publicguanyu(liubeilb)//构造方法,直接订阅
{
lb.event_right+=newraise(this.attack);
lb.event_fall+=newfall(attack);
}
publicvoidattack()//关羽的攻击
{
Console.WriteLine("关羽发动攻击,一把青龙偃月刀耍的虎虎生威~");
}
}
publicclasszhangfei
{
publiczhangfei(liubeilb)//构造
{
lb.event_left+=newraise(attack);
lb.event_fall+=newfall(attack);
}
publicvoidattack()
{
Console.WriteLine("张飞发动攻击,大喊:
猛人张飞来也!
");
}
}
staticvoidMain()
{
liubeilb=newliubei();
//关羽
zhangfeizf=newzhangfei(lb);
guanyugf=newguanyu(lb);
lb.method_right();
//张飞
lb.method_left();
//一起
lb.method_fall();
Console.ReadKey();
}
}
}
实验小结(实验过程中遇到哪些问题,你是如何解决的,哪些知识点是你学习中的难点)
本次实验相对来说,涉及到了很多内容,在编写教授津贴的那个项目的时候对于细节的private以及public公共类老是会忘记掉导致运行的时候出不来,再排查过后发现了问题,其他都没什么大问题基本按照书上都能调试出来,针对第二题刘备张飞关羽举杯之事相互之间的委托关系有点弄的不是很透彻经询问同学帮忙参考之后,解决了问题完成了调试。
教师签名:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- net 程序设计 实验 员工 津贴 计算 程序 委托 事件