C#程序设计习题Week_9(西安交通大学)
所有题目解答源文件,可以在我的主页中资源里面下载(审核需要一点时间),我会设置成免费,但是7天以后csdn可以自定义价格,望周知。
也可以在github上下载
一、
完成一个小学生加减乘法训练软件。具体要求如下:
-
界面自行设计。
-
程序运行时,随机生成5道题目的运算,加、减、乘(即随机处理)。
-
当用户做完题目提交时,若用户答案正确,则在用户给出的答案后标记绿色(例如,给让文本框显示绿色),否则红色标记。
-
显示用户的总得分,每道题20分。
(下图仅供参考)
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 Week_9_q1
{
public partial class Form1 : Form
{
private int fin_score;
private Color c_r = Color.Red;
private Color c_g = Color.Green;
private Color c_w = Color.White;
private string[] opr = new string[] {"+","-","*","/" };
private string[] s_q = new string[5];
private int[] ans_all = new int[5];
private Random r_n = new Random();
public Form1()
{
InitializeComponent();
}
private void textBox6_TextChanged(object sender, EventArgs e)
{
}
private void textBox5_TextChanged(object sender, EventArgs e)
{
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
}
private void textBox8_TextChanged(object sender, EventArgs e)
{
}
private void Set_q_Click(object sender, EventArgs e)
{
for(int i = 0; i < 5; i++)
{
fin_score = 0;
a1.Clear();
a2.Clear();
a3.Clear();
a4.Clear();
a5.Clear();
Score.Clear();
int[] op_num =new int[] { r_n.Next(0, 4) ,r_n.Next(0,100),r_n.Next(0,100)};
s_q[i] = Convert.ToString(op_num[1]) + opr[op_num[0]] + Convert.ToString(op_num[2]);
if (op_num[0] == 0)
{
ans_all[i] = op_num[1] + op_num[2];
}
else if (op_num[0] == 1)
{
ans_all[i] = op_num[1] - op_num[2];
}
else if (op_num[0] == 2)
{
ans_all[i] = op_num[1] * op_num[2];
}
else
{
ans_all[i] =op_num[1] / op_num[2];
}
q1.Text = s_q[0];
q2.Text = s_q[1];
q3.Text = s_q[2];
q4.Text = s_q[3];
q5.Text = s_q[4];
}
}
private void Score_q_Click(object sender, EventArgs e)
{
if (a1.Text == Convert.ToString(ans_all[0]))
{
a1.BackColor = c_g;
fin_score += 20;
}
else
{
a1.BackColor = c_r;
}
if (a2.Text == Convert.ToString(ans_all[1]))
{
a2.BackColor = c_g;
fin_score += 20;
}
else
{
a2.BackColor = c_r;
}
if (a3.Text == Convert.ToString(ans_all[2]))
{
a3.BackColor = c_g;
fin_score += 20;
}
else
{
a3.BackColor = c_r;
}
if (a4.Text == Convert.ToString(ans_all[3]))
{
a4.BackColor = c_g;
fin_score += 20;
}
else
{
a4.BackColor = c_r;
}
if (a5.Text == Convert.ToString(ans_all[4]))
{
a5.BackColor = c_g;
fin_score += 20;
}
else
{
a5.BackColor = c_r;
}
Score.Text =Convert.ToString(fin_score);
}
private void q1_TextChanged(object sender, EventArgs e)
{
}
}
}
运行结果图:
二、有红黄绿三盏灯。初始状态如下图:
当键盘输入大写字母S时,三种灯的颜色循环显示。
当红灯亮时,其它两盏灯灰色;当黄灯亮时,其它两盏灯灰色;当绿灯亮时,其它两盏灯灰色。
当键盘输入大写字母E时,循环显色暂停。
选择一种控件,来显示此时按下的“键”。
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 Week_9_q2
{
public partial class Form1 : Form
{
private string k_d="Q";
private int i = 0;
private Color c_r = Color.Red;
private Color c_g = Color.Green;
private Color c_y = Color.Yellow;
private Color c_gy = Color.Gray;
private void c_change(int i)
{
if (i % 3 == 0)
{
c1.BackColor = c_r;
c2.BackColor = c_gy;
c3.BackColor = c_gy;
}
else if (i % 3 == 1)
{
c1.BackColor = c_gy;
c2.BackColor = c_y;
c3.BackColor = c_gy;
}
else
{
c1.BackColor = c_gy;
c2.BackColor = c_gy;
c3.BackColor = c_g;
}
}
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
i += 1;
c_change(i);
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void c1_TextChanged(object sender, EventArgs e)
{
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
}
private void c1_KeyPress(object sender, KeyPressEventArgs e)
{
}
private void c1_KeyDown(object sender, KeyEventArgs e)
{
k_d = Convert.ToString(e.KeyCode);
k_p.Text = k_d;
if (k_d == "S")
{
timer1.Enabled = true;
}
else if (k_d == "E")
{
timer1.Enabled = false;
}
}
}
}
运行结果图:
三、两种方式实现选课列表窗体(课程名称不限)。
1.listbox控件。
在“添加课程”文本框里的输入,点击添加按钮,添加进“已选课列表listbox”。
在“已选课列表listbox”中选中1门或多门课程,课程名称将显示在"所选的课程"的文本框里。
点击"删除"后,已选列表中将移除选中的1门或多门课程。
2. combobox控件
在“添加课程”文本框里的输入,点击添加按钮,添加进“已选课列表combobox”。
在“已选课列表combobox”中选中1门课程,课程名称将显示在"所选的课程"的文本框里。
点击"删除"后,已选列表中将移除选中的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 Week9_q3_fin_
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
listBox1.Items.Add(Add_subject.Text);
Add_subject.Text = "";
}
private void listBox1_SelectedValueChanged(object sender, EventArgs e)
{
if (listBox1.SelectedItem != null)
{
Del_subject.Items.Add(listBox1.SelectedItem);
}
}
private void button2_Click(object sender, EventArgs e)
{
for(int i = 0; i < Del_subject.Items.Count; i++)
{
listBox1.Items.Remove(Del_subject.Items[i]);
}
Del_subject.Items.Clear();
}
private void Add_combob_Click(object sender, EventArgs e)
{
comboBox1.Items.Add(Add_combo.Text);
Add_combo.Text = "";
}
private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
{
if (comboBox1.SelectedItem != null)
{
del_combo.Text = comboBox1.SelectedItem.ToString();
}
}
private void del_combob_Click(object sender, EventArgs e)
{
comboBox1.Items.Remove(del_combo.Text);
del_combo.Text = "";
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
}
}
运行结果为:
四、
编程实现如下图的用户注册界面。
点击提交按钮:
若密码和确认密码不相同,显示密码不同。
若邮箱不合规范(上网查邮箱名称的规范,最简单的是检查是否有@符)。
若都正确,出现MessageBox框,显示如下内容:
该注册成功!用户名为XXX(界面上输入的),年龄为XX,邮箱为XX,性别为XX,爱好有XX、XX。
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 Week9_q4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void checkBox3_CheckedChanged(object sender, EventArgs e)
{
}
private bool vagri(char ori,string pan)
{
bool ipp = true;
for(int i = 0; i < pan.Length; i++)
{
if (ori == pan[i])
{
return false;
}
}
return ipp;
}
private void button1_Click(object sender, EventArgs e)
{
string gender;
string hobby = "";
if (music.Checked == true)
{
hobby += "音乐";
}
if (singing.Checked == true)
{
hobby += "唱歌";
}
if (gaming.Checked == true)
{
hobby += "游戏 ";
}
if (reading.Checked == true)
{
hobby += "读书";
}
if (male.Checked == true)
{
female.Checked = false;
gender = "男";
}
else
{
female.Checked = true;
gender = "女";
}
if (password.Text != password_1.Text)
{
MessageBox.Show("密码不同!");
}
else if (vagri('@', emial.Text))
{
MessageBox.Show("邮箱不合法!");
}
else
{
string print = string.Format("注册成功!\n\t用户名为{0},年龄为{1},性别为{2},爱好有{3}", username.Text, age.Value, gender, hobby);
MessageBox.Show(print);
}
}
private void username_TextChanged(object sender, EventArgs e)
{
}
}
}
运行结果为:
有任何问题欢迎留言,第一次学习c#图形界面编程,有不足之处欢迎指正。