C语言点名程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

设计介绍:
本系统能从数据库中调取学生信息数据库,对采取两种方式进行点名。

1、能根据输入的随机数产生一定数量的随机学生,然后进行一一点名。

2、能根据输入的扫描频率进行动态的扫描,但按下暂停按钮时会停在某个学生的信息上,
此时对该学生进行点名。

当点名后,没有学生答应时,可按加入缺课记录按钮。

当系统提示添加成功,则添加成功。

代码解释:
using System;
using System.Collections.Generic;
using ponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace dianming
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.dataGridView1.DataSource = getDataTable("dbo.stuinfo");
changewith();
}
public void changewith()//当选择不同学生时,左侧的信息栏相应的变化。

{
this.txtnum.Text = this.dataGridView1[0,
dataGridView1.CurrentCell.RowIndex].Value.ToString();
this.textname.Text = this.dataGridView1[1,
dataGridView1.CurrentCell.RowIndex].Value.ToString();
this.txtage.Text = this.dataGridView1[2,
dataGridView1.CurrentCell.RowIndex].Value.ToString();
this.txtgrade.Text = this.dataGridView1[3,
dataGridView1.CurrentCell.RowIndex].Value.ToString();
this.txtsex.Text = this.dataGridView1[4,
dataGridView1.CurrentCell.RowIndex].Value.ToString();
this.txtmajor.Text = this.dataGridView1[5,
dataGridView1.CurrentCell.RowIndex].Value.ToString();
this.txtcount.Text = this.dataGridView1[6,
dataGridView1.CurrentCell.RowIndex].Value.ToString();
this.txtphone.Text = this.dataGridView1[7,
dataGridView1.CurrentCell.RowIndex].Value.ToString();
}
public static string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=点名数据库;Integrated Security=True";//数据库连接字符串
public static bool ExecuteSQL(string sql)//用于执行传入的sql语句返回true则表示成功
{
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(sql, con);
try
{
con.Open();
cmd.ExecuteNonQuery();
return true;
}
catch
{
return false;
}
finally
{
con.Close();
con.Dispose();
cmd.Dispose();
}
}
public static DataSet GetDataSet(string sql)//获取数据集
{
DataSet ds = new DataSet();
SqlConnection con = new SqlConnection(connectionString);
SqlDataAdapter da = new SqlDataAdapter(sql, con);
try
{
con.Open();
da.Fill(ds);
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}
finally
{
con.Close();
con.Dispose();
da.Dispose();
}
return ds;
}
public static DataTable getDataTable(string str)//返回table类型的对象
{
string sql = "select * from " + str;
DataSet ds = new DataSet();
SqlConnection con = new SqlConnection(connectionString);
SqlDataAdapter da = new SqlDataAdapter(sql, con);
try
{
con.Open();
da.Fill(ds);
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}
finally
{
con.Close();
con.Dispose();
da.Dispose();
}
return ds.Tables[0];
}
private void button3_Click(object sender, EventArgs e)//开始按钮触发的事件
{
if(this.timer .Text!=null&&this.timer .Text !="")
this.timer1.Interval =Convert .ToInt32(this.timer.Text);
this.timer1.Enabled = true;
}
private void button4_Click(object sender, EventArgs e)//暂停按钮触发的事件
{
this.timer1.Enabled = false;
}
static public int[] GetNoRepeatRandNumber(int len)//获取len个随机数,以数组的形式
//返回
{
int[] no = new int[len];
for (int i = 0; i < len; i++)
{
no[i] = i;
}
Random rd = new Random();
for (int i = len - 1; i >= 0; i--)
{
int temp = rd.Next(i + 1);
int t = no[temp];
no[temp] = no[i];
no[i] = t;
}
return no;
}
private void btnOK_Click(object sender, EventArgs e)//确定按钮触发的事件{
Random rand = new Random();
int[] a = GetNoRepeatRandNumber(50);
string[] num=new string[Convert.ToInt32(ranknum.Text.Trim ())];
for (int i = 0; i < Convert.ToInt32(ranknum.Text.Trim()); i++)
{
if (a[i] / 10 != 0)
num[i] = string.Format("0890740{0}", a[i]);
else num[i] = string.Format("08907400{0}", a[i]);
}
string numrank = "";
foreach (string s in num)
{
numrank += s+",";
}
numrank += "089074000";
string sql = @"select * from dbo.stuinfo where 学号in
("+numrank+")";
DataSet ds = GetDataSet(sql);
this.dataGridView1.DataSource = ds.Tables[0];
}
private void timer1_Tick(object sender, EventArgs e)//timer控件触发的循环事件{
int a = dataGridView1.RowCount-1;
if (dataGridView1.CurrentCell.RowIndex < 0)
dataGridView1.CurrentCell = dataGridView1[0, 0];
int f = dataGridView1.CurrentCell.RowIndex;
dataGridView1.CurrentCell = dataGridView1[0, (f)%a+1];
changewith();
}
private void btnadd_Click(object sender, EventArgs e)//添加缺勤记录按钮触发的事件
{
string name = this.textname.Text.Trim();
string num = this.txtnum.Text.Trim();
string count = this.txtcount.Text.Trim();
int newcount = Convert.ToInt32(count) + 1;
string sql = @"insert into dbo.queqinxinxi
values('"+num+"', '"+
name +"', "+
"getdate())";
if (ExecuteSQL(sql))
{
MessageBox.Show("添加缺勤记录成功!", "提示");
}
else
{
MessageBox.Show("添加缺勤记录失败!", "提示
",MessageBoxButtons .OK,MessageBoxIcon.Error);
}
}
private search Search;//缺勤窗体,此处不列出其代码了。

private void btnsearch_Click(object sender, EventArgs e)/查看缺勤记录按钮触发的事件
{
if(Search ==null)
Search = new search();
Search.Show();
}
private void btnshow_Click(object sender, EventArgs e)//显示所有学生按钮触发的事件
{
dataGridView1.DataSource = getDataTable("dbo.stuinfo");
}
}
}
程序设计心得:
此次做这个点名系统,让我收获了一些东西。

可由于时间的仓促,还是做的不够好。

其中产生随机数方法运行好像不是很理想。

基本信息的显示部分也不够完善。

可我相信通过不断努力,我会继续的。

不会因为报告的上交而停止前进的步伐。

相关文档
最新文档