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

前言
👏作者简介:我是笑霸final,一名热爱技术的在校学生。
📝个人主页:个人主页1 || 笑霸final的主页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.Length
            pictImage.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
    {
        /// <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;
        }
    }
}

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

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;//返回状态 

    }
    
}

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

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

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值