0
点赞
收藏
分享

微信扫一扫

C# 实验5 日期控件、定时器、图片框的使用及窗体间传参


前言
👏作者简介:我是笑霸final,一名热爱技术的在校学生。

目录

  • ​​一、实验目的​​
  • ​​二、实验任务​​
  • ​​1.使用日期控件​​
  • ​​2.使用图片框、定时器​​
  • ​​3.设计一个图书管理系统​​
  • ​​4.创建Windows窗体应用程序,利用2个窗体实现学生成绩录入​​

一、实验目的

  • 1.掌握日期控件、定时器控件的应用。
  • 2.掌握使用图片框控件显示图片的方法。
  • 3.掌握打开文件对话框的使用方法。
  • 4.掌握多个窗体的使用及窗体间进行数据传递的方法

二、实验任务

1.使用日期控件

源代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 第一题
{
public partial class Form1 : Form
{
string time;//设置的时间
public Form1()
{
InitializeComponent();
}

private void groupBox1_Enter(object sender, EventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{
time= myTime.Value.ToString("yyyy-MM-dd HH:MM:ss");
timeSet.Text = time;//设置的时间

timeNow.Text= DateTime.Now.ToString("yyyy-MM-dd HH:MM:ss");//当前时间
timer1.Enabled=true;//开启计时器
timer1.Interval = 1000;//设置1秒

}

private void Form1_Load(object sender, EventArgs e)
{
myTime.Format = DateTimePickerFormat.Custom;
myTime.CustomFormat = "yyyy-MM-dd HH:MM:ss";
}

private void timer1_Tick(object sender, EventArgs e)
{
timeNow.Text = DateTime.Now.ToString("yyyy-MM-dd HH:MM:ss");//计时器获取当前时间
if(time == timeNow.Text)
{
//说明时间到了设置的时间
MessageBox.Show("时间到!");
}
}
}
}

实验结果


2.使用图片框、定时器

使用图片框、定时器、打开文件对话框设计一个图片浏览程序,界面如图5.3所示,需要完成以下功能:

  • (1)实现对浏览图片的添加,点击“添加图片”按钮时调用“文件打开对话框”实现对图片的选择;
  • (2)通过“上一张”和“下一张”按钮实现对所选择图片的浏览,要求浏览到最后一张图片时,“下一张”按钮不可用(灰色),浏览到第一张图片时,“上一张”按钮不可用。
  • (3)点击“自动播放”按钮实现对所选择图片的循环自动播放(设每隔2秒自动更换图片),点击“暂停”按钮时自动播放暂停,点击“继续”按钮,继续自动播放图片。

源代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 第二题
{
public partial class Form1 : Form
{
OpenFileDialog ofdl = new OpenFileDialog();
String[] myImags;
int index = 0;//默认下标
public Form1()
{
InitializeComponent();
}

private void buttonAdd_Click(object sender, EventArgs e)
{//添加按钮
try
{
ofdl.ShowDialog();//打开文件对话框
myImags = ofdl.FileNames;
pictImage.Image = Image.FromFile(myImags[index]);
}
catch(Exception ex)
{
//异常处理
MessageBox.Show("取消添加照片");
}

}

private void Form1_Load(object sender, EventArgs e)
{
ofdl.Multiselect = true;//允许多选

if (index == 0)
{
//是第一张图片 (上一张)按钮不可用
butOn.Enabled = false;
//(下一张)按钮可用
butNext.Enabled = true;
}

}

private void butOn_Click(object sender, EventArgs e)
{
//上一张按钮
if ((index % myImags.Length) == myImags.Length - 1)
{
//是最后一张图片 (上一张)按钮可用
butOn.Enabled = true;
pictImage.Image = Image.FromFile(myImags[(--index) % myImags.Length]);
butNext.Enabled = false;//开启下一张按钮
}
else if((index % myImags.Length) != 0)
{
butOn.Enabled = true;
butNext.Enabled = true;
//切换图片
pictImage.Image = Image.FromFile(myImags[(--index) % myImags.Length]);
}

if((index % myImags.Length) == 0)
{
//是第一张图片 (上一张)按钮不可用
butOn.Enabled = false;
//(下一张)按钮可用
return;//结束

}



}

private void butNext_Click(object sender, EventArgs e)
{
//下一张按钮
if ((index % myImags.Length) == 0)
{
//(下一张)按钮可用
butNext.Enabled = true;
pictImage.Image = Image.FromFile(myImags[(++index) % myImags.Length]);
butOn.Enabled = true;//开启添加按钮
}

else if((index % myImags.Length) != myImags.Length - 1)
{
butOn.Enabled = true;
butNext.Enabled = true;
//切换图片
pictImage.Image = Image.FromFile(myImags[(++index) % myImags.Length]);
}
if((index % myImags.Length) == myImags.Length - 1)
{
//(下一张)按钮不可用
butNext.Enabled = false;
return;
}
}

private void butAuto_Click(object sender, EventArgs e)
{
timer1.Enabled = true;//开启计时器
timer1.Interval = 2000;//设置1秒
//循环播放 把数组看成循环队列

}

private void butjixu_Click(object sender, EventArgs e)
{
timer1.Start();//继续
}

private void butStop_Click(object sender, EventArgs e)
{
timer1.Stop();
}

private void timer1_Tick(object sender, EventArgs e)
{
//(index++) % myImags.Length
pictImage.Image = Image.FromFile(myImags[(index++) % myImags.Length]);

}
}
}

实验结果:

C# 实验5 日期控件、定时器、图片框的使用及窗体间传参_c#_02

C# 实验5 日期控件、定时器、图片框的使用及窗体间传参_开发语言_03

C# 实验5 日期控件、定时器、图片框的使用及窗体间传参_用户名_04

3.设计一个图书管理系统

设计一个图书管理系统(系统功能无需实现),系统使用者包含2类用户,分别为一般管理员用户和超级管理员用户。2类用户使用系统时均需要登录进行身份认证,要求输入合法的用户名和密码(若输入的用户名或密码错误应给出消息框),登录界面如图5.4所示,登录成功后(用户名和密码均正确)进入图书管理主界面并显示欢迎用户的信息,如图5.5所示,若为超级管理员用户,显示“一般用户使用”和“超级用户使用”两个按钮,而对于一般管理员用户,只显示“一般用户使用”一个按钮。
要求:以“登录”窗口为启动窗体和以“图书管理系统”主窗口为启动窗体分别实现。
提示:(1)用户信息可以存放在结构数组中。此题设用户有:

  • 张三,密码:123,级别:0(为超级管理员用户)
  • 李四,密码:456,级别:1(为一般管理员用户)
  • 王五,密码:789,级别:1(为一般管理员用户)

(2)声明结构体存放用户信息:

C# 实验5 日期控件、定时器、图片框的使用及窗体间传参_c#_05

C# 实验5 日期控件、定时器、图片框的使用及窗体间传参_c#_06

源代码1:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq;

namespace 第三题
{


public partial class form1 : Form
{
struct User
{
public string name;
public string password;
public string level;
}
User[] userinfo = new User[3];
public form1()
{
userinfo[0].name = "张三";
userinfo[0].password = "123";
userinfo[0].level = "0";
userinfo[1].name = "李四";
userinfo[1].password = "456";
userinfo[1].level = "1";
userinfo[2].name = "王五";
userinfo[2].password = "789";
userinfo[2].level = "1";

InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void button2_Click(object sender, EventArgs e)
{
System.Environment.Exit(0);
}

private void button1_Click(object sender, EventArgs e)
{

String myuse= username.Text;//获取当前输入的用户名
String myPwd = pwd.Text;//获取当前输入的密码
if(myuse==""|| myPwd == "")
{
MessageBox.Show("用户名和密码不能为空");
return;//结束
}
int len=userinfo.Length;//当前的用户数量
int index = 0;//下标
while (index< len)
{
if (myuse.Equals(userinfo[index].name))
{//用户匹配上了
if (myPwd.Equals(userinfo[index].password))
{
Form form2=new Form2();
Program.name = userinfo[index].name;//设置当前名字
//密码匹配上了
if (userinfo[index].level.Equals("0"))//0(为超级管理员用户)
{
Program.myStatus=true;//显示一般用户使用按钮
form2.Show();
}
if (userinfo[index].level.Equals("1"))//1(为一般管理员用户)
{
Program.myStatus = false;
form2.Show();
}
return;
}
else
{
MessageBox.Show("密码错误");
//清空密码
pwd.Text = "";
return;
}
}

index++;
}
MessageBox.Show("没有此用户");
}
}
}

源代码2:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 第三题
{
internal static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new form1());


}
//多个窗口共享数据
public static String name = "";
public static Boolean myStatus = false;
}
}

