C# 实验5 日期控件、定时器、图片框的使用及窗体间传参
创始人
2024-03-31 10:09:10

前言
👏作者简介:我是笑霸final,一名热爱技术的在校学生。
📝个人主页:个人主页1 || 笑霸final的主页2
📕系列专栏:《作业专栏》
📧如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
🔥如果感觉博主的文章还不错的话,👍点赞👍 + 👀关注👀 + 🤏收藏🤏

在这里插入图片描述

目录

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

一、实验目的

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

二、实验任务

1.使用日期控件

使用日期控件,定时器等控件完成“闹钟”程序的基本功能,界面如图5.1所示,运行程序,在日期控件中设置好日期/时间,如图5.2所示,点击“确定”按钮,在两个标签上分别显示设置的时间和当前时间(要求当前时间的显示每隔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.LengthpictImage.Image = Image.FromFile(myImags[(index++) % myImags.Length]);}}
}

实验结果:
在这里插入图片描述在这里插入图片描述在这里插入图片描述

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

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

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

(2)声明结构体存放用户信息:
在这里插入图片描述在这里插入图片描述

源代码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{/// /// 应用程序的主入口点。/// [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;}}
}

实验结果:
在这里插入图片描述在这里插入图片描述

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{/// /// 应用程序的主入口点。/// [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;//返回状态 }}

实验结果:
在这里插入图片描述

🔥如果感觉博主的文章还不错的话,👍点赞👍 + 👀关注👀 + 🤏收藏🤏

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...