1、图书馆管理系统的分析与设计C#SQLServerword版本图书馆管理系统的分析与设计采用的开发环境主要是基于数据库系统的SQL Server 2000和基于面向对象程序设计的C#。利用SQL Server 2000创建图书馆管理各信息表用户信息表,图书信息表。利用C#和数据库建立连接后,利用C#中的控制按钮以及一些程序代码实现一些特定的功能,例如用户图书信息查询,书库借出查询,密码修改,查找图书,个人信息查询,添加用户等,极大地提高了图书馆管理的效率。系统详细设计与实现 为了实现该系统,建立名为Book的解决方案,建立三层架构,用户访问层BookUI,数据访问层BooKDAL,逻辑业务层Bo
2、okBLL 其中用户访问层位于最外层,离用户最近。用于显示数据和接受用户输入的数据,为用户提供一种交互式操作的界面。 本实例系统主要操作都需要与数据库发生交互,为了减少重复的代码提高代码的重要性和规范性,把数据库交互的功能单独放在一个类中,在该类中实现数据库的增加,删除,修改,查询等通用功能。因此创建databa.cs类,放在BookUtility方案下,实现对数据库的操作,代码如下: namespace BookUtility public class Database private static string _connStr = Data Source=.;Initial Catalo
3、g=BookManage;Integrated Security=True; private static SqlConnection sqlcon = null; private static void CreateConnection() if (sqlcon = null) sqlcon = new SqlConnection(_connStr); sqlcon.Open(); else if (sqlcon.State = ConnectionState.Closed | sqlcon.State = ConnectionState.Broken) sqlcon.Close(); sq
4、lcon.Open(); public static SqlCommand Querry(string strsql) try CreateConnection(); SqlCommand sqlcmd = new SqlCommand(strsql, sqlcon); sqlcmd.CommandText = strsql; return sqlcmd; catch return null; /执行Insert/update/delete,不带参数 public static int ExecuteNoQuery(string strsql) int i; try CreateConnect
5、ion(); SqlCommand sqlcmd = new SqlCommand(strsql, sqlcon); i = sqlcmd.ExecuteNonQuery(); sqlcon.Close(); return i; catch return -1; /执行Insert/update/delete,带参数 public static int ExecuteNoQuery(string strsql, params SqlParameter param) int i; try CreateConnection(); SqlCommand sqlcmd = new SqlCommand
6、(strsql, sqlcon); /sqlcmd.Parameters.Add(param); foreach (SqlParameter par in param) /遍历数组将参数对象添加到操作命令中 sqlcmd.Parameters.Add(par); i = sqlcmd.ExecuteNonQuery(); return i; catch return -1; public static DataSet GetDataSet(string strsql) CreateConnection(); SqlDataAdapter sda = new SqlDataAdapter(str
7、sql, sqlcon); DataSet ds = new DataSet(); try sda.Fill(ds); return ds; catch return null; public static DataSet GetDataSet(string strsql, params SqlParameter param) CreateConnection(); SqlDataAdapter sda = new SqlDataAdapter(strsql, sqlcon); DataSet ds = new DataSet(); foreach (SqlParameter par in p
8、aram) sda.SelectCommand.Parameters.Add(par); try sda.Fill(ds); return ds; catch return null; public static DataTable GetTable(string strsql) try CreateConnection(); SqlDataAdapter sda = new SqlDataAdapter(strsql, sqlcon); DataSet ds = new DataSet(); sda.Fill(ds, temp); sqlcon.Close(); return ds.Tabl
9、estemp; catch return null; public static DataTable GetTable(string strsql, params SqlParameter param) try CreateConnection(); string str = strsql; SqlDataAdapter sda = new SqlDataAdapter(strsql, sqlcon); foreach (SqlParameter par in param) sda.SelectCommand.Parameters.Add(par); DataSet ds = new Data
10、Set(); sda.Fill(ds, temp); sqlcon.Close(); return ds.Tablestemp; catch return null; 数据访问层创建了两个类,BookAccess.cs和UserAccess.cs,分别实现访问存放书籍和用户的信息的功能,代码如下:namespace BookDAL public class BookAccess public DataTable BookQuarry(Book b) string str = select * from BookInfo where BookType= + b.Booktype + or Boo
11、kName like% + b.Bookname + % or BookAuthor=% + b.Bookauthor + %or BookID= + b.Bookid + ; return Database.GetTable(str); public DataTable QuarryAll() string str = select * from BookInfo; return Database.GetTable(str); public DataTable QuarryMyBook(string id) SqlParameter param = new SqlParameter new
12、SqlParameter(UID,id); string str = select BookIssue,BookID,BookName,BookType,BookAuthor,BookPub,BookOutTime from BookOut where UID=UID; return Database.GetTable(str,param); public DataTable QuarryAllOut() string str = select * from BookOut; return Database.GetTable(str); public SqlCommand QuarryByID
13、(string id) string str = select * from BookInfo where BookID= + id + ; return Database.Querry(str); public int AddBook(Book b) SqlParameter parm = new SqlParameter new SqlParameter(BookID, b.Bookid), new SqlParameter(BookName, b.Bookname), new SqlParameter(BookType, b.Booktype), new SqlParameter(Boo
14、kAuthor, b.Bookauthor), new SqlParameter(BookPrice, b.Bookprice), new SqlParameter(BookPub, b.Bookpub), new SqlParameter(BookContent, b.Bookcontent), new SqlParameter(BookIssue, b.Bookissue) ; string str = insert into BookInfo values(BookID,BookName,BookType,BookAuthor,BookPrice,BookPub,BookContent,
15、BookIssue); int i = Database.ExecuteNoQuery(str, parm); return i; public int BookOut(Bookout bo) SqlParameter parm = new SqlParameter new SqlParameter(BookIssue, bo.Bookissue), new SqlParameter(BookID, bo.Bookid), new SqlParameter(BookName, bo.Bookname), new SqlParameter(BookType, bo.Booktype), new
16、SqlParameter(BookAuthor, bo.Bookauthor), new SqlParameter(BookPub, bo.Bookpub), new SqlParameter(UIdentify, bo.Uidentify), new SqlParameter(BookOutTime, bo.Bookouttime),new SqlParameter(UID, bo.Uid) ; string str = insert into BookOut values(BookIssue,BookID,BookName,BookType,BookAuthor,BookPub,UIden
17、tify,BookOutTime,UID); int i = Database.ExecuteNoQuery(str, parm); return i; public int UpdateBook(Book b) SqlParameter parm = new SqlParameter new SqlParameter(BookID, b.Bookid), new SqlParameter(BookName, b.Bookname), new SqlParameter(BookType, b.Booktype), new SqlParameter(BookAuthor, b.Bookautho
18、r), new SqlParameter(BookPrice, b.Bookprice), new SqlParameter(BookPub, b.Bookpub), new SqlParameter(BookContent, b.Bookcontent), new SqlParameter(BookIssue, b.Bookissue) ; string str = update BookInfo set BookName=BookName,BookType=BookType,BookAuthor=BookAuthor,BookPrice=BookPrice,BookPub=BookPub,
19、BookContent=BookContent,BookIssue=BookIssue where BookID=BookID; int i = Database.ExecuteNoQuery(str, parm); return i; public int DeleteBook(string bookid) string str = delete BookInfo where BookID= + bookid + ; int i = Database.ExecuteNoQuery(str); return i; public DataTable DeleteMybook(string boo
20、kissue) SqlParameter param = new SqlParameter new SqlParameter(BookIssue, bookissue) ; string str = delete BookOut where BookIssue=BookIssue; return Database.GetTable(str, param); 界面设计及实现登录界面及代码本系统的用户分为普通用户(读者)和管理员用户,管理员用户具有系统提供的所有权限,普通用户可以查询图书、借阅图书、查询个人借阅信息。系统登录界面是判断用户身份的一个交互窗体,在其中输入正确的用户名和密码后,单击“确
21、定”按钮,可根据用户角色在主界面中拥有相应的权限。登录界面如图所示:图书管理窗口,浏览图书信息,实现管理员对图书的增删改查操作。添加图书窗口:完成图书的入库操作管理员有权限可以将图书添加到数据库中,图书入库界面如上图所示。在分组框中添加标签和文本框,用来接收管理员输人的图书信息,以便保存到数据库中。代码如下:public partial class AddBook : Form public AddBook() InitializeComponent(); BookMessage bm = new BookMessage(); Book books = new Book(); private
22、void button1_Click(object sender, EventArgs e) if (textBox1.Text.Trim() = | textBox2.Text.Trim() = | textBox3.Text.Trim() = | textBox4.Text.Trim() = | textBox5.Text.Trim() = | textBox6.Text.Trim() = | textBox7.Text.Trim() = | comboBox1.Text.Trim() = ) MessageBox.Show(信息输入不完整,请重新输入, 确定); else books.B
23、ookid = textBox1.Text.Trim(); books.Bookname = textBox2.Text.Trim(); books.Booktype = comboBox1.Text.Trim(); books.Bookauthor = textBox5.Text.Trim(); books.Bookprice = textBox4.Text.Trim(); books.Bookpub = textBox3.Text.Trim(); books.Bookcontent = textBox7.Text.Trim(); books.Bookissue = textBox6.Tex
24、t.Trim(); SqlCommand cm = bm.qurryByID(books.Bookid); if (null!=cm.ExecuteScalar() MessageBox.Show(此图书已存在, 确定); else int i = bm.addBook(books); if (i!= 0) MessageBox.Show(添加图书成功, 确定); 总结本系统用SQL Server 2000做为后台数据库创建所需要的数据库和表,用C#语言进行连接,以及对数据库进行检索、添加和删除。从最后设计出的测试结果来看,效果比较明显,检索迅速、查找方便、可靠性高、存储量大、信息利用率高。该
25、系统能够极大地提高图书馆管理的效率,优化图书馆的人力、物力,降低图书馆的管理成本,为企业人事管理提供帮助。当然,要作为实际应用还有一些具体细节问题需要解决,还有一些功能需要改进。例如:没有实现多条记录的连锁删除和添加以及外部数据的导入功能;还没能实现学生借书时间的上限及超期罚款等功能。在今后的工作、学习中我将认真总结经验教训,努力使自己成为一名技术过硬、工作严谨、思维活跃的工程人员,为提高人们的生活质量做出更大的贡献。心得体会我通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1