1、二、技术可行性本设计“名片管理系统”是为各类人员开发的信息管理系统。通过近几个月的学习和实践,对开发管理信息系统又有了新的认识。使自己在开发管理信息系统方面的技术更加成熟。由于本设计最重要体现的是实用性,所以,通过大量的社会调查和分析,结合自己现有的技术水平加上导师的指导,还是能按期完成本毕业设计。三、经济可行性 成本方面:由于本毕业设计属于计算机科学(本科)教学的最后一个环节,所以人力消耗免费,资源学校提供,指导老师义务指导。所以成本计算只需计算开发期间开发者的生活消费,学校资源的消耗(主要包括机器的折价和消耗的电钱),所以开发本软件的成本是非常低的。四、操作可行性 本软件的用户对象是信息管
2、理的工作人员,由于本软件要设计成友好的界面,写出详细的使用说明,用户只需懂得简单的计算机操作知识,就能自由应用本软件。 所以从以上几个方面的分析来看,开发本软件是完全可行的。五、需求分析结合国内外管理软件的最新研究成果进行大量的调查和分析可以得出一下的需求分析。(1)系统功能需求分析系统开发的总体任务是各种信息的系统化、规范化和自动化。主要完成功能:系统基本信息设置。包括添加新项目,退出等。名片信息的删除,查询等。名片信息的输入。包括包括姓名,电话,手机,备注等。(2)数据库需求分析用户的需求具体体现在各种信息的提供、保存、更新、和查询,这就要求数据库结构能充分满足各种信息的输出和输入。收集基
3、本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。仔细分析调查的基础上,得到如下图所示的本系统所处理的数据流程。名片管理系统数据流程图六、系统总体设计经过需求分析阶段的工作,系统必须“做什么”已经清楚了,现在是决定“怎样做”的时候了。总体设计的基本目的就是回答“概括的说,系统应该如何实现?”这个问题,因此,总体设计又称为概要设计或初步设计。总体设计的重要任务是设计软件的结构,也就是要确定系统中每个程序由哪些模块组成,以及这些模块相互间的关系。 通常程序中的一个模块完成一个适当的子功能。应该把模块组成良好的层次系统,顶层模块调用它的下层模块以实现程序的完整功能
4、,每个下层模块再调用更下层的模块,从而完成程序的一个子功能,最下层的模块完成最具体的功能。软件结构(即由模块组成的层次系统)可以用层次图或结构图来描述。对需求分析得到各项功能进行集中、分块、按照结构化程序设计的要求,得到如下图所示的系统功能模块图。系统功能模块图(1)概念结构设计由第三章的需求分析,就可以设计出能够满足用户需求的各种实体结构,以及他们之间的关系,为以后的逻辑结构设计打下基础。名片信息实体E-R图如下所示: 客房信息实体E-R图(2)逻辑结构设计首先将名片管理信息系统的数据库概念结构转化为Access 2003数据库系统所支持的实际数据模型,即:数据库的逻辑结构。其表格如下: 七
5、、系统实现1、用户登录窗体 public class LoginForm : Form private void btnOk_Click(object sender, EventArgs e) if (txtUserName.Text.Trim().Length 0 & txtPassword.Text.Trim().Length 0) string strConnect=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb;Persist Security Info=False; OleDbConnection thisConnection=
6、new OleDbConnection(strConnect); Try string name = txtUserName.Text.Trim(); string pwd = txtPassword.Text.Trim(); thisConnection.Open(); OleDbCommand cmd = new OleDbCommand(select * from admin where username= + txtUserName.Text + and password= + pwd + , thisConnection); OleDbDataReader dr = cmd.Exec
7、uteReader(); if (dr.Read() this.Hide(); MainForm MCC = new MainForm(); MCC.Show(); else MessageBox.Show(请输入用户名和密码 MessageBox.Show(输入用户名或密码错误., 登录错误, MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); DialogResult = DialogResult.None; private void btnCancel_Click(object sen
8、der, EventArgs e) this.Close(); private void txtUserName_TextChanged(object sender, EventArgs e) txtUserName.SelectAll(); private void txtPassword_TextChanged(object sender, EventArgs e) txtPassword.SelectAll();2、名片管理系统主窗体本模块的创建是整个管理系统的重要环节,这是管理系统的主界面,本管理系统共五个模块,分别是系统设置,信息管理,类别管理,打印管理,查询管理。其中系统设置模块功
9、能是:添加新类别,退出。主窗体模块主要代码如下:private void LoadData() string strConnect= conn=new OleDbConnection(strConnect); string query=SELECT id,name,parentid FROM codeitems ORDER BY parentid,id DataSet ds = new DataSet() ; conn.Open() ; OleDbDataAdapter command = new OleDbDataAdapter(query,conn); command.Fill(ds,co
10、deitems); DataTable dt=ds.Tables; DataRowCollection rows=dt.Rows; Hashtable h=new Hashtable(); arrCategoryID=new ArrayList(); foreach (DataRow dr in rows) TreeNodeItem tni=new TreeNodeItem(int)dr0,(string)dr1,(int)dr2); int parentID=tni.ParentID; if (tni.IDmaxID) maxID=tni.ID; if (parentID=0)/is cat
11、egory arrCategoryID.Add(tni); ArrayList arr=(ArrayList)hparentID; if (arr=null) arr=new ArrayList(); h.Add(parentID,arr); arr.Add(tni); rootNode=new TreeNode(名片管理 rootNode.Tag=new TreeNodeItem(0,-1); treeViewCode.Nodes.Add(rootNode); if (maxID=-1) maxID=0; BuildBranch(h,0,rootNode);3、类别设置模块模块主要代码如下:
12、private void ShowNewCategoryForm() CategoryForm f=new CategoryForm(); if (f.ShowDialog()=DialogResult.OK) string strName=f.ItemName; string strNotes=f.Notes; if (CreateNewCategory(strName,strNotes)=null) MessageBox.Show(this,不能保存到数据库,数据库错误!,错误提示,MessageBoxButtons.OK,MessageBoxIcon.Error);4、名片输入模块:pr
13、ivate void ShowNewItemForm() ItemForm f=new ItemForm(arrCategoryID); string strName=f.ItemName; string strCode=f.Code; TreeNodeItem tniCategory=(TreeNodeItem)f.Category; TreeNode newNode=new TreeNode(strName); maxID+; TreeNodeItem tni=new TreeNodeItem(maxID,strName,tniCategory.ID); newNode.Tag=tni;i
14、f (MessageBox.Show(您确定要保存在+strAuthor, 信息提示, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes)INSERT INTO codeitems (id,name,code,notes,phone,email,msn,qq,address,author,parentid) if (i=-1 MessageBox.Show(this,不能保存到数据库,数据库错误! else for (int j=0;jrootNode.Nodes.Count;j+) TreeNode no
15、deTemp=rootNode.Nodesj; TreeNodeItem temp=(TreeNodeItem)nodeTemp.Tag; if (temp.ID=tniCategory.ID) nodeTemp.Nodes.Add(newNode); catch(Exception) MessageBox.Show(this,5、名片查询private void btnOK_Click(object sender, System.EventArgs e) if (txtSearch.Text.Trim()=) MessageBox.Show(this,请输入你要查询的信息!,MessageB
16、oxButtons.OK,MessageBoxIcon.Information); txtSearch.Focus(); else if (chkCode.Checked=false & chkNotes.Checked=false)请选择你要查询的范围! else this.DialogResult=DialogResult.OK;6、修改模块private void EditCategoryItem() TreeNode curNode=(TreeNode)treeViewCode.SelectedNode; if (curNode=null) return; TreeNodeItem t
17、ni=(TreeNodeItem)curNode.Tag; if (tni.ParentID=-1)/root if (tni.ParentID=0)/is category CategoryForm f=new CategoryForm(curNode.Text,txtNotes.Text); string strName=f.ItemName; string strNotes=f.Notes;tni.Name=strName; try string query=UPDATE codeitems SET name= OleDbCommand command =new OleDbCommand
18、(query,conn); int i=command.ExecuteNonQuery(); if (i=-1) MessageBox.Show(this,不能保存到数据库,数据库出错! else curNode.Text=strName;txtNotes.Text=strNotes; catch(Exception MessageBox.Show(this, ItemForm f=new ItemForm(arrCategoryID,tni,new CodeItem(txtCode.Text,txtNotes.Text,txtPhone.Text,txtEmail.Text,txtMsn.T
19、ext,txtQq.Text,txtAddress.Text),curNode.Parent.Text,curNode.Text);7、打印模块八、模块主要源代码:private void News_Load(object sender, System.EventArgs e) OleDbConnection conn=new OleDbConnection(strConnect);SELECT * FROM codeitems ORDER BY parentid,id DataSet ds = new DataSet() ; conn.Open() ; OleDbDataAdapter co
20、mmand = new OleDbDataAdapter(query,conn); dataGrid1.DataSource=ds.Tables0.DefaultView; private void menuItem1_Click(object sender, System.EventArgs e) private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) private void button1_Click(object sender, System.E
21、ventArgs e) /create printerclass object PrintC = new PrinterClass(printDocument1,dataGrid1); printDocument1.Print(); private void button2_Click(object sender, System.EventArgs e) /create printerclass object if (printPreviewDialog1.ShowDialog() = DialogResult.Cancel) private void printDocument2_Print
22、Page(object sender, System.Drawing.Printing.PrintPageEventArgs e) float CurrentX = (e.PageBounds.Width - e.MarginBounds.Left) / 2; /center float CurrentY = e.MarginBounds.Top; string text = dataGrid1.CaptionText; Font font = dataGrid1.CaptionFont; e.Graphics.FillRectangle(new SolidBrush(dataGrid1.CaptionBack
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1