数据库应用课程设计.docx
- 文档编号:8837550
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:27
- 大小:379.55KB
数据库应用课程设计.docx
《数据库应用课程设计.docx》由会员分享,可在线阅读,更多相关《数据库应用课程设计.docx(27页珍藏版)》请在冰豆网上搜索。
数据库应用课程设计
学生姓名
专业班级
学号
题目
班级书库管理系统
指导教师
同组姓名
主要内容
班级书库管理系统主要实现个人书籍的管理,针对班级藏书太多,不容易集中管理分类的需求。
实现的功能如下:
(1)实现个人系统的登录。
(2)实现书籍的显示,入库添加存储,查询,删除,统计,出借查询功能。
(3)实现书库管理员的添加,删除,显示功能。
(4)系统的退出。
任务要求
综合运用所学的数据库基本知识,采用一种前台开发工具,并能通过查阅相关文献材料,独立完成该课题的设计开发工作。
要求根据本课题设计出合理的数据结构,并实现书籍综合管理模块、管理员管理模块等其他功能模块。
开发工具自选。
1需求分析
现代科学技术突飞猛进的今天,各种电子数码化产品如雨后春笋般被发明制造出来,其中就关于书籍的产品如可携带式电子书等等。
但是相比于体积上更小,重量上更轻,数量上更多的电子式书籍来说,人们还是喜爱相对比较传统的纸制书籍。
这就出现了一个问题,当一个书籍收藏家或有太多书籍的人想对如此众多的书籍进行管理时该怎么办?
本次课程设计就是针对这个问题进行开发设计。
针对上述问题,我设计了一个‘班级书库管理系统’,目的是为了方便用户管理书籍。
该系统主要包含了2个模块,书籍综合管理模块和管理员管理模块,书籍综合管理模块的功能包括:
(1)入库,添加书籍加入数据库的书籍表。
(2)删除,从书库中删除不存在,有错误的书籍。
(3)显示,在操作界面的表中显示所有已有的书籍。
(4)查询,通过关键字查找书库中的书籍。
(5)出借查询,通过出借号查询出借的书籍和出借人
管理员操作模块的功能包括:
(1)添加,添加管理员,并设置管理类别。
(2)删除,删除已有的管理员。
(3)修改,修改管理员的资料,包括用户名,密码,类别。
(4)显示,使用几个按钮在文本框中显示用户。
此外,本系统还应包括一个登录模块和用户表连接。
2概要设计
2.1数据库中的表。
(1)BooK表,用来存储书籍信息。
其实体型为:
Book(BookName,BookNum,BookType,BookPub,BookBro);
其中,BookNum(书号)为主键,其余的分别是BookName(书名),BookNum(书类),BookPub(出版社),BooKBro(是否借出)。
以下是Book表在数据库中的定义,包括各属性的数据类型和长度等。
表2-1Book表
列名
数据类型
长度
允许空
主键
BookName
Nvarchar
50
否
是
BookNum
Int
4
是
否
BookType
Nvarchar
50
是
否
BookPub
Nvarchar
50
是
否
BookBro
Nvarchar
50
是
否
(2)BookBro表,用来存储出借书籍数据,其实体型为:
BookBro(BookName,BroName,BroNum,PhoneNum,BookNum);
其中,BroNum(出借号)为主键,BookName(书名),BookNum(书号),,BroName(出借人),PhoneNum(出借人电话号码)。
以下是BookBro表在数据库中的定义。
表2-2,BookBro表
列名
数据类型
长度
允许空
主键
BroNum
Int
4
否
是
BookName
Nvarchar
50
是
否
PhoneNum
Nvarchar
50
是
否
BookNum
Int
4
是
否
BroName
Nvarchar
50
是
否
(3)User表,用来存储用户信息,其实体型为:
User(UserID,UserPassword,UserSort);
其中UserID(用户名)为主键,UserPassword(用户密码),UserSort(用户类型)
以下是User表在数据库中的定义。
表3-3,User表
列名
数据类型
长度
允许空
主键
UserID
Char
10
是
否
UserPassword
Char
10
否
是
UserSort
Char
10
否
是
2.2程序流程图和各模块功能分布:
图2-1,程序流程图和各功能分部图
图2-2,E-R图
3运行环境
软件:
WindowsXP操作系统。
硬件:
微机,CPUP42.8HZ。
1G内存,80G硬盘和128M显卡。
4开发工具和编程语言
开发工具:
visual,SQL2005。
编程语言:
面向数据库C#语言。
5详细设计
(1)登录界面设计:
图5-1,登录界面
登录界面实现代码:
namespacelibrary.cs
{
publicpartialclassLoginForm:
Form
{
publicLoginForm()
{
InitializeComponent();//窗体代码设计必备
}
publicvoidErrorHandle(System.ExceptionE)
{
MessageBox.Show(E.ToString());//调用异常处理
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
this.textUserID.Text="";
this.textUserPassword.Text="";//清空
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
if(UserCheck(this.textUserID.Text,this.textUserPassword.Text)=="system")//调用检测函数并识别
{
this.Visible=false;
Formmainform=newMainForm();//调用主窗体
mainform.ShowDialog();//调用显示函数
this.Close();//关掉正在打开的界面
}
elseif(UserCheck(this.textUserID.Text,this.textUserPassword.Text)=="user")
{
this.Visible=false;
Formmainform=newMainForm();
mainform.ShowDialog();
this.Close();
}
else
{
if(MessageBox.Show("输入用户密码有误,是否重新登陆","输入有误",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK)//输入错误,调用窗体并提示错误
{
this.textUserID.Clear();
this.textUserPassword.Clear();}
else
{
this.Close();
}
}
}
stringUserCheck(stringusername,stringuserpassword)//判断
{
stringtxtSql,usersort;
usersort="nobody";
txtSql="SELECT*FROM[user]";
SqlCommandcheckuser=newSqlCommand(txtSql,this.sqlConnection1);
try
{
this.sqlConnection1.Open();//打开数据库链接
SqlDataReadersqlreader=checkuser.ExecuteReader();
while(sqlreader.Read())
{
if((sqlreader[0].ToString().Trim()==username)&&(sqlreader[1].ToString().Trim()==userpassword))
//输入数据与数据库中的数据进行比较判断
{
usersort=sqlreader[2].ToString().Trim();
break;
}
}
}
catch(Exceptione)
{
MessageBox.Show(e.ToString());
}
sqlConnection1.Close();
returnusersort;
}
(2)主控制窗体界面:
图5-2,主控制窗体
主控制窗体代码:
namespacelibrary.cs
{
publicpartialclassMainForm:
Form
{
publicMainForm()
{
InitializeComponent();
}
privatevoidbutton4_Click(objectsender,EventArgse)
{
this.Close();//退出系统
}
privatevoidbutton3_Click(objectsender,EventArgse)
{
this.Visible=false;
Formmainform=newUser();
mainform.ShowDialog();//打开管理员管理模块
this.Close();
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
this.Visible=false;
FormXinshu=newxinshu();
Xinshu.ShowDialog();//打开书籍综合管理模块
this.Close();
}
}
}
(3)书籍综合管理模块窗体设计:
图5-3,综合功能窗口
图5-4,出借查询窗口
书籍综合管理模块代码实现:
namespacelibrary.cs
{
publicpartialclassxinshu:
Form
{
publicxinshu()
{
InitializeComponent();
}
privatevoidbtnClear_Click(objectsender,EventArgse)
{
this.textName.Text="";//清空
this.textNum.Text="";
}
privatevoidbtnBack_Click(objectsender,EventArgse)
{
this.Visible=false;
Formmainform=newMainForm();
mainform.ShowDialog();//返回主窗体
this.Close();
}
privatevoidbtnAdd_Click(objectsender,EventArgse)
{//添加新数据进入Book表
SqlConnectioncon=newSqlConnection("server=(local);uid=sa;pwd=123;database=shuku");
con.Open();
SqlCommandcmd=newSqlCommand("insertintobookvalues('"+textName.Text.Trim()+"','"+textNum.Text.Trim()+"','"+textType.Text.Trim()+"','"+textPub.Text.Trim()+"','"+textBro.Text.Trim()+"')",con);
cmd.ExecuteNonQuery();
MessageBox.Show("成功入库!
");
printf();//新数据入库后刷新
}
privatevoidxinshu_Load(objectsender,EventArgse)
{
printf();//调用显示函数
}
privatevoidprintf()//显示函数
{
this.sqlDataAdapter1.Fill(this.dataSetBook);
this.dataGrid1.DataSource=this.dataSetBook.Tables[0].DefaultView;
}
privatevoidbtnCheck_Click(objectsender,EventArgse)
{//查询按钮功能实现
SqlConnectionconn=newSqlConnection("server=(local);database=shuku;Trusted_Connection=yes;");
SqlCommandcom=newSqlCommand();
conn.Open();
com.Connection=conn;
com.CommandType=CommandType.Text;
if(textName2.Text!
=null)
{
com.Parameters.Add("@书号",SqlDbType.Int);
com.Parameters["@书号"].Value=textName2.Text;//取在文本框中输入的数据值
com.CommandText="select*frombookwhereBookNum=@书号";//对比
DataSetdataSet2=newDataSet();
SqlDataAdapterqlcom2=newSqlDataAdapter(com);
qlcom2.Fill(dataSet2,"stu1");
dataGrid2.DataSource=
dataSet2.Tables["stu1"].DefaultView;//把查询结果放入第二DataGrid
}
conn.Close();//关闭连接
}
privatevoidbtnClear2_Click(objectsender,EventArgse)
{
this.textName2.Text="";//清空
}
privatevoidbtnDelete_Click(objectsender,EventArgse)
{//删除界面代码
SqlConnectionconn=newSqlConnection("server=(local);database=shuku;Trusted_Connection=yes;");
SqlCommandcom=newSqlCommand();
conn.Open();
com.Connection=conn;
com.CommandType=CommandType.Text;
com.Parameters.Add("@书号",SqlDbType.Int);
com.Parameters["@书号"].Value=textName2.Text;//取输入值
com.CommandText="deletefrombookwhereBookNum=@书号";//删除关键字相同的键值
com.ExecuteNonQuery();
MessageBox.Show("删除成功!
");
com.CommandText=("select*frombook");
com.CommandType=CommandType.Text;
SqlDataAdapterAdapter=newSqlDataAdapter(com);
DataTablede=newDataTable();
Adapter.Fill(de);
this.dataGrid1.DataSource=de;//显示结果在显示窗体1
}
privatevoidbtncount_Click(objectsender,EventArgse)
{//统计按钮功能实现
intdatarows;
SqlConnectionconn=newSqlConnection("server=(local);database=shuku;Trusted_Connection=yes;"); //打开数据库
SqlCommandcom=newSqlCommand(); //SQL命令集
conn.Open();
com.Connection=conn;
com.CommandType=CommandType.Text;
com.CommandText="selectBookNamefromBook";
SqlDataAdapterdapter=newSqlDataAdapter(com); //适配器
DataSetcon=newDataSet();//容器
datarows=sqlDataAdapter1.Fill(con);
MessageBox.Show("总共有"+datarows.ToString()+"本书");
}
privatevoidbtnBro_Click(objectsender,EventArgse)
{//打开出借查询界面
this.Visible=false;
Formformbro=newFormBro();
formbro.ShowDialog();
this.Close();
}
}
}
出借查询代码实现
privatevoidbutOK_Click(objectsender,EventArgse)
{//通过出借号查询并显示
SqlConnectionconn=newSqlConnection("server=(local);database=shuku;Trusted_Connection=yes;");//打开数据库链接
SqlCommandcom=newSqlCommand();
conn.Open();
com.Connection=conn;
com.CommandType=CommandType.Text;
com.Parameters.Add("@借出号",SqlDbType.Int);
com.Parameters["@借出号"].Value=BroNum.Text;
com.CommandText="select*frombookbrowhereBroNum=@借出号";
DataSetdataSet2=newDataSet();
SqlDataAdapterqlcom2=newSqlDataAdapter(com);
qlcom2.Fill(dataSet2,"stu1");
dataGrid1.DataSource=dataSet2.Tables["stu1"].DefaultView;
conn.Close();
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
this.BroNum.Text="";//清空
}
privatevoidbutton1_Click(objectsender,EventArgse)
{//返回上一级窗体
this.Visible=false;
Formxinshu=newxinshu();
xinshu.ShowDialog();
this.Close();
}
privatevoidbutton3_Click(objectsender,EventArgse)
{//显示所有出借的书籍
SqlConnectionconn=newSqlConnection("server=(local);database=shuku;Trusted_Connection=yes;");
SqlCommandcom=newSqlCommand();
conn.Open();
com.Connection=conn;
com.CommandType=CommandType.Text;
com.CommandText="select*frombookbro";
DataSetdataSet2=newDataSet();
SqlDataAdapterqlcom2=newSqlDataAdapter(com);
qlcom2.Fill(dataSet2,"stu1");
dataGrid1.DataSource=dataSet2.Tables["stu1"].DefaultView;
conn.Close();
}
(5)管理员管理模块界面:
图5-5,管理员管理模块界面
代码实现(在这个模块中手动设置数据连接,用到了VS.net数据库连接控件):
‘上一个’代码:
privatevoidbtnPrevious_Click(objectsender,System.EventArgse)
{
this.BindingContext[this.objDataSetUser1,
"user"].Position-=1;//指针减一
this.ButtonPositonChange();
this.DatasetPostionChange();
}
‘表头’代码:
privatevoidbtnFirst_Click(objectsender,System.EventArgse)
{
this.BindingContext[this.objDataSetUser1,"user"].Position=0;//回到数据集中表头的地址
this.ButtonPositonChange();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 应用 课程设计