实验六:综合实验:实现一个小型管理信息系统 10学时
熟练掌握Visual C++、C#、Qt、Java、PHP或Python等访问数据库的方法,设计和实现学生通讯录或学生选课或类似的一个小型管理信息系统。要求具有数据的增加、删除、修改和查询的基本功能,并尽可能提供较多的查询功能,用户界面要友好。可选内容:数据库中存放100万条记录,测试访问时间;如效率较低,提供优化方案。
本文主要解决这个问题。
值得注意的是,本文所提供的方法只能保证该项目的初步完成,即仅仅能够通过课设验收。
首先本文所采用的方法是C#窗体(vs2017)+sqlserver2008.
当然其他数据库或者c#编译器也可以,但是因为我是这么做的所以就这么分享。
首先对数据库的处理。数据库里的表自己先填好了·。主要讲数据库链接C#。
在你的电脑里找到odbc,odbc设置在网上也有很多,这里简述一下。
在这个地方添加你要用的数据库源。
点进去之后要注意的是
圈出来的这个地方要填的是在你sqlserver2008登录的地方的那个服务器名称
就是这个。在sqlserver中打开一个表,可以直接复制
剩下的名称和描述随便填就行。
接下来这么设置
当然网络验证可不可以我也不知道,但是因为我看到的教程基本都是让你用身份验证所以我也用的是身份验证
像这么填就可以,你的密码要记住,以后要用。
这个地方倒是无所谓,把你要用到表勾上就行,不勾也行。剩下一路点进去就行。
最后测试成功之后是这样,然后就可以开始在vs2017上操作了。
我的vs是这么设置的。 如果觉得报错没法解决可以看看这个设置是否相同。
新建一个窗体文件
是这个样子的,现在要开始在窗体里面加东西了。在编译器的最右边找到工具栏。
就是这里。
我这里主要用的就是这三个,做的很简陋,其他功能需要你们自己学习窗体的用法完善。
那么该连结数据库了。
新建一个button就是按钮。
双击点进编辑界面。
如果双击点不进去或者直接跳到program.cs这种。保证你的按钮是选中状态,就是点一下。然后在最右边找到属性。
点到这个小闪电里,然后操作一下就行。
这是按钮的编辑模式,这个按钮是来链接数据库的。
private void button1_Click(object sender, EventArgs e)
{
//编写数据库连接串
string connStr = "Data source=.;Initial Catalog=student;User ID=sa;Password=123456";
//这个地方看到了记得改,别又报错。听我说怎么改
//这个data source就跟着放个点,如果会报错就要设置一个ip,但是我忘了是什么东西,所以等报错再自己百度吧。
//这个catalog后面就是你要链接的表
//userid就是你的账号名字,一般都是默认的sa,如果你改了也跟着换
//password就是之前我让你的记得密码,同样也是你sqlserver登录时候的密码,如果身份验证不对自己去sqlserver里面改密码,网上有教。
//创建SqlConnection的实例
SqlConnection conn = null;
try
{
conn = new SqlConnection(connStr);
//打开数据库连接
conn.Open();
MessageBox.Show("数据库连接成功!");
}
catch (Exception ex)
{
MessageBox.Show("数据库连接失败!" + ex.Message);
}
finally
{
if (conn != null)
{
//关闭数据库连接
conn.Close();
}
}
}
现在代码写好了,我们该去做另一件事。
在你的最左边有个数据源
点开是这样。右键
选第一个数据库挨着点进去就行。
新建链接这里找你的表。
身份验证选sqlserver身份验证然后把你的账号密码搞好,服务器名称就是我之前说的那个。
此时就会这样
下面这个就是你要链接的表,连哪个选哪个。
这是我以前建好的
然后有个地方要注意
我圈出来的地方的白框是给你打钩的。一定把你的表勾上,你有别的东西也勾上,随手全选就行。
此时你在旁边就能看到你的数据源了。
还有一个添加数据源的办法。
在这个地方,点进去就行。
有了个之后,在窗体界面跑起来之后点一下你的按钮,就会有
然后就是显示表的内容。
再建一个按钮,我就不截图演示了。
然后在显示表的按钮里编辑
private void button3_Click(object sender, EventArgs e)
{
{
string str = @"Data Source=.;Initial catalog=student;integrated Security=True";
SqlConnection conn = new SqlConnection(str);
conn.Open();
SqlDataAdapter sqlDap = new SqlDataAdapter("Select * from student", conn);
//这里是要注意的,括号里的内容就是sql语句,你的表叫什么就select *from什么,你想怎么改就怎么改。
DataSet dds = new DataSet();
sqlDap.Fill(dds);
DataTable _table = dds.Tables[0];
int count = _table.Rows.Count;
dataGridView1.DataSource = _table;
//这里也是要注意的,一会儿会说,先把这个datagridview整个眼熟。
conn.Close();
//dataGridView1.DataBind();//在网上找的方法中有这一句,在这里这一句可以不要,不然报错
conn.Close();
}
}
显示按钮做好之后就要整显示的地方了。
在你的最右边找工具箱的控件,找到
这个一定一定不要进编辑模式,不要动他,一旦动了发生报错之后要删除的东西就很麻烦,我不想讲,所以不要碰。
看到红圈这个吗,点开红圈的三角。
点开之后是这样
该干嘛不用我再说了吧。
这些地方就按我之前说的照着操作就行。
搞完就会有这个跳出来。点上就行。招子放亮点。
然后点编辑列。
你的表长啥样你的这个东西就咋搞,表里几个列就添加几个列。在左下角选添加列。我以随便一张表为例。
一直这样操作直到搞完。
搞完之后是这样。
接下来找数据属性,就是这里。
圈出来的地方,你的表里面这一列叫什么就改成什么。
比如我就该这么改。顺便说一下,左边框里的名字是最终显示出来的名字,可以随便改,但是数据源那里一定要照着表的列名写。
然后剩下的就是重复操作,我就不再演示了。
如果一个窗体有多张表,记得把表名改了。
比如
这是学生表和显示学生表的按钮,下面对应的显示表是datagridview1,如果同一个窗体有别的显示表。
例如
我有3张表
那么每个显示按钮就要改表名
这里就是显示课程表,其他也一样。
接着是增删改查的实现。
你先听我说好,因为当时我写的时候时间紧迫,所以所有功能都挤在了一个窗体上,如果你有多的时间去实现窗口跳转就尽量去改,完善一下,这个东西只是两小时搞出来的劣势半成品。
首先是增加信息的按钮。
private void button4_Click(object sender, EventArgs e)
{
{
string Student_No = textBox4.Text;
string Student_Name = textBox5.Text;
string Student_Sex = textBox6.Text;
string Student_Age = textBox7.Text;
string Student_Sdept = textBox8.Text;
string str = @"Data Source=.;Initial catalog=student;integrated Security=True";
SqlConnection conn = new SqlConnection(str);
conn.Open();
SqlCommand cmd = conn.CreateCommand();//利用链接创建Command,执行SQL语句
cmd.CommandText = "insert into Student values('" + Student_No + "','" + Student_Name + "','" + Student_Sex + "','" + Student_Age + "','" + Student_Sdept + "')";
int count = cmd.ExecuteNonQuery();//将返回值赋值给count 判断执行是否成功,ExecuteNonQuery的返回值为受影响的行数
if (count > 0)
{
MessageBox.Show("Success!");
}
else
MessageBox.Show("Error!");
}
}
我来解释一下这个代码,告诉你们怎么改成自己需要的样子。
我圈出来这个地方,你想添加几个信息,就搞几个。比如我这个代码里有5个列要改,就搞五个string,如果你是3个4个或者别的改了就行,后面的text是控件里的,我下一个再说。
这个链接表我说过了这里就不再说了,记得改表名。
这里是sql的插入语句,按照表的列顺序来就好。
现在来说text控件。
在这个地方。就是几个框拿来得到输入的数据
拖出来是这样的。
一定要注意的是,不要在编辑模式往里面加任何他的代码,只需要搞清楚他的名字。
text1、txet2……这种名字要对应好。别输的时候搞错了。
我都写累了。
这是删除的代码。
private void button6_Click(object sender, EventArgs e)
{
{
string str = @"Data Source=.;Initial catalog=student;integrated Security=True";
SqlConnection conn = new SqlConnection(str);
conn.Open();
string Student_No = textBox9.Text;
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "delete from Student where sno=" + Student_No;
int count = cmd.ExecuteNonQuery();
if (count > 0)
MessageBox.Show("Success!");
else
MessageBox.Show("Error!");
}
}
这个代码里面要改的地方和增加的大同小异,我不想再说了,应该很容易看懂。
依旧是我圈出来的这两个地方。自己改好。
修改的代码
private void button7_Click(object sender, EventArgs e)
{
{
string Student_No = textBox4.Text;
string Student_Name = textBox5.Text;
string Student_Sex = textBox6.Text;
string Student_Age = textBox7.Text;
string Student_Sdept = textBox8.Text;
string str = @"Data Source=.;Initial catalog=student;integrated Security=True";
SqlConnection conn = new SqlConnection(str);
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "update Student set sdept='" + Student_Sdept+ "',sname='" + Student_Name + "',ssex='" + Student_Sex + "',sage='" + Student_Age + "' where sno=" + Student_No;
int count = cmd.ExecuteNonQuery();
if (count > 0)
MessageBox.Show("Success!");
else
MessageBox.Show("Error!");
}
}
记得自己改。这个sql语句有点不一样,要认真看明白。
你们可能注意到了,我的增删改查都是对同一张表的操作,这就是我说的这个项目为什么是劣质半成品。全部的功能需要你们自己去了解窗体跳转的知识然后自己依葫芦画瓢写。
当然,你完全照着我这个东西来,最后也能过,就是分不高。但是我想如果是真正有本事的人也不会完全照着我的这个抄。我更希望大伙自己用java或者python搞定这个课设。
当然我的水平很差,我可能以己度人了。但是我也知道每一届一定也有像我这样水平差的不行的学生不知道该怎么办。
因为我们就是这样,老师也一点不讲。但是我还是混出来了。所以我把这个保命的小东西写出来放在这里,以后要是哪个可怜蛋能看到我这个东西,至少能不用愁数据库原理的课设、
我在做这个课设的时候抄的是这个博客的代码,增删改查等功能。
连结数据库代码则来自于c语言中文网。