数据库课程设计报告报告报刊订阅管理系统的设计实现分析.docx
《数据库课程设计报告报告报刊订阅管理系统的设计实现分析.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告报告报刊订阅管理系统的设计实现分析.docx(31页珍藏版)》请在冰豆网上搜索。
数据库课程设计报告报告报刊订阅管理系统的设计实现分析
存档资料成绩:
xxxx
课程设计报告书
所属课程名称数据库系统开发教程
题目报刊订阅管理系统的设计与实现
分院XXXXXXXXXXXX
专业班级XXXXXXXXXX
学 号XXXXXXXXXXXXXXXXX
学生XXXXXXXX
指导教师XXXXXXXXX
20XX年XX月XX日
目 录
第一章课程设计容及要求
通过对某企业的报刊订阅业务进行分析、调查,设计该企业的报刊订阅管理系统。
以SQLServer2005作为后台数据库,以C#作为前台开发工具,完成数据库应用系统的设计开发。
1.1设计目的
人们在部门单位中一直以来都是使用传统人工方式管理本单位的报刊订阅,这种管理方式存在着许多缺点,而且时间一长,将产生大量的文件和数据,难于归类整理,这对于查找、更新和维护都带来了不少的困难。
课题要求设计并实现一个报刊订阅管理系统,能够通过计算机和数据库对本单位的报刊订阅进行管理。
一个单位可指定一个或多个管理员,普通用户注册获得一个账号后就可以订阅报刊以及在自己的权限围进行相关的操作。
1.2设计要求
综合运用所学的数据库基本知识,并能通过查阅相关文献材料,独立完成该课题的设计开发工作。
要求根据本课题设计出合理的数据结构,并实现报刊订阅管理系统中,登录对角色的判断,管理员注册新用户,管理员查看、更新报刊信息,查询、统计订阅信息,维护数据,管理用户,普通用户修改个人信息,查询、统计、增加订阅等功能模块。
1.3设计环境
系统数据库用的是MicrosoftSQLServer2005,系统的开发平台为MicrosoftVisualStudio2010,开发语言为C#。
第二章概要设计
2.1系统需求分析
通过对企业的报刊订阅业务进行分析、调查,设计该企业的报刊订阅管理系统。
主要实现以下功能:
1.登陆功能:
登陆系统为身份验证登录。
分为管理员登录和一般用户登录。
分别通过不同的用户名和密码进入报刊订阅管理界面。
2.录入新信息功能:
对于管理员,包括新用户信息和新报刊信息的录入功能,信息一旦提交就存入到后台数据库中;普通用户自行注册进行录入个人信息。
3.订阅功能:
用户可以订阅报刊,系统自动计算所需金额,并显示在界面上;管理员不可订阅报刊,必须以用户身份订阅报刊。
4.查询功能:
按人员查询、按报刊查询、按部门查询有关订阅信息,对查询结果能进行预览;
5.统计功能:
按报刊统计、按人员统计、按部门统计,对统计结果能进行预览;
6.系统维护:
如数据安全管理(含备份与恢复)
2.2系统结构设计
本系统包括后台数据库设计和前台应用程序的设计两个大的方面,后台数据库的设计是为前台应用程序而服务的,而应用程序的设计则是基于数据库编写的。
根据需求分析可以建立管理员表,部门表,用户表,报刊类别表,报刊信息表,订单表。
其中用户表中包括了用户基本信息,报刊信息表中包括了报刊的基本信息,订单表中包括了用户订阅报刊的相关信息。
系统登录主要分为管理员和用户两种类型。
管理员可以实现录入用户信息、录入报刊信息,查询用户、报刊、部门订阅情况,统计用户、报刊、部门所订阅的数量,数据备份和数据恢复的系统维护操作。
用户可以实现查询本人信息并修改,订阅报刊并查询等操作。
界面设计相对友好,方便用户的操作。
2.3逻辑结构设计
设计数据库共有7个关系模式,分别为:
Ø用户(用户账号,,密码,用户类别)用户账号为主键,决定因素为主键自身或包含主键,满足BC式。
Ø普通用户1(用户账号,联系,联系地址,部门编号)用户账号为主键,部门编号为外键,决定因素为主键自身或包含主键,满足BC式。
Ø普通用户2(用户账号,号)用户账号为主键,决定因素为主键自身或包含主键,满足BC式。
Ø部门(部门编号,部门名称)部门编号为主键,决定因素为主键自身或包含主键,满足BC式。
Ø报刊信息(报刊编号,报刊名称,出版报社,出版周期,季度报价,容介绍,分类编号)报刊编号为主键,分类编号为外键,决定因素为主键自身或包含主键,满足BC式。
Ø报刊类别(分类编号,分类名称)分类编号为主键,决定因素为主键自身或包含主键,满足BC式。
Ø订单(用户编号,报刊编号,订阅份数,订阅月数)用户编号、报刊编号为主键,决定因素为主键自身或包含主键,满足BC式。
2.4功能模块设计
由以上分析可以画出功能模块设计图,如图2-1和2-2所示:
图2-1报刊管理系统E-R图
图2-2管理员和用户E-R图
第三章详细设计
3.1系统数据库设计
经过需求分析设计后得出数据库设计的概念模型,建立了六个表,分别是:
管理员表,部门表,用户表,报刊类别表,报刊信息表,订单表。
如下:
管理员(管理员,密码)
部门(部门编号,部门名)
用户(用户账号,密码,,号,联系,部门编号)
报刊类别(分类编号,分类名称)
报刊信息(报刊编号,报刊名称,出版报社,季度报价,容介绍,分类编号)
订单(订单编号,用户账号,报刊编号,订阅份数,订阅季度,订阅总额)
所创建表的设计图如下所示:
管理员表:
用E-R图表示该实体如下:
部门表:
用E-R图表示该实体如下:
用户表:
用E-R图表示该实体如图3-1所示:
图3-1实体E-R图
报刊类别表:
用E-R图表示该实体如下:
报刊信息表:
用E-R图表示该实体如图3-2所示:
图3-2报刊信息实体E-R图
订单表:
用E-R图表示该实体如3-3所示:
图3-3订单实体E-R图
数据库各个表之间的关系如图3-4所示:
图3-4各表关系图
完整的E-R图如图3-5所示:
图3-5完整E-R图
3.2系统主要功能模块设计
3.2.1登录界面
开始使用系统时,在主界面首先要选择其类型,管理员或用户,这样才能进入登录界面。
在管理员或用户登录界面分别输入正确的用户账号和密码时,方可进入到系统,否则不能进入系统。
新用户可点击注册,添加自己的信息,注册成功后,就可以登录系统。
3.2.2主界面
主界面有管理员界面和用户界面。
管理员进入管理员界面后,可以进行录入、查询、统计、系统维护等操作。
具体可以添加、修改、删除用户和报刊信息,可以按用户、报刊、部门进行查询和统计订阅的情况,可以进行系统的数据备份与恢复。
用户进入用户界面后,可以修改本人信息,根据报刊信息订阅报刊,并查看自己的订阅信息。
3.3程序主要算法对应的原代码
用户修改本人信息:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Data.SqlClient;
namespace报刊订阅管理系统
{
publicpartialclassForm5:
Form
{
MyconConnection=newMy();
//在登录界面使用的用户账号调用到这一界面
privatestringUser;
privatestringpassword;
publicstringUserNum
{
get{returnUser;}
set{this.User=value;}
}
publicstringPassWord
{
get{returnpassword;}
set{this.password=value;}
}
publicForm5()
{
Initializeponent();
}
classConnect
{
publicstaticstringHY()
{
return"DataSource=(local);InitialCatalog=报刊订阅管理系统;IntegratedSecurity=True";
}
}
classMy
{
publicstringstrConnect="";
publicSqlConnectionconConnection=null;
publicMy()
{
strConnect=Connect.HY();
conConnection=newSqlConnection(strConnect);
}
publicvoidOpenDB()
{
if(conConnection.State!
=ConnectionState.Open)
{
try
{
conConnection.Open();
}
catch(System.Exceptionex)
{
throwex;
}
}
}
publicvoidCloseDB()
{
if(conConnection!
=null&&conConnection.State==ConnectionState.Open)
{
conConnection.Close();
}
}
publicDataTableGetDT(stringsql)
{
if(sql==null)
returnnull;
DataTabledt=null;
DataSetds=null;
try
{
OpenDB();
SqlDataAdaptersda=newSqlDataAdapter(sql,strConnect);
ds=newDataSet();
sda.Fill(ds);
if(ds.Tables.Count<=0)
{
returnnull;
}
dt=ds.Tables[0];
}
catch(System.Exceptionex)
{
thrownewException(ex.ToString());
}
ds.Dispose();
returndt;
}
publicDataSetGetDS(stringsql)
{
DataSetds=null;
try
{
OpenDB();
SqlDataAdaptersda=newSqlDataAdapter(sql,strConnect);
ds=newDataSet();
sda.Fill(ds);
sda.Dispose();
sda=null;
CloseDB();
}
catch(System.Exceptionex)
{
thrownewException(ex.ToString());
}
returnds;
}
publicvoidExecuteNonQuery(stringsql)
{
try
{
OpenDB();
Sqlmand=newSqlmand(sql,conConnection);
.ExecuteNonQuery();
.Dispose();
=null;
CloseDB();
}
catch(System.Exceptionex)
{
thrownewException(ex.ToString());
}
}
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
stringUser=textBox1.Text.ToString().Trim();
stringxm=textBox2.Text.ToString().Trim();
stringmm=textBox3.Text.ToString().Trim();
stringdh=textBox4.Text.ToString().Trim();
stringbm=textBox5.Text.ToString().Trim();
//stringsql_="update用户表set用户名='"+User+"',='"+xm+"',密码='"+mm+"',号='"+sf+"',联系='"+dh+"',部门编号='"+bm+"'where用户名="+User;
stringsql_="update用户表set='"+xm+"',密码='"+mm+"',联系='"+dh+"',部门编号='"+bm+"'where用户账号="+User;
sql_=string.Format(sql_);
try
{
conConnection.ExecuteNonQuery(sql_);
stringsql="select用户账号,密码,,号,联系,用户表.部门编号,部门名from用户表,部门表where用户表.部门编号=部门表.部门编号and用户账号='"+User+"'";
this.dataGridView1.DataSource=conConnection.GetDT(sql);
}
catch(System.Exceptionex)
{
MessageBox.Show(ex.ToString());
}
textBox2.Text="";
textBox3.Text="";
textBox4.Text="";
textBox5.Text="";
}
boolflagshow=false;
privatevoidbutton3_Click(objectsender,EventArgse)
{
stringstrConnnect="DataSource=(local);InitialCatalog=报刊订阅管理系统;IntegratedSecurity=True";
SqlConnectionconConnection=newSqlConnection(strConnnect);
conConnection.Open();
Sqlmand=newSqlmand("select用户账号form用户表",conConnection);
.mandText="select*from用户表";
SqlDataReaderdr=.ExecuteReader();
while(dr.Read())
{
User=dr["用户账号"].ToString();
if(User.Trim()==textBox1.Text)
{
flagshow=true;
stringstrConnect="DataSource=(local);InitialCatalog=报刊订阅管理系统;IntegratedSecurity=True";
stringcmd="select用户账号,密码,,号,联系,部门编号from用户表where用户账号="+User;
SqlConnectionconConnect=newSqlConnection(strConnect);
conConnect.Open();
SqlDataAdaptersda=newSqlDataAdapter(cmd,conConnect);
DataSetds=newDataSet();
sda.Fill(ds,"用户表");
dataGridView1.DataSource=ds.Tables[0].DefaultView;
conConnect.Close();
}
//else
//{
//MessageBox.Show("请输入本人账号!
");
//}
//textBox1.Text="";
}
//dr.Close();
//conConnection.Close();
if(flagshow==true){
}
else{
MessageBox.Show("请输入本人账号!
");
}
textBox1.Text="";
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
this.Hide();
Form4form4=newForm4();
form4.Show();
}
}
}
第四章调试与运行结果及存在的问题
主界面里选择用户的类型,如图4-1所示:
图4-1报刊订阅管理系统用户界面
点击管理员进入管理员登录界面,则为用户登录界面。
登录界面主要由管理员(用户名)和密码的信息,如图4-2所示:
图4-2管理员和用户登录界面
如果输入的用户名和密码不正确或不存在,则会提示错误,如图4-3所示:
图4-3提示界面
用户还可以注册新账号,如图4-4所示:
图4-4用户注册界面
如果输入的用户账号已有用户注册过,则会提示已存在,如图4-5所示:
图4-5注册错误提醒界面
填入的信息正确,就会分别进入到管理员界面和用户界面。
管理员与用户能操作的权限不一样,所以两个界面的菜单也不同,如图4-6和4-7所示:
图4-6报刊订阅管理系统界面
图4-7用户订阅界面
管理员实现的录入用户和报刊信息,可以根据用户(报刊)信息里所显示的容添加,修改,删除用户(报刊),并进行调整,如图4-8和4-9所示:
图4-8用户信息界面
图4-9报刊信息界面
管理员实现的查询功能可根据用户、报刊、部门分别查询订阅报刊的情况。
报刊、部门查询也与用户查询相同,如图4-10和4-11所示:
图4-10根据用户查询界面
图4-11根据用户界面查询演示
管理员实现的统计功能可以根据用户、报刊进行统计共订阅了几份报刊,并显示出总额为多少。
报刊统计也与用户统计相同,如图4-12所示:
图4-12根据用户统计界面
管理员也可以实现系统维护,数据备份和数据恢复功能,如图4-13和4-14所示:
图4-13管理员登陆备份界面
图4-14管理员界面备份界面
用户可以修改信息,在用户账号里填写本人账号后,会显示自己的信息,然后根据自己原来的信息进行修改,如图4-15所示:
图4-15修改信息界面
如果填入的账号与登录时的账号不一致,则不能显示信息,并且会有提示,如图4-16所示:
图4-16提示用户账户错误
用户选择“订阅报刊”菜单后,在弹出的界面里,用户可以浏览到所有的报刊信息,输入相关信息后,点击订阅,就完成了订阅,并会显示出所需金额,如图4-17和4-18所示:
图4-17订阅报刊界面
图4-18订阅报刊界面演示
用户选择“我的订阅”后,就可查看所有自己订阅的报刊信息,如图4-19所示:
图4-19我的订单界面
第五章课程设计心得体会
关于这个课程设计,我的感触很深,这是我很难得的非常认真独立的做的一个课程设计。
整个过程中遇到了不少问题,也解决了不少问题,收获挺大的。
管理员方面,可以输入用户、报刊的信息,并且可以对这些信息进行修改。
管理订单方面,管理员可以按人员、按部门、按报刊查询和统计所有的订单信息,方便对报刊的分发进行管理,并且可以预览和打印出这些结果,还有数据库备份和恢复功能使系统的数据安全性有了保障。
使用C#做程序也是这个学期才学的,难免有些不足之处。
由于很多方面能力上的不足,加上时间问题考虑得不够周全,可能在某些功能上不是很完善,不过已有的功能已能基本满足一般用户的需求,界面设计上,做的都是最简单的形式,虽然基本功能是实现了,但不够完善。
本次实习中遇到了很多以前没有遇到过的问题,也曾想过要放弃,但看到自己一般写过的大量程序,给了我继续的信心。
有过挫折有过坎坷,但最终实现目标后的成就感,也让我充分感受到实际操作的重要性。
通过这次课程设计,觉得对数据库有了更进一步更深刻的认识,巩固了对数据库的知识,而且学会了使用VisualStudio2010,用C#做项目,对于这个软件的基础应用我已相当熟悉了,感觉自学挺自豪的,我会继续学习这相关方面的知识,使我以后开发出来的系统更加完善!
第六章参考文献
[1]程云志,帆,翔.数据库原理与SQLServer2005应用教程.机械工业,2003.
[2]唐政,房大伟.C#项目开发全程实录.清华大学
[3]王永皎,廖建军.VisualC#2005SQLserver2005数据库开发与实例清华大学,2000.
[4]戴志诚.SQL Server2005数据库系统开发与实例.:
电子工业,2007.3.
[5]志成. SQL Server 2005 实例教程. :
电子工业,2008.
[6]亚秋,梁心东,力等.C#程序设计与应用[M].:
电子工业,2000.
[7]阿奇. SQL Server 实用教程.:
电子工业,2007.7
[8]韬,楼兴华.SQL Server2000数据库系统开发实例导航. :
人民邮电,2004.
[9]周佩德.数据库原理及应用[M].:
电子工业,2004.
[10]曾登高编著..NET系统架构与开发. :
电子工业,2003.
致
感指导老师和一起做报告的组员!
致