源代码3:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 第三题
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

private void Form2_Load(object sender, EventArgs e)
{
//设置第一个窗口传来的数据
myname.Text = "欢迎" + Program.name + "使用";
button2.Visible = Program.myStatus;
}
}
}

实验结果:

C# 实验5 日期控件、定时器、图片框的使用及窗体间传参_ui_07

C# 实验5 日期控件、定时器、图片框的使用及窗体间传参_用户名_08

4.创建Windows窗体应用程序,利用2个窗体实现学生成绩录入

创建Windows窗体应用程序,利用2个窗体实现学生成绩录入,如图5.6,5.7所示。在标题为“学生成绩录入系统”的窗体上点击“录入成绩”按钮后,打开标题为“成绩录入”的窗体,录入成绩。具体要求:

  • (1)在“成绩录入”窗体中分别输入学号、高数、英语、计算机3科成绩后,点击“平均分”按钮,在其右侧的文本框中显示3科成绩的平均值;
  • (2)学生成绩及平均分录入完毕后,点击“录入”命令按钮确认,同时关闭“成绩录入”窗体,并且在“学生成绩录入系统”窗体的列表框中显示刚才的录入信息;
  • (3)在“成绩录入”窗体中还有一个“取消”命令按钮,其功能是:若在成绩输入完毕后没有点击“录入”按钮,而是点击了“取消”按钮,则关闭“成绩录入”窗体,但刚才的输入无效,即不在“学生成绩录入系统”窗体的列表框中显示。

    源代码一:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 第四题
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void richTextBox1_TextChanged(object sender, EventArgs e)
{

}



