net程序设计实验三3员工津贴计算程序和委托事件.docx

上传人:b****4 文档编号:4078485 上传时间:2022-11-27 格式:DOCX 页数:13 大小:213.56KB
下载 相关 举报
net程序设计实验三3员工津贴计算程序和委托事件.docx_第1页
第1页 / 共13页
net程序设计实验三3员工津贴计算程序和委托事件.docx_第2页
第2页 / 共13页
net程序设计实验三3员工津贴计算程序和委托事件.docx_第3页
第3页 / 共13页
net程序设计实验三3员工津贴计算程序和委托事件.docx_第4页
第4页 / 共13页
net程序设计实验三3员工津贴计算程序和委托事件.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

net程序设计实验三3员工津贴计算程序和委托事件.docx

《net程序设计实验三3员工津贴计算程序和委托事件.docx》由会员分享,可在线阅读,更多相关《net程序设计实验三3员工津贴计算程序和委托事件.docx(13页珍藏版)》请在冰豆网上搜索。

net程序设计实验三3员工津贴计算程序和委托事件.docx

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公共类老是会忘记掉导致运行的时候出不来,再排查过后发现了问题,其他都没什么大问题基本按照书上都能调试出来,针对第二题刘备张飞关羽举杯之事相互之间的委托关系有点弄的不是很透彻经询问同学帮忙参考之后,解决了问题完成了调试。

 

教师签名:

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

当前位置:首页 > 人文社科 > 法律资料

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

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