《小型图书管理系统(共34页).doc》由会员分享,可在线阅读,更多相关《小型图书管理系统(共34页).doc(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上 本科生课程设计课题:小型图书管理系统课程名称数据库原理及应用课程设计课程编号J学号学生姓名所在专业计算机科学与技术所在班级指导教师徐龙琴成绩教师签字年 月 日课程设计时间: 2013年 6月 1 日 至 2013年 6月 18日专心-专注-专业目 录设计总说明1. 设计概况 名称:小型图书管理系统 用途:学校、个人单位等机构 功能:实现对各类图书的管理与维护等功能2. 设计说明小型图书管理系统,可用于学校、个人单位等机构的图书管理,查询,更新与维护,使用方便,易用性强,图形界面清晰明了。该软件用C#语言编写,SQLServer2005数据库作为后台的数据库进行信息的
2、存储,用SQL语句完成添加,查询,修改,删除的操作。用Visual Studio 2010驱动实现前台C#与后台SQL数据库的连接。C#语言跨平台性强,可以在windows,linux,ubuntu等系统下使用,方便简单,安全性好。SQLServer2005数据库高效安全,两者结合可相互利用各自的优势。该系统实现的大致功能:系统功能的基本要求: 管理员权限验证,分为系统管理员和普通管理员,只有系统管理员拥有增删管理员权限 图书类型新增、删除、修改、查询(查询所有类型、图书类型详细) 图书管理功能,包括各类信息的输入,如图书的编号、书名、类型、作者、出版社、出版时间、价格、总页数等 图书各类信息
3、的修改 图书各类信息的删除 图书各类信息的查询3本系统只实现了基本操作功能,对于一些更大型、属性更多、关系更复杂的企业,便利性和安全性仍有不足,使用过程中造成的不便还请谅解。小型图书管理系统概述1. 需求分析1.1系统开发环境和软件本系统采用C#语言编写前台程序,后台采用SQL Server2005软件管理数据库,调试和运行皆由Visual Studio 2010完成。1.2系统设计与功能分析系统设计的基本思想:1. 用户登录模块2. 总体模块 .系统管理模块 a.用户管理b.更换主题c.系统退出 .图书管理模块 a.新增 b.修改 c.删除 .类型管理模块 a.新增 b.修改c.删除 .联系
4、作者模块 退出模块系统功能的基本要求: 管理员权限验证,分为系统管理员和普通管理员,只有系统管理员拥有增删管理员权限 图书类型新增、删除、修改、查询(查询所有类型、图书类型详细) 图书管理功能,包括各类信息的输入,如图书的编号、书名、类型、作者、出版社、出版时间、价格、总页数等 图书各类信息的修改 图书各类信息的删除 图书各类信息的查询 2. 概念结构设计 概念结构设计的任务是在需求分析阶段产生的需求说明书的基础上,按照特定的方法把它们抽象为一个不依赖于任何具体机器的数据模型,即概念模型。概念模型使设计者的注意力能够从复杂的实现细节中解脱出来,而只集中在最重要的信息的组织结构和处理模式上。2.
5、1系统功能模块图 小型图书管理系统用户登录联系作者退出系统类型管理新增修改删除系统管理更换主题用户管理修改密码增加用户删除用户图书管理新增修改删除 3.逻辑结构设计 逻辑结构设计阶段的任务是将概念结构设计阶段所得到的转换为具体DBMS所能支持的数据模型(即逻辑结构),并对其进行优化。3.1系统E-R图简介作者书名图书类型出版时间图书编号 图书出版社总页数价格 图1 图书实体图名称 类型简介 图2 类型实体图1简介作者书名图书类型出版时间图书编号图书出版社总页数价格名称类型简介属于n 图3 各实体之间联系图(总体E-R图)3. 2系统关系模式图 E-R图向转化类型(名称,简介)图书(书名,简介,
6、作者,价格,总页数,图书类型,图书编号,出版时间,出版社)4. 物理结构设计 数据库物理设计阶段的任务是根据具体计算机系统的特点,给给定的数据库系统确定合理的存储结构和存取方法。所谓的“合理”主要有两个含义:一个是要使设计出的物理数据库占用较少的存储空间,另一个对数据库的操作具有尽可能高的速度。4.1数据库设计管理员表(AdminInfo)列名数据类型说明Uidint管理员序号(主键)UserNamenvarchar(20)管理员登录名PassWordnvarchar(32)登录密码IsSysAdminInt管理员类型(1为系统管理员,0为普通管理员)图书管理表(BookInfo)列名数据类型
7、说明BookIDInt图书序号BookNamevarchar(100)图书名称(主键)TypeIDint图书类型Authorvarchar(50)作者Pressvarchar(50)出版社PubDatedatetime出版日期Pricingfloat价格Pageint总页数CoverImagevarchar(50)图书封面Summarytext图书简介类型管理表(BookTypeInfo)列名数据类型说明BookTypeIDint类型序号(主键)BookTypeNameIvarchar(50)类型名称Remarktext类型简介4.2部分数据录入.管理员表(AdminInfo).图书管理表(B
8、ookInfo).类型管理表(BookTypeInfo)5. 系统实现5.1前台界面5.1.1用户登录5.1.2整体界面5.1.3系统管理5.1.4图书管理5.1.5类型管理5.1.6联系作者5.1.7退出5.2后台管理下面列出程序部分源代码登录窗口源代码为:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.
9、Forms;using Model;using BLL;using System.Diagnostics;using System.Security.Cryptography;namespace BookManageSystem public partial class From_ManageLogin : Form public From_ManageLogin() InitializeComponent(); System.Runtime.InteropServices.DllImport(user32) private static extern bool AnimateWindow(I
10、ntPtr hwnd, int dwTime, int dwFlags); /* * 函数功能:该函数能在显示与隐藏窗口时能产生特殊的效果。有两种类型的动画效果:滚动动画和滑动动画。 * 函数原型:BOOL AnimateWindow(HWND hWnd,DWORD dwTime,DWORD dwFlags); * hWnd:指定产生动画的窗口的句柄。 * dwTime:指明动画持续的时间(以微秒计),完成一个动画的标准时间为200微秒。 * dwFags:指定动画类型。这个参数可以是一个或多个下列标志的组合。 * 返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。 * 在下列情况
11、下函数将失败:窗口使用了窗口边界;窗口已经可见仍要显示窗口;窗口已经隐藏仍要隐藏窗口。若想获得更多错误信息,请调用GetLastError函数。 * 备注:可以将AW_HOR_POSITIVE或AW_HOR_NEGTVE与AW_VER_POSITVE或AW_VER_NEGATIVE组合来激活一个窗口。 * 可能需要在该窗口的窗口过程和它的子窗口的窗口过程中处理WM_PRINT或WM_PRINTCLIENT消息。对话框,控制,及共用控制已处理WM_PRINTCLIENT消息,缺省窗口过程也已处理WM_PRINT消息。 * 速查:WIDdOWS NT:5.0以上版本:Windows:98以上版本;
12、Windows CE:不支持;头文件:Winuser.h;库文件:user32.lib。 */ /标志描述: const int AW_SLIDE = 0x40000;/使用滑动类型。缺省则为滚动动画类型。当使用AW_CENTER标志时,这个标志就被忽略。 const int AW_ACTIVATE = 0x20000;/激活窗口。在使用了AW_HIDE标志后不要使用这个标志。 const int AW_BLEND = 0x80000;/使用淡出效果。只有当hWnd为顶层窗口的时候才可以使用此标志。 const int AW_HIDE = 0x10000;/隐藏窗口,缺省则显示窗口。(关闭窗口
13、用) const int AW_CENTER = 0x0010;/若使用了AW_HIDE标志,则使窗口向内重叠;若未使用AW_HIDE标志,则使窗口向外扩展。 const int AW_HOR_POSITIVE = 0x0001;/自左向右显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略。 const int AW_VER_POSITIVE = 0x0004;/自顶向下显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略。 const int AW_HOR_NEGATIVE = 0x0002;/自右向左显示
14、窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略。 const int AW_VER_NEGATIVE = 0x0008;/自下向上显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略。 private void From_ManageLogin_Paint(object sender, PaintEventArgs e) /GraphicsPath Myformpath = new GraphicsPath(); /创建一个路径对象 /Myformpath.AddEllipse(0 + 10, 0 + 20,
15、 this.Width - 20, this.Height - 30); /使用椭圆构造一个区域,并将此区域作为程序窗体区域 /this.Region = new Region(Myformpath); / / 清空输入框 / / / private void button2_Click(object sender, EventArgs e) txt_name.Text = ; txt_pwd.Text = ; / / 登陆密码加密 / / 明文密码 / 加密后的密码 private string jiami(string s) Encoding ascii = Encoding.ASCII;
16、 string EncryptString; EncryptString = ; for (int i = 0; i s.Length; i+) int j; byte b = new byte1; j = Convert.ToInt32(ascii.GetBytes(si.ToString()0); j = j + 6; b0 = Convert.ToByte(j); EncryptString = EncryptString + ascii.GetString(b); /如果密码中有则换成9 string pwd1 = EncryptString.Replace(, 9); string
17、pwd2 = pwd1.Replace(-, 9); string pwd3 = pwd2.Replace(/, 9); string newpwd = pwd3.Replace( , 9); return newpwd; / / 32位MD5二次加密密码 / / 第一次加密后的密码 / 32位二次加密密码 public static string GetMD5String(string str) MD5 md5 = MD5.Create(); byte b = Encoding.UTF8.GetBytes(str); byte md5b = md5.ComputeHash(b); md5.C
18、lear(); StringBuilder sb = new StringBuilder(); foreach (var item in md5b) sb.Append(item.ToString(x2); return sb.ToString(); private void button1_Click(object sender, EventArgs e) LoginSysTem(); public void LoginSysTem() if (txt_name.Text = ) MessageBox.Show(请输入用户名, 操作提示, MessageBoxButtons.OK, Mess
19、ageBoxIcon.Information); return; if (txt_pwd.Text = ) MessageBox.Show(请输入密码, 操作提示, MessageBoxButtons.OK, MessageBoxIcon.Information); return; /实例化Admininfo对象 AdminInfo ai = new AdminInfo(); ai.UserName = txt_name.Text; ai.PassWord = GetMD5String(jiami(txt_pwd.Text); /执行查询,验证登陆账号密码 AdminInfo msg = Ad
20、minInfoManage.SelectAdminInfo(ai); if (msg != null) Form_Main fm = new Form_Main(); fm.lbl_admin.Text = txt_name.Text; fm.quanxian = msg.IsSysAdmin; fm.Show(); notifyIcon1.Visible = false; this.Visible = false; else txt_name.Text = ; txt_pwd.Text = ; MessageBox.Show(用户名或密码错误, 操作提示, MessageBoxButtons
21、.OK, MessageBoxIcon.Information); private void pictureBox2_DoubleClick(object sender, EventArgs e) /退出系统 this.Close(); private void 退出系统ToolStripMenuItem1_Click(object sender, EventArgs e) Application.Exit(); / / private void txt_yanzhengma_KeyPress(object sender, KeyPressEventArgs e) if (e.KeyChar
22、= 0x20) e.KeyChar = (char)0; /禁止空格键 if (e.KeyChar = 0x2D) & (TextBox)sender).Text.Length = 0) /处理负数 return; if (e.KeyChar 0x20) try double.Parse(TextBox)sender).Text + e.KeyChar.ToString(); catch e.KeyChar = (char)0; /处理非法字符 private void txt_yanzhengma_KeyUp(object sender, KeyEventArgs e) if (e.KeyC
23、ode = Keys.Enter) LoginSysTem(); private void 关于系统ToolStripMenuItem_Click(object sender, EventArgs e) Sys_Help sh = new Sys_Help(); sh.ShowDialog(); private void From_ManageLogin_Load(object sender, EventArgs e) 整体界面源代码为:using System;using System.Collections.Generic;using System.ComponentModel;using
24、 System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;using System.Diagnostics;using Model;using BLL;namespace BookManageSystem public partial class Form_Main : Form public Form_Main() InitializeComponent(); System.Runtime.InteropServices.Dl
25、lImport(user32) private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags); /* * 函数功能:该函数能在显示与隐藏窗口时能产生特殊的效果。有两种类型的动画效果:滚动动画和滑动动画。 * 函数原型:BOOL AnimateWindow(HWND hWnd,DWORD dwTime,DWORD dwFlags); * hWnd:指定产生动画的窗口的句柄。 * dwTime:指明动画持续的时间(以微秒计),完成一个动画的标准时间为200微秒。 * dwFags:指定动画类型。这个参数
26、可以是一个或多个下列标志的组合。 * 返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。 * 在下列情况下函数将失败:窗口使用了窗口边界;窗口已经可见仍要显示窗口;窗口已经隐藏仍要隐藏窗口。若想获得更多错误信息,请调用GetLastError函数。 * 备注:可以将AW_HOR_POSITIVE或AW_HOR_NEGTVE与AW_VER_POSITVE或AW_VER_NEGATIVE组合来激活一个窗口。 * 可能需要在该窗口的窗口过程和它的子窗口的窗口过程中处理WM_PRINT或WM_PRINTCLIENT消息。对话框,控制,及共用控制已处理WM_PRINTCLIENT消息,缺省窗
27、口过程也已处理WM_PRINT消息。 * 速查:WIDdOWS NT:5.0以上版本:Windows:98以上版本;Windows CE:不支持;头文件:Winuser.h;库文件:user32.lib。 */ /标志描述: const int AW_SLIDE = 0x40000;/使用滑动类型。缺省则为滚动动画类型。当使用AW_CENTER标志时,这个标志就被忽略。 const int AW_ACTIVATE = 0x20000;/激活窗口。在使用了AW_HIDE标志后不要使用这个标志。 const int AW_BLEND = 0x80000;/使用淡出效果。只有当hWnd为顶层窗口的时
28、候才可以使用此标志。 const int AW_HIDE = 0x10000;/隐藏窗口,缺省则显示窗口。(关闭窗口用) const int AW_CENTER = 0x0010;/若使用了AW_HIDE标志,则使窗口向内重叠;若未使用AW_HIDE标志,则使窗口向外扩展。 const int AW_HOR_POSITIVE = 0x0001;/自左向右显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略。 const int AW_VER_POSITIVE = 0x0004;/自顶向下显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CEN
29、TER标志时,该标志将被忽略。 const int AW_HOR_NEGATIVE = 0x0002;/自右向左显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略。 const int AW_VER_NEGATIVE = 0x0008;/自下向上显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略。 / / 实例化BookTypeInfo / BookTypeInfo btinfo = new BookTypeInfo(); / / 实例化BookInfo / BookInfo binfo = new Boo
30、kInfo(); / / 权限属性,保存当前管理员权限 / public int quanxian get; set; Image SysImg; Image tsimg; Image msimg; public void user_quanxian() if(quanxian!=1) 增加用户ToolStripMenuItem.Enabled = false; 删除用户ToolStripMenuItem.Enabled = false; / / 查询图书类型信息 / public void Select_BookType() List list = new List(); try /调用BL
31、L查询方法 list = BookTypeInfoManage.SelectBookTypeInfo(); catch (Exception ex) MessageBox.Show(ex.Message); /创建根节点 TreeNode root = new TreeNode(所有分类); /绑定到父容器 tv_BookType.Nodes.Add(root); foreach (BookTypeInfo b in list) TreeNode node = new TreeNode(b.BookTypeName); node.Tag = b; root.Nodes.Add(node); t
32、v_BookType.ImageList = imageList2; tv_BookType.ImageIndex = 0; / / 查询所有图书信息 / / public void Select_AllBookInfo() List list = new List(); try /调用查询方法 list = BookInfoManage.SelectBookInfo(); catch (Exception ex) MessageBox.Show(ex.Message); foreach (BookInfo bi in list) /循环遍历List,将数据加载到ListView控件上显示 ListViewItem item = new ListViewItem(bi.BookID.ToString(); item.Tag = bi; item.SubItems.Add(bi.BookName);