private void button1_Click(object sender, EventArgs e)
{
Program.Status = false;//设置状态 防止第二个窗口 点×也会增加上一次的内容
Form f2 = new Form2();
f2.ShowDialog();

}

private void Form1_Activated(object sender, EventArgs e)
{
if (Program.Status)
{//当窗口活动时 状态修改过才会添加
myText.Text += "\n" + Program.myText;
}
Program.Status = false;//设置状态 防止调用时直至录入
}

private void Form1_Load(object sender, EventArgs e)
{


myText.Text = "学号" + "\t" + "高数" + "\t" + "英语" + "\t" + "计算机" + "\t" + "平均分";

Program.Status = false;//设置状态 防止调用时直至录入
}
}
}

源代码二:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 第四题
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

private void label1_Click(object sender, EventArgs e)
{

}

private void butAge_Click(object sender, EventArgs e)
{
if (textBox1.Text == "") { MessageBox.Show("id不能为空");return; }
Program.myId = int.Parse(textBox1.Text);
if (textBox2.Text == "") { MessageBox.Show("数学成绩不能为空"); return; }
Program.mathematics = int.Parse(textBox2.Text);
if (textBox3.Text == "") { MessageBox.Show("英语成绩不能为空"); return; }
Program.English = int.Parse(textBox3.Text);
if (textBox4.Text == "") { MessageBox.Show("计算机成绩不能为空"); return; }
Program.computer = int.Parse(textBox4.Text);

//计算平均分
Program.avg = (Program.mathematics + Program.English + Program.computer) / 3.0;
textBox5.Text=Program.avg.ToString();//显示平均分
}

private void butAdd_Click(object sender, EventArgs e)
{
//录入按钮
if (textBox5.Text == "") { MessageBox.Show("请计算平均成绩"); return; }
//拼接成绩

Program.myText= Program.myId + "\t" + Program.mathematics + "\t" + Program.English + "\t" + Program.computer + "\t" + Program.avg;

//设置返回状态
Program.Status = true;
Form1 f1 = new Form1();

//退出

this.Close();
}

private void butExit_Click(object sender, EventArgs e)
{
//设置返回状态
Program.Status = false;
//退出
this.Close();
}
}
}

源代码三:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 第四题
{
internal static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]

static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

Application.Run(new Form1());
}
//设置共享数据
public static int myId;//学号
public static int mathematics;//高数
public static int English;//英语
public static int computer;//计算机
public static double avg;//平均分
public static String myText ;//信息
public static Boolean Status = false;//返回状态

}

}

实验结果:

C# 实验5 日期控件、定时器、图片框的使用及窗体间传参_ui_09



举报

相关推荐

0 条评论