c#报刊订阅管理系统数据库毕业课程设计报告Word文档格式.docx
《c#报刊订阅管理系统数据库毕业课程设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《c#报刊订阅管理系统数据库毕业课程设计报告Word文档格式.docx(50页珍藏版)》请在冰豆网上搜索。
至
计算机科学与技术专业课程设计任务书
学生姓名
马飞扬
专业班级
学号
题目
报刊订阅管理系统
课题性质
其它
课题来源
自拟课题
指导教师
同组姓名
无
主要内容
人们在部门单位中一直以来都是使用传统人工方式管理本单位的报刊订阅,这种管理方式存在着许多缺点,而且时间一长,将产生大量的文件和数据,难于归类整理,这对于查找、更新和维护都带来了不少的困难。
课题要求设计并实现一个报刊订阅管理系统,能够通过计算机和数据库对本单位的报刊订阅进行管理。
一个单位可指定一个或多个管理员,普通用户注册获得一个账号后就可以订阅报刊以及在自己的权限范围内进行相关的操作。
功能应包括:
登录对角色的判断,管理员注册新用户,查看、更新报刊信息,查询、统计订阅信息,维护数据,管理用户,普通用户修改个人信息,查询、统计、增加订阅等模块。
界面设计相对友好,方便用户的操作。
任务要求
综合运用所学的数据库基本知识,并能通过查阅相关文献材料,独立完成该课题的设计开发工作。
要求根据本课题设计出合理的数据结构,并实现报刊订阅管理系统中,登录对角色的判断,管理员注册新用户,管理员查看、更新报刊信息,查询、统计订阅信息,维护数据,管理用户,普通用户修改个人信息,查询、统计、增加订阅等功能模块。
参考文献
【1】尹志宇、郭晴数据库原理与应用教程清华大学出版社2010.5
【2】
(美)厄尔曼数据库系统基础教程机械工业出版社2009.8
【3】郑阿奇sqlserver2005教程电子工业出版社2011.2
【4】明日科技c#开发技术大全人民邮电出版社2011.11
【5】
(美)米凯利斯c#本质论人民邮电出版社2010.9
审查意见
指导教师签字:
教研室主任签字:
年月日
1:
概述
人们在部门单位中一直以来都是使用传统人工方式管理本单位的报刊订阅,这种管理方式存在着许多缺点,譬如:
效率低、保密性差,而且时间一长,将产生大量的文件和数据,难于归类整理,这对于查找、更新和维护都带来了不少的困难。
本学期学习了c#、数据库以及基于c#的windows应用程序开发以后,在本次课程设计中,便利用这些知识点,实现一个报刊订阅管理系统,能够通过计算机和数据库对本单位的报刊订阅进行管理,实现智能化管理,克服传统人工管理方式的缺点以及弊端。
在报刊订阅管理系统中,要实现:
一个单位可指定一个或多个管理员,管理员可以注册新用户,查看、更新报刊信息,查询、统计订阅信息,系统维护,管理用户;
普通用户通过注册获得一个账号后就可以订阅报刊以及在自己的权限范围内进行查询、统计订阅以及修改个人信息等相关的操作。
登录对角色的判断,管理员注册新用户,管理员查看、更新报刊信息,管理员查询、统计订阅信息,管理员维护数据、管理员管理用户、普通用户修改个人信息、普通用户查询、统计、增加订阅等功能模块。
界面设计要相对友好,方便用户的操作。
2:
需求分析
设计报刊订阅管理系统,要能够通过计算机和数据库对本单位的报刊订阅进行管理,实现智能化管理,克服传统人工管理方式的缺点以及弊端。
要实现:
具体功能应包括:
用户登录,管理员注册用户(包括普通用户、管理员),更新报刊(包括查看、录入、修改、删除),查询订阅(按用户、报刊、部门),统计订阅(按用户、报刊、部门),系统维护(备份、还原数据)、管理用户(查询、修改、删除),普通用户修改个人信息,增加、删除、修改、查询、统计订阅信息等功能模块。
系统流程图如图1:
图1:
3:
概念结构设计
在报刊订阅管理系统中,共涉及到3个实体:
报刊、部门、用户。
用户包括普通用户、管理员,每个用户都唯一属于一个部门,每个部门可包括多个用户,它们是多对一的关系。
普通用户可以订阅多份报刊,一份报刊可被多个用户订阅,属于多对多的关系。
E-R图如图2。
图2:
4:
逻辑结构设计
设计数据库共有7个关系模式,分别为:
用户(用户账号,姓名,密码,用户类别)用户账号为主键,决定因素为主键自身或包含主键,满足BC范式。
普通用户1(用户账号,联系电话,联系地址,部门编号)用户账号为主键,部门编号为外键,决定因素为主键自身或包含主键,满足BC范式。
普通用户2(用户账号,身份证号)用户账号为主键,决定因素为主键自身或包含主键,满足BC范式。
部门(部门编号,部门名称)部门编号为主键,决定因素为主键自身或包含主键,满足BC范式。
报刊信息(报刊编号,报刊名称,出版报社,出版周期,季度报价,内容介绍,分类编号)报刊编号为主键,分类编号为外键,决定因素为主键自身或包含主键,满足BC范式。
报刊类别(分类编号,分类名称)分类编号为主键,决定因素为主键自身或包含主键,满足BC范式。
订单(用户编号,报刊编号,订阅份数,订阅月数)用户编号、报刊编号为主键,决定因素为主键自身或包含主键,满足BC范式。
5:
源代码及系统截图
源代码:
(1)登录界面的逻辑实现
usingSystem;
usingSystem.Collections.Generic;
usingSystemponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.IO;
usingSystem.Data.SqlClient;
namespacenewspaperorder
{
publicpartialclasslogin:
Form
{
privateintchildFormNumber=0;
publiclogin()
InitializeComponent();
}
privatevoidShowNewForm(objectsender,EventArgse)
FormchildForm=newForm();
childForm.MdiParent=this;
childForm.Text="
Window"
+childFormNumber++;
childForm.Show();
privatevoidOpenFile(objectsender,EventArgse)
OpenFileDialogopenFileDialog=newOpenFileDialog();
openFileDialog.InitialDirectory=Environment.GetFolderPath(Environment.SpecialFolder.Personal);
openFileDialog.Filter="
TextFiles(*.txt)|*.txt|AllFiles(*.*)|*.*"
;
if(openFileDialog.ShowDialog(this)==DialogResult.OK)
stringFileName=openFileDialog.FileName;
privatevoidSaveAsToolStripMenuItem_Click(objectsender,EventArgse)
SaveFileDialogsaveFileDialog=newSaveFileDialog();
saveFileDialog.InitialDirectory=Environment.GetFolderPath(Environment.SpecialFolder.Personal);
saveFileDialog.Filter="
if(saveFileDialog.ShowDialog(this)==DialogResult.OK)
stringFileName=saveFileDialog.FileName;
privatevoidExitToolsStripMenuItem_Click(objectsender,EventArgse)
this.Close();
privatevoidCascadeToolStripMenuItem_Click(objectsender,EventArgse)
LayoutMdi(MdiLayout.Cascade);
privatevoidTileVerticalToolStripMenuItem_Click(objectsender,EventArgse)
LayoutMdi(MdiLayout.TileVertical);
privatevoidTileHorizontalToolStripMenuItem_Click(objectsender,EventArgse)
LayoutMdi(MdiLayout.TileHorizontal);
privatevoidArrangeIconsToolStripMenuItem_Click(objectsender,EventArgse)
LayoutMdi(MdiLayout.ArrangeIcons);
privatevoidCloseAllToolStripMenuItem_Click(objectsender,EventArgse)
foreach(FormchildForminMdiChildren)
childForm.Close();
privatevoidbutton2_Click(objectsender,EventArgse)
this.textBox1.Clear();
this.textBox2.Clear();
privatevoidnotifyicon1_click(objectsender,System.Windows.Forms.MouseEventArgse)
if(e.Button==System.Windows.Forms.MouseButtons.Right)
if(this!
=null&
&
this.contextMenuStrip1!
=null)
this.contextMenuStrip1.Show();
privatevoidbutton1_Click(objectsender,EventArgse)
stringusernum=null;