资源描述
。
江苏理工学院课程设计报告
课程名称 数据库原理及应用 设计题目 邮局订报管理系统
姓 名 施坡 专业班级 12东计B 学 号 12961119
日期 2013-2-26 ~ 2012-3-9 成绩
江苏理工学院
课程名称
数据库原理及应用
课程代码
设计题目
邮局订报管理系统
设计时间
2013年 2 月 26 日 —— 2013 年3 月 9 日
系(院)
计算机科学与信息工程学院
专业
计算机科学与技术
班级
12961119
课程设计任务(条件)、具体技术参数(指标)
通过两周的课程设计,要求学生加深对数据库技术相关理论的理解,增强动手能力,掌握使用现行较为流行的数据库理论和数据库开发工具进行数据库管理操作(如建库、建立完整性约束,对数据库中数据进行查询,更改等操作)的方法;具体应用方面,要求学生对SQL语言要有较深入的了解和掌握,对数据库的管理(主要是安全性方面)要有一定程度的了解。
本次课程设计包含两大部分内容:设计软件和设计报告。其中设计软件在题目验收时由指导教师检查,具体内容不同,系统要求不同;设计报告作为书面材料提交。
二、对课程设计成果的要求(包括课程设计说明书、图纸、图表、实物等软硬件要求)
1、每位同学提交设计的数据库和应用程序相关文档,并提交一份课程设计报告,内容要包含设计题目、设计目的、需求分析、系统功能描述、系统E-R图、关系模式设计、各数据库表的建立(代码)、系统各功能实现(代码)、系统功能评价等。
2、课程设计报告电子版排版顺序: 任务书 → 目录 → 正文 → 附录。
3、每个同学要针对自己的系统,写出对设计技术的分析、对系统的测试、在编码和调试过程中遇到的问题和解决方法等。
4、课程设计报告最后写出本次设计的心得体会。
课程设计工作进度计划
课程设计第1周第1天:布置任务、交代课题、安排设计事宜
第1周第2天:调研,书籍和资料的准备
第1周第3天-第5天:系统分析和设计
第2周第1天-第3天:编程和测试,撰写设计报告
第2周第4天-第5天:课程设计检查,交设计报告
四、主要参考资料
[1]《数据库原理及应用》 钱雪忠主编 北京邮电大学出版社 2012,6, 第三版
[2] 陈刚等编著.Powerbuilder 《案例开发程序设计教程》.北京.清华大学出版社.2012
[3] 杨诏主编.Powerbuilder 8.0《 编程实用技术与案例》.北京.水利水电出版社.2012
[4] 卫海登. Powerbuilder 9.0 《课程设计案例精编》.北京.中国水利水电出版社.2012
[5] 王晟编著.Powerbuilder《数据库开发经典案例解析》.北京.清华大学出版社.2012
目 录
一、需求分析 1
1.1用户需求 1
1.2系统功能需求 1
1.3系统软硬件环境确定 2
二、系统功能设计 2
2.1系统功能结构 2
2.2系统功能处理流程 2
三、系统数据库设计 3
3.1数据库概念设计 3
3.2数据库逻辑设计 3
3.3数据库物理设计 3
四、系统实现 4
4.1数据库连接的实现 4
4.2用户登录功能的实现 5
4.3 用户订购报纸功能的实现 12
4.4用户查看自己已订阅报纸的功能的实现 14
4.5 用户退订报纸功能的实现 15
4.6 管理员查看报纸信息的实现 16
4.7管理员查看用户信息的实现 17
4.8 管理员查看用户订阅信息的实现 18
4.9 管理员进行搜索功能的实现 19
4.10 管理员插入报纸功能的实现 21
4.11 管理员删除报纸功能的实现 23
4.12关于 26
五、小结 27
六、参考文献。 28
-可编辑修改-
一、需求分析
1.1用户需求
1、可随时查询处可订购报纸的详细情况,如报纸编号(PNO)、报纸名称(PNA)、报纸单价(5、版面规格(PSI)、出版单位(PDW)等,这样便于客户选定。
2、客户查询报纸情况后即可订购所需报纸,可订购多种报纸,每种报纸可订若干份,交清所需金额后,就算订购处理完成。
3、为便于邮局投递报纸,客户需写明如下信息:客户姓名(CAN)、电话(CAD)、地址(CAW)及邮政编码(CAY),邮局将即时为每一客户编制唯一代码(CNA)。
4、邮局对每种报纸订购人数不限,每个客户可多次订购报纸,所定报纸亦可重复。
5、 能对报纸、客户等信息进行添加、修改、删除、查询、打印等基本操作。
6、 能根据订报要求订购各报纸,并完成一次订购任务后汇总总金额,模拟付钱、开票操作。
7、 能明细查询某客户的订报情况及某报纸的订出情况。
8、 能统计出某报纸的总订购量与总金额及某客户订购报纸种数、报纸份数与总订购金额等。
1.2系统功能需求
1、在SQL Server 中建立各相应的关系模式对应的库表,并确定索引等。
2、能对各库表进行输入,添加,修改,删除,查询,打印等基本操作。
3、查询功能:能根据邮局订报管理系统,管理员实现报纸的管理功能,用户实现报纸订阅和退订功能。
4、统计功能:能名细查询每报纸的总订数量与总金额及客户订购报纸种类,份数和总金额。
5、要求子系统设计界面友好,功能操作方便合理,并考虑子系统在安全性,完整性方面的功能要求。
6用户管理功能,如:用户登陆等。
1.3系统软硬件环境确定
系统开发工具为局域网或校园网网络环境,网络中有一台安装了windows xp的服务器,服务器上安装了SQL Server 2000,本子系统使用C#开发。
二、系统功能设计
2.1系统功能结构
1、查询报纸
2、订报纸
3、开票
4、付钱结算
5、订购后的查询
6、统计
2.2系统功能处理流程
图2-1 系统流图
三、系统数据库设计
3.1数据库概念设计
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接决定对应用系统的效率以及实现的效果的影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。同时,合理的数据库也有利与应用系统程序的实现。
在充分的寻求分析基础上,经过逐步抽象,分析,充分研讨,可画出如下反映邮局订报子系统数据的整体
CANO
CAYO
CAW
CAD
PNO
PN
PPR
PSI
PDW
NUM
sub_news
customer_info
News_info
n
m
图3-1 E-R图
3.2数据库逻辑设计
1、数据库关系模式
News_info(PNO,PN,PPR,PSI,PDW)
报纸(报纸编号,报纸名称,报纸价格,版面规格,出版单位)
customer_info(CAN,CAD,CAW,CAY)
客户(客户名称,电话,地址,邮政编码)
sub_news(PNO,CAN,NUM)
订购(报纸编号,客户名称,数量)
2、数据库的视图
3.3数据库物理设计
本系统使用的数据库是SQL 2000,根据已设计出的关系模式及各关系模式的完整性约束要求,在SQL 2000数据库系统中实现这些逻辑结构。
数据库表的创建
本系统使用的数据库名为newspaper下面是创建数据库及其表结构的SQL命令:
CREATE TABLE LOGININ(
CNO varCHAR(20) PRIMARY KEY,
PSW varCHAR(20))
CREATE TABLE Customer(
CNO varCHAR(20) PRIMARY KEY,
CNA varCHAR(50) ,
CTE varCHAR(15),
CAD varCHAR(50),
CPO varCHAR(10),
FOREIGN KEY(CNO) REFERENCES LOGININ(CNO))
CREATE TABLE news_info (
PNO varCHAR(20) PRIMARY KEY,
PNA varCHAR(50) ,
PPR FLOAT,
PSI varCHAR(50),
PDW varCHAR(50))
CREATE TABLE Subcribe(
CNO varCHAR(20),
PNO varCHAR(20),
NUM SMALLINT,
FOREIGN KEY(CNO) REFERENCES LOGININ(CNO),
FOREIGN KEY(PNO) REFERENCES news_info(PNO),
PRIMARY KEY(CAN,PNO))
四、系统实现
4.1数据库连接的实现
class connection
{
SqlConnection conn;
public SqlConnection connect
{
get
{
return this.conn;
}
}
public void CreateConnection()
{
conn = new SqlConnection("data source=.;initial catalog=SubcribPost;user ID=sa");
this.conn.Open();
SqlCommand command = this.conn.CreateCommand();
}
}
static void Main()
{
conn = new connection();
conn.CreateConnection();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new logFrm()
}
4.2用户登录功能的实现
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace 邮局订报
{
public partial class admin : Form
{
public admin()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string username = textBox1.Text;
string password = textBox2.Text;
SqlConnection sqlCon = new SqlConnection();
SqlCommand LogInCommand = new SqlCommand();
SqlDataAdapter userAdapter = new SqlDataAdapter();
DataSet dt = new DataSet();
sqlCon.ConnectionString = "Data Source=.;Initial Catalog=newspaper;Integrated Security=True;";
LogInCommand.Connection = sqlCon;
LogInCommand.CommandText = "SELECT username,password From [user] where username='" + username + "' and password='" + password + "'";
userAdapter.SelectCommand = LogInCommand;
userAdapter.SelectCommand.Connection = sqlCon;
sqlCon.Open();
userAdapter.Fill(dt, "UserInfo");//填充数据集
if (dt.Tables[0].Rows.Count > 0)
{
MessageBox.Show(" 登陆成功");
this.Visible = false;
Form1 fr = new Form1(1);
fr.ShowDialog();
}
else
MessageBox.Show(" 失败");
}
private void admin_Load(object sender, EventArgs e)
{
textBox1.Focus();
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
private void button3_Click(object sender, EventArgs e)
{
this.Visible = false;
Form1 fr = new Form1(0);
fr.ShowDialog();
}
private void label2_Click(object sender, EventArgs e)
{
}
}
1、 }管理员登录
图4-1 登录
图4-2 管理员界面
2、已注册用户登录
图4-3 普通用户登录
点击确定后即可进入用户订报界面。
3、新用户登录
图4-4 新用户登录
图4-5 信息提示
注册个人信息的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace 邮局订报
{
public partial class yonghu : Form
{
public yonghu()
{
InitializeComponent();
}
private void button5_Click(object sender, EventArgs e)
{
SqlConnection sqconn = new SqlConnection("Data Source=.;Initial Catalog=newspaper;Integrated Security=True");
string sql = String.Format("insert into customer_info(CAN,CAD,CAW,CAY) VALUES('{0}','{1}','{2}',{3})", textBox1.Text, textBox2.Text, textBox3.Text, Convert.ToUInt64(textBox4.Text));
try
{
sqconn.Open();
SqlCommand command = new SqlCommand(sql, sqconn);
int count = command.ExecuteNonQuery();
if (count > 0)
{
MessageBox.Show("注册成功", "注册信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("注册失败");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "操作数据库错误!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
finally
{
sqconn.Close();
}
}
}
}
确定后即进入订报界面。
4.3 用户订购报纸功能的实现
选好报纸后,输入要订购的份数,点击订购,即完成报纸的订购。
图4-7 用户界面
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace 邮局订报
{
public partial class dinggou : Form
{
public dinggou()
{
InitializeComponent();
}
private void dinggou_Load(object sender, EventArgs e)
{
SqlConnection sqconn = new SqlConnection("Data Source=.;Initial Catalog=newspaper;Integrated Security=True;");
string stri = "select distinct PNA from news_info ";
try
{
sqconn.Open();
SqlDataAdapter sdat = new SqlDataAdapter(stri, sqconn);
DataSet Dset = new DataSet();
sdat.Fill(Dset);
boBox1.DataSource = Dset.Tables[0];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "操作数据库错误!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
finally
{
sqconn.Close();
}
}
private void button6_Click(object sender, EventArgs e)
{
int mon = 0, num = 0;
SqlConnection sqconn = new SqlConnection("Data Source=.;Initial Catalog=newspaper;Integrated Security=True;");
string stri = String.Format("select PPR,PNUM from news_info where PNA='{0}'", comboBox1.Text);
// string stri_i = String.Format("select CAD,CAW from customer_info where CAN='{0}'", comboBox2.Text);
SqlCommand com;
try
{
sqconn.Open();
com = new SqlCommand(stri, sqconn);
SqlDataReader re = com.ExecuteReader();
re.Read();
mon=Convert.ToInt32(re[0]);
num = Convert.ToInt32(re[1]);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "操作数据库错误!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
finally
{
sqconn.Close();
}
if (num >= Convert.ToInt32(textBox2.Text))
{
int money = mon * Convert.ToInt32(textBox2.Text);
stri = String.Format("insert into sub_news() VALUES('{0}','{1}','{2}')", comboBox1.Text, textBox2.Text, Convert.ToInt32(textBox1.Text));
string stru = "update news_info set NUM=" + (num - Convert.ToInt32(textBox2.Text));
try
{
sqconn.Open();
com = new SqlCommand(stri, sqconn);
int count = com.ExecuteNonQuery();
com = new SqlCommand(stru, sqconn);
int co = com.ExecuteNonQuery();
if (count > 0 && co > 0)
{
MessageBox.Show("订报成功", "订阅报纸", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("订报失败");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "操作数据库错误!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
finally
{
sqconn.Close();
}
}
else
MessageBox.Show("报纸剩余数量不足!");
}
}
}
4.4用户查看自己已订阅报纸的功能的实现
图4-10 用户查看
4.5 用户退订报纸功能的实现
用户在已订阅栏里可选择想要退订的报纸,然后点击退订按钮即可实现报纸的退订。
图4-11 已定报纸
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace 邮局订报
{
public partial class state : Form
{
public state()
{
InitializeComponent();
}
// private void state_Load(object sender, EventArgs e)
// {
// this.button2.Visible = false;
// }
private void button1_Click(object sender, EventArgs e)
{
SqlConnection sqconn = new SqlConnection("Data Source=.;Initial Catalog=newspaper;Integrated Security=True");
string stri = String.Format("select PNO 报纸编号,CAN 客户姓名,NUM 报纸数量 from sub_news where CAN='{0}'",textBox1.Text);
try
{
sqconn.Open();
SqlDataAdapter sdat = new SqlDataAdapter(stri, sqconn);
DataSet Dset = new DataSet();
sdat.Fill(Dset, "sub_news");
this.dataGridView1.DataSource = Dset.Tables["sub_news"];
//if (this.dataGridView1.Rows.Count != 0)
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "操作数据库错误!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
finally
{
sqconn.Close();
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
}
}4.6 管理员查看报纸信息的实现
图4-12 管理员查看
4.7管理员查看用户信息的实现
图4-13 管理员查看
4.8 管理员查看用户订阅信息的实现
图4-14 管理员查看
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace 邮局订报
{
public partial class tongji : Form
{
public tongji()
{
InitializeComponent();
}
private void tongji_Load(object sender, EventArgs e)
{
SqlConnection sqconn = new SqlConnection("Data Source=.;Initial Catalog=newspaper;Integrated Security=True");
string stri = "select distinct PNA from news_info ";
try
{
sqconn.Open();
SqlDataAdapter sdat = new SqlDataAdapter(stri, sqconn);
DataSet Dset = new DataSet();
sdat.Fill(Dset);
boBox1.DataSource = Dset.Tables[0];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "操作数据库错误!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
finally
{
sqconn.Close();
}
}
private void button1_Click(object sender, EventArgs e)
{
string n
展开阅读全文