学生点名系统.docx
《学生点名系统.docx》由会员分享,可在线阅读,更多相关《学生点名系统.docx(14页珍藏版)》请在冰豆网上搜索。
![学生点名系统.docx](https://file1.bdocx.com/fileroot1/2023-1/3/16bbce93-017a-49ce-8364-8311be885e9c/16bbce93-017a-49ce-8364-8311be885e9c1.gif)
学生点名系统
1设计目的
本软件专门为了老师上课期间点名的便利而设计。
只需要电击鼠标就可以实现对学生点名,方便省时。
此外,本软件中还有对学生的大分与记录,对学生的整体情况进行记录,以及对每次到课情况进行统计,使得课堂上的更多情况能在数据库中得以保存。
可见本软件在目标上是尽量满足用户的需求。
2需求分析
2.1项目背景
在计算机广泛推广的今天,应用计算机已经大大的提高了社会的各方面的效率,而作为学校,社会知识的高度集中区,计算机已经成为一种必需品。
有了计算机,那么我们就应该在方方面面想到用它来提高我们的效率,
对于大学学生的考勤方面,现在越来越现实其重要性,虽然大学生都已经步入成年,但是其自制力还是很不容乐观,很作方面还需要代课老师和学校的监督,但是对于上课点名很占时间,而其效果不好,老师不能对学生每次点名情况都有明确的了解,所以一个可视化的点名系统成为必须。
此外,对于学生上课表现情况,老师可以更其回答问题的质量和次数来进行打分,所以在上课时有一个能够面向学生的点名系统对学生的知识进行提问也称为老师们十分想要的一个系统。
但是虽然软件业发展很快,对于这方面的软件却很少,所以开发点名与提问系统的软件成为一个十分需求的认为。
2.2项目功能
输入学生数据。
对学生点名。
统计3次没到学生记录并将其考试标记设为0。
统计缺席次数少于3次的学生记录并将其考试标记设为
输出两种考试标记的学生记录。
随机查询任意学生信息并输出。
2.3功能实现
模拟日常生活中的点名方式,使用windows应用程序设计主界面实现点名功能,通过对主界面菜单的设计实现其他的功能。
3模块分析及设计
3.1界面设计
3.1.1主界面
单击“点名”按钮开始点名,然后单击“到”或“缺席”按钮实现应答功能。
“文件”菜单的扩展有“学生表”,“考试标记”,“关闭”。
“考试标记”扩展有“缺席少于3次”和“缺席不低于3次”。
以上的菜单分别实现了“点名”以外的其它所有功能。
3.1.2其他界面
以下3个界面中所用到的数据绑定控件均为DataGridView控件
分别实现对不同学生信息的显示功能。
3.2代码设计
3.2.1“点名”按钮代码
privatevoid学生表_Load(objectsender,EventArgse)
{
//TODO:
这行代码将数据加载到表“学生DataSet2.student”中。
您可以根据需要移动或移除它。
this.studentTableAdapter1.Fill(this.学生DataSet2.student);
}
staticstringconStr="server=.;database=学生;integratedsecurity=true";
staticSqlConnectioncon=newSqlConnection(conStr);
staticintkaiShi=0;
privatevoidbutton3_Click(objectsender,EventArgse)
{
kaiShi=1;//开始标记
SqlCommandcmd=con.CreateCommand();
stringselect="select*fromstudent";
cmd.CommandText=select;
con.Open();
SqlDataReaderreader=cmd.ExecuteReader();
reader.Read();
textBox1.Text=reader["学号"].ToString();
textBox2.Text=reader["姓名"].ToString();
reader.Close();
con.Close();
}
3.2.2“到”按钮代码
staticintn=1;//序号每次从1开始
privatevoidbutton1_Click(objectsender,EventArgse)
{
if(kaiShi==1)
{
try
{
n++;
SqlCommandcmd=con.CreateCommand();
stringselect="select*fromstudentwhere序号="+n.ToString();
cmd.CommandText=select;
con.Open();
SqlDataReaderreader=cmd.ExecuteReader();
reader.Read();
textBox1.Text=reader["学号"].ToString();
textBox2.Text=reader["姓名"].ToString();
reader.Close();
con.Close();
}
catch
{
MessageBox.Show("点名结束!
");
}
}
}
3.2.3“缺席”按钮代码
privatevoidbutton2_Click(objectsender,EventArgse)
{
if(kaiShi==1)
{
try
{
////////////////////////////////////
SqlCommandcmd1=con.CreateCommand();
stringselect1="select缺席次数fromstudent1where学号="+textBox1.Text;
cmd1.CommandText=select1;
con.Open();
SqlDataReaderreader1=cmd1.ExecuteReader();
reader1.Read();
intciShu=int.Parse(reader1["缺席次数"].ToString())+1;
reader1.Close();
//con.Close();
if(ciShu<3)
select1="updatestudent1set缺席次数='"+ciShu.ToString()+"',考试标记='1'where学号='"+textBox1.Text+"'";
else
select1="updatestudent1set缺席次数='"+ciShu.ToString()+"',考试标记='0'where学号='"+textBox1.Text+"'";
cmd1.CommandText=select1;
//con.Open();
cmd1.ExecuteNonQuery();
con.Close();
/////////////////////////////////////
n++;
SqlCommandcmd=con.CreateCommand();
stringselect="select*fromstudentwhere序号="+n.ToString();
cmd.CommandText=select;
con.Open();
SqlDataReaderreader=cmd.ExecuteReader();
reader.Read();
textBox1.Text=reader["学号"].ToString();
textBox2.Text=reader["姓名"].ToString();
reader.Close();
con.Close();
}
catch
{
MessageBox.Show("点名结束!
");
}
}
}
3.2.4菜单代码
privatevoid关于ToolStripMenuItem_Click(objectsender,EventArgse)
{
MessageBox.Show("3次没到的学生其考试标记为0,其他的为1");
}
privatevoidtoolStripMenuItem2_Click(objectsender,EventArgse)
{
///////////////////////
Formf=new缺席少于3次();
f.Show();
}
privatevoidtoolStripMenuItem3_Click(objectsender,EventArgse)
{
Formf1=new缺席不低于3次();
f1.Show();
}
privatevoid技术支持ToolStripMenuItem_Click(objectsender,EventArgse)
{
System.Diagnostics.Process.Start("
}
privatevoid关闭ToolStripMenuItem_Click(objectsender,EventArgse)
{
this.Close();
}
privatevoid学生表ToolStripMenuItem_Click(objectsender,EventArgse)
{
Formf=new学生表();
f.Show();
}
3.2.5“添加”按钮代码
privatevoid学生表_Load(objectsender,EventArgse)
{
//TODO:
这行代码将数据加载到表“学生DataSet2.student”中。
您可以根据需要移动或移除它。
this.studentTableAdapter1.Fill(this.学生DataSet2.student);
}
staticstringconString="server=.;database=学生;integratedsecurity=true";
staticSqlConnectionmyCon=newSqlConnection(conString);
privatevoidbutton1_Click(objectsender,EventArgse)
{
ints=1;
SqlCommandcmd=myCon.CreateCommand();
myCon.Open();
stringstr1="select*fromstudentwhere序号=(selectmax(序号)fromstudent)";
cmd.CommandText=str1;
SqlDataReaderreader=cmd.ExecuteReader();
if(reader.Read()==true)
{
s=int.Parse(reader["序号"].ToString());
s++;
}
reader.Close();
myCon.Close();
///////////////////////
if(textBox1.Text==""||textBox2.Text=="")
{
MessageBox.Show("请输入数据!
");
return;
}
stringstr2="insertintostudent(序号,学号,姓名,性别)values('"+s.ToString()+"','"+textBox1.Text+
"','"+textBox2.Text+"','"+comboBox1.SelectedItem.ToString()+"')";
stringstr3="insertintostudent1(学号,缺席次数,考试标记)values('"+textBox1.Text+"','0','1')";
cmd.CommandText=str2;
myCon.Open();
cmd.ExecuteNonQuery();
//MessageBox.Show("添加数据成功!
");
myCon.Close();
cmd.CommandText=str3;
myCon.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("添加数据成功!
");
myCon.Close();
}
3.2.6“查询”按钮代码
privatevoidbutton2_Click(objectsender,EventArgse)
{
try
{
stringstr=null;
SqlCommandcmd=myCon.CreateCommand();
if(textBox1.Text!
="")
str="selectstudent.学号,student.姓名,student.性别,student1.缺席次数fromstudent,student1wherestudent.学号=student1.学号andstudent1.学号='"+textBox1.Text+"'";
elseif(textBox2.Text!
="")
str="selectstudent.学号,student.姓名,student.性别,student1.缺席次数fromstudent,student1wherestudent.学号=student1.学号andstudent.姓名='"+textBox2.Text+"'";
cmd.CommandText=str;
myCon.Open();
SqlDataReaderreader=cmd.ExecuteReader();
if(reader.Read()==true)
{
MessageBox.Show("学号:
"+reader["学号"].ToString()+"\n姓名:
"+reader["姓名"].ToString()+"\n性别:
"+reader["性别"].ToString()+"\n缺席次数:
"+reader["缺席次数"].ToString());
}
}
catch
{
MessageBox.Show("输入有误!
");
}
myCon.Close();
}
3.2.7“考试标记”的登陆代码
//考试标记为0
privatevoid缺席不低于3次_Load(objectsender,EventArgse)
{
stringconStr="server=.;database=学生;integratedsecurity=true";
SqlConnectioncon=newSqlConnection(conStr);
SqlCommandcmd=con.CreateCommand();
stringselect="selectstudent.学号,student.姓名,student.性别,student1.缺席次数fromstudent,student1wherestudent.学号=student1.学号andstudent1.考试标记=0";
cmd.CommandText=select;
con.Open();
cmd.ExecuteNonQuery();
SqlDataAdaptersda=newSqlDataAdapter(cmd);
DataTabledt=newDataTable();
sda.Fill(dt);
dataGridView1.DataSource=dt;
con.Close();
}
//考试标记为1
privatevoid缺席少于3次_Load(objectsender,EventArgse)
{
stringconStr="server=.;database=学生;integratedsecurity=true";
SqlConnectioncon=newSqlConnection(conStr);
SqlCommandcmd=con.CreateCommand();
stringselect="selectstudent.学号,student.姓名,student.性别,student1.缺席次数fromstudent,student1wherestudent.学号=student1.学号andstudent1.考试标记=1";
cmd.CommandText=select;
con.Open();
cmd.ExecuteNonQuery();
SqlDataAdaptersda=newSqlDataAdapter(cmd);
DataTabledt=newDataTable();
sda.Fill(dt);
dataGridView1.DataSource=dt;
con.Close();
}
4数据库设计说明
新建一个“学生”数据库,并在其中新建student和student1两个表(如下图所示)
5制作过程及要点
本次课程设计通过模拟生活中的点名方式,对不同的功能进行各个击破,然后将不同功能组合在一起形成了“学生点名系统”。
为了方便对数据库的存取操作,用了2张表代替了原先的一张表,程序执行时,每录入一个学生信息都会对2张表进行写操作。
为了让点名功能能够自动有序的完成,特意将student表增加了“序号”属性。
6设计总结
我们小组三人在本次试验中充分体会到了团结,合作以及坚持等因素是一件事情成功的关键所在。
首先,在团结方面,我们认为系统编程不是一个人的事情,而且特别苦和累,也是年轻人的事情,所以本软件在开发期间组员之间都要团结,一起讨论解决方案和鼓励对方。
其次一定要抱有一颗合作的心态,我们认为没有合作是做不成事情的。
特别是在和队员讨论问题的时候,一定要耐性的理解对方的思路,经过自己的思考,用于实际之中。
我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。
某个人的离群都可能导致导致整项工作的失败。
实习中只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个工作失败。
团结协作是我们实习成功的一项非常重要的保证。
而这次实习也正好锻炼我们这一点,这也是非常宝贵的。
这次课程设计,我们很快就完成了,这要归功于我们组对此次任务的合理分配。
这次课程设计让我认识到一个人的力量是有限的,组员之间有效的沟通是很重要的。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
对我们而言,知识上的收获重要,精神上的丰收更加可喜。
挫折是一份财富,经历是一份拥有。
这次实习必将成为我人生旅途上一个非常美好的回忆!
7参考资料
《VisualStudio.NET2008开发一册通:
C#3.0从基础到项目实战》李海涛化学工业出版社2010-1-1
《VisualC#开发技术大全》明日科技人民邮电出版社2007-11-01
《VisualC#2008入门经典》(美)JamesFoxall人民邮电出版社2009-06-01
《VisualC#通用范例开发金典》王超,潘杨电子工业出版社2008-6-1