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

使用日期控件,定时器等控件完成“闹钟”程序的基本功能,界面如图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("时间到!");}}}
}
实验结果
使用图片框、定时器、打开文件对话框设计一个图片浏览程序,界面如图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]);}}
}
实验结果:



设计一个图书管理系统(系统功能无需实现),系统使用者包含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;}}
}
实验结果:


创建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;//返回状态 }}
实验结果:

🔥如果感觉博主的文章还不错的话,👍点赞👍 + 👀关注👀 + 🤏收藏🤏
上一篇:实验二 面向对象程序设计