已阅读5页,还剩61页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用C+编程语言开发系统 一个实现例子 详讲,学校:广东药学院 学院:信息工程学院 班级:医药软件08 学生:李华鑫 日期:2010年10月份制,QQ:764796723 手机短号:654735,问:C+开发系统真的很难吗?真的很高深吗?,回答是: 1.说难不难,说容易不容易! 2.“天下是有难易乎?为之,则难者亦易矣;不为,则易者亦难矣。人之为学有难易乎?学之,则难者亦易矣;不学,则易者亦难矣。”,开发系统所具备的条件,C语言的基本功一定要扎实; 有关数据库的操作要熟悉;(懂SQL语言的最好不过,即使不懂SQL语言也没关系,因为创建数据库还可以通过可视化操作来进行,只是效率低一点!) 要保持清醒的头脑;(脑子不要懜!) 要有耐心; 要有一种“化整为零”的思想在脑子里。,好了,开场白结束了, 下面进入正题开发系统的 步骤!,第一步:构想系统最终的效果蓝图 下面是以一个类似于图书馆管理系统,学生教师管理系统,仓库管理系统为例子的详讲。,登录界面: 登录进去的第一个主界面:,一个系统所有的功能,我们要把它“化整为零”,分为几个部分上主要功能,我们可以用菜单栏的形式来表达出来:,下面是详讲各个主功能的子功能,(一)基本信息管理,1.客户信息管理:,当我们单击“添加”按钮时,要出现一个添加信息的对话框:,当我们单击“修改”按钮时,要出现一个修改信息的对话框:,(一)基本信息管理,2.仓库信息管理:,当我们单击“添加”按钮时,要出现一个添加信息的对话框:,当我们单击“修改”按钮时,要出现一个修改信息的对话框:(很清楚,这个对话框和上一个是同一个对话框),(一)基本信息管理,3.用户信息管理:,当我们单击“添加”按钮时,要出现一个添加信息的对话框:(在此要注意,我们给admin用户类型来一个标记为“1”,其他都是“普通用户”标记为“2”) 其他另外3个按钮没必要专门独立做一个框架,在此我们不搞那几个框架。,(一)基本信息管理,4.修改用户密码:,(一)基本信息管理,5.退出系统: 在这里,退出系统也没必要专门独立搞一个对话框,只需要实现把应用程序关闭就OK了!,(二)产品信息管理,1.产品类别管理: “添加”“修改”左右四个按钮要弹出一样对话框:,(二)产品信息管理,2.产品信息管理:,当我们单击“添加”按钮时,要出现一个添加信息的对话框:,当我们单击“修改”按钮时,要出现一个添加信息的对话框:(与上一个对话框同一个),(三)库存操作管理,1.入库操作:,当我们单击“添加”按钮时,要出现一个添加信息的对话框:,(三)库存操作管理,2.出库操作:,当我们单击“添加”按钮时,要出现一个添加信息的对话框:,(三)库存操作管理,3.库存清点:(注意:这里只是拿来给用户看的,为了数据库的安全着想,在此使用视图view存储过程,而不是表table),(四)库存警示管理,1.数量报警:(注意:这里也是用到存储过程,为了数据库的安全着想),(四)库存警示管理,2.失效报警:(注意:这里也是用到存储过程,为了数据库的安全着想),(五)统计查询管理,1.产品入库统计表:(注意:这里也是用到存储过程,为了数据库的安全着想),(五)统计查询管理,2.库存产品统计一览表:(注意:这里也是用到存储过程,为了数据库的安全着想),(六)系统数据维护,1.备份数据库; 2.恢复数据库。 (这2个功能对于开发者来讲没什么大不了,因为开发者可以直接在数据库里进行操作;但是对于不懂计算机的用户来说,数据库的备份和恢复都非常重要。因此我们要为用户提供一个简便易懂的按钮来实现数据库的维护!),一个系统项目的功能蓝图就这样我们构思好了! (要说明的一点是,你可以用铅笔在图纸上自己进行粗略的勾画,要相信“好记性不如烂笔头”。在后面的n多个对话框有联系的时候,要给各个对话框进行ID标号也即是标明不同的ID号,如果你不用图纸写好标记好,你会很容易忘记究竟哪个是哪个,哪里是哪里!小项目是这样,大项目更需要这样!),我们数一下以上的对话框,总共要创建不重复的总共有23个对话框。对话框之间有很多都是有联系的,实践中发现很多的对话框的操作都是千篇一律类似的!,为了不占用蔡老师太多的宝贵时间,我决定下面详细讲解“登陆界面”的一个典型例子,其他的都是在此基础上模仿的。“放之四海而皆准”“万变不离其宗”!,系统开发进入第二步,创建数据库 建表 建视图,创建数据库,打开SQL Sever 2005 连接登录,单击“新建查询” 进入SQL代码编辑区 敲好代码,选中CREATE DATABASE Stock GO 接着按下“Alt+X”或者点菜单栏左上角的“执行” !就这样一个数据库“Stock”被创建了! 创建表:在每次创表或者建立视图前先用一下已经创建的数据库Stock USE Stock GO CREATE TABLE Client (Cid int PRIMARY KEY IDENTITY, Cname varchar(50) NOT NULL, Ctype tinyint, Contact varchar(30), Address varchar(50), Postcode varchar(10), Phone varchar(30), Fax varchar(30), Memo varchar(100) ) GO,为了节省时间,方便给大家数据库的创建,我已经专门把写好了数据库创建的代码放在txt记事本里,需要的同学自己来Ctrl+CCtrl+V。,值得注意点的是,为了兼容市面上的数据库,有2000、2005、2008、2010版本的,要在创建完数据库以后执行以下语句: EXEC sp_dbcmptlevel Stock,80 GO 或者 ALTER DATABASE Stock SET COMPATIBILITY_LEVEL = 80 GO (注意:“80”意思是兼容到2000版本的),系统开发进入第三步,打开C+2005,新建一个Visual C+ MFC 应用程序:,MFC(Microsoft Foundation Classes),是一个微软公司提供的类库,以C+类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。,一.先搞好前面的23个对话框架,视图其他窗口资源视图 在右端的树形结构目录看到这样画面: 右击对话框“Dialog”添加好前面的23个对话框,登陆界面的框架的创建,点开“工具箱”,在空白对话框上添加编辑框 以及静态说明 和按钮 添加完以后最终效果图: 其中密码编辑框中出现6个圆点,是可以在编辑框的右击选择属性,在属性窗口中选择password类型的,很自然就会出现6个圆点了!同学们,编程是不是超级简单呢?我是要让大家知道原来C+编程还可以这样玩的!因为这是组件“COM” Component Objects Model 组件对象模型,简称COM,其他22个对话框也相类似这样创建出来,这一点希望大家找一些C+组件COM的使用方法,这里不做详细讲解,时间有限! 再创建2个对话框: 我们把“登陆界面”添加一个类“LoginDlg”,“用户管理”添加一个类“UserManDlg”,“编辑用户信息”添加一个类“UserEditDlg”,添加问以后会相应地出现.h头文件和.cpp文件,头文件拿来声明变量、函数.cpp用来实现功能!,完成了以后会出现以下一堆头文件和实现文件:,好,下面正式进入代码编辑区域,注意放长眼镜,睁大眼睛看好这中心一环节!(大家都知道.h文件一般是拿来声明、初始化用的,真正实现功能的是在.cpp文件,下面的我讲述的就是.cpp文件,在.ccp文件中用到的变量我已经在.h文件里声明过了,所以大家看到了“无中生有”的变量不要惊讶,我都已经声明过了!),我们回到“登陆界面”那个框架: void CLoginDlg:OnOK() /将对话框中编辑框的数据读取到成员变量中 UpdateData(TRUE); /检查数据有效性 if (m_UserName = “) MessageBox(“请输入用户名,否则出错!“); return; if (m_Pwd = “) MessageBox(“请输入密码“); return; /定义CUsers对象,用于从表Users中读取数据 CUsers user; user.GetData(m_UserName); /如果读取的数据与用户输入数据不同,则返回 if (user.GetPwd() != m_Pwd) MessageBox(“用户信息不正确,无法登录!“); return; /关闭对话框 CDialog:OnOK(); ,我们看看一下“登陆界面”所用到的头文件 就知道我们使用到Users里面的一些函数, 里面有很多构造好的函数提供别的文件调用。 int CUsers:HaveName(CString cUserName) /连接数据库 ADOConn m_AdoConn; m_AdoConn.OnInitADOConn(); /设置SELECT语句 _bstr_t vSQL; vSQL = “SELECT * FROM Users WHERE UserName=“ + cUserName + “; /执行SELECT语句 _RecordsetPtr m_pRecordset; m_pRecordset = m_AdoConn.GetRecordSet(vSQL); if (m_pRecordset-adoEOF) return -1; else return 1; /断开与数据库的连接 m_AdoConn.ExitConnect(); ,什么叫做ADO?,微软公司的ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB(Object Linking and Embedding),对象连接与嵌入,简称OLE技术的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO中的命令对象来执行。,C:Program FilesCommon FilesSystemadomsado15.dll,什么是_bstr_t?,_bstr_t类封装BSTR有趣的地方就是它的封装方式有点类似于智能指针,又有点像COM管理生存期的方式。_bstr_t将两者结合起来并具体体现在构造函数、赋值函数和析构函数中。 _variant_t(变体,不同的)和_bstr_t这两个类分别封装并管理VARIANT和BSTR这两种数据类型,VARIANT和BSTR这两种类型是COM中使用的数据类型。为了C+中的变量应用到ADO编程中,只能进行数据类型的转换。 通过_variant_t和_bstr_t这两个类,就可以方便的把C+类型变量转换成COM中的变量了。其他类型转换成_bstr_t可以直接赋值。 ,CUsers:CUsers() UserName = “; Pwd = “; User_type = 0; CUsers:CUsers() CString CUsers:GetUserName() return UserName; void CUsers:SetUserName(CString cUserName) UserName = cUserName; CString CUsers:GetPwd() return Pwd; void CUsers:SetPwd(CString cPwd) Pwd = cPwd; int CUsers:GetUser_type() return User_type; void CUsers:SetUser_type(int iUser_type) User_type = iUser_type; ,为数据库插入数据,void CUsers:sql_insert() /连接数据库 ADOConn m_AdoConn; m_AdoConn.OnInitADOConn(); /设置INSERT语句 CString strType; strType.Format(“%d“, User_type); _bstr_t vSQL; vSQL = “INSERT INTO Users VALUES(“ + UserName + “,“ + Pwd + “,“ + strType + “)“; /执行INSERT语句 m_AdoConn.ExecuteSQL(vSQL); /断开与数据库的连接 m_AdoConn.ExitConnect(); ,更新数据库里面的表,void CUsers:sql_updatePwd(CString cUserName) /连接数据库 ADOConn m_AdoConn; m_AdoConn.OnInitADOConn(); /设置UPDATE语句 CString strType; strType.Format(“%d“, User_type);(注意这里,我是设置了权限的) _bstr_t vSQL; vSQL = “UPDATE Users SET Pwd=“ + Pwd + “ WHERE UserName=“ + cUserName + “; /执行UPDATE语句 m_AdoConn.ExecuteSQL(vSQL); /断开与数据库的连接 m_AdoConn.ExitConnect(); ,删除数据库表里的数据,void CUsers:sql_delete(CString cUserName) /连接数据库 ADOConn m_AdoConn; m_AdoConn.OnInitADOConn(); /设置DELETE语句 _bstr_t vSQL; vSQL = “DELETE FROM Users WHERE UserName=“ + cUserName + “; /执行DELETE语句 m_AdoConn.ExecuteSQL(vSQL); /断开与数据库的连接 m_AdoConn.ExitConnect(); ,从数据库表里获取信息,void CUsers:GetData(CString cUserName) /连接数据库 ADOConn m_AdoConn; m_AdoConn.OnInitADOConn(); /设置SELECT语句 _bstr_t vSQL; vSQL = “SELECT * FROM Users WHERE UserName=“ + cUserName + “; /执行SELETE语句 _RecordsetPtr m_pRecordset; m_pRecordset = m_AdoConn.GetRecordSet(vSQL); /返回各列的值 if (m_pRecordset-adoEOF) CUsers(); else UserName = cUserName; Pwd = (LPCTSTR)(_bstr_t)m_pRecordset-GetCollect(“Pwd“); User_type = atoi(LPCTSTR)(_bstr_t)m_pRecordset-GetCollect(“User_type“); /断开与数据库的连接 m_AdoConn.ExitConnect(); ,看一下“编辑用户信息”框架,void CUserEditDlg:OnOK() UpdateData(TRUE); CUsers usr; usr.SetUserName(m_UserName); usr.SetPwd(“888888“); usr.SetUser_type(m_UserType.GetCurSel()+1); if (usr.HaveName(m_UserName) = 1) /如果存在当前用户 MessageBox(“当前用户已存在,请选择其他用户名“); return; /插入用户记录 usr.sql_insert(); CDialog:OnOK(); BOOL CUserEditDlg:OnInitDialog() CDialog:OnInitDialog(); / TODO: Add extra initialization here m_UserType.SetCurSel(iUserType - 1); if (curUser.GetUserName() != “Admin“) GetDlgItem(IDC_USERTYPE_COMBO)-EnableWindow(FALSE); return TRUE; ,看一下“用户管理”框架,void CUserManDlg:OnAddButton() CUserEditDlg dlg; dlg.iUserType = 2; if (dlg.DoModal() = IDOK) m_adodc.Refresh(); void CUserManDlg:OnModiButton() if (m_datalist.GetText() = “) MessageBox(“请选择用户“); return; if (curUser.GetUserName() != “Admin“ ,(续上),void CUserManDlg:OnDelButton() if (m_datalist.GetText() = “) MessageBox(“请选择用户“); return; if (curUser.GetUserName() != “Admin“ ,回眸一看,不知不觉地我们就已经实现了3个界面的功能; 一个是登陆界面的实现功能; 一个是用户编辑界面实现的功能; 再一个是用户管理的实现功能。 再一次回问道:C+开发系统真的有这么难吗? 再一次回答说:很容易!,剩下的20个界面的功能实现,剩下的20个界面功能的实现都和上面的三个相类似,都是千篇一律的。懂一个典型的例子,后面的都很容易上手! 要把它做出来,注意要有耐心,要用时间来砸出来的,用心血呕出来的,用智慧总结出来的! 我能,相信大家一定也能,也许更强! 能够熟练地做到这一点,你已经是半个软件设计师了!还愁以后找工作没人要吗?不!,系统开发第四步,用户界面美工,其目的之一是能吸引用户的眼球,最终达到一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园家长育儿观念引导策略研究-基于幼儿园家长学校课程实施数据分析深度研究
- 幼儿园户外大型玩具破损率与维护周期-基于2023年后勤维修工单与安全检查表
- 2026年人教版三年级数学下册全套测试卷(配2026年春改版教材)(1)新版
- 消防安全教育培训课件及考试题库
- 建筑施工安全技术交底及管理方法
- 初中英语Unit5教学方案与反思
- 四年级科学教学课件与讲义合集
- 小学二年级数学应用题专项训练
- 某玻璃厂熔炼操作准则
- 施工组织设计封面
- 《机床数控技术 第4版》课件全套 李郝林 第1-9章 概述、数控加工程序编制 -自由曲线及曲面的加工
- 古诗词诵读《李凭箜篌引》课件++2023-2024学年统编版高中语文选择性必修中册
- 教师与学生谈心谈话记录表
- JJG 693-2011可燃气体检测报警器
- 《基本乐理》课件-第五课 和弦
- 蜡烛变化实验报告单1
- 会务接待礼仪培训
- 光伏组件失效模式介绍课件
- 市场调查与统计知到章节答案智慧树2023年北京财贸职业学院
- DB42T 1144-2016燃气用不锈钢波纹软管安装及验收规范
- GB/T 14048.7-2016低压开关设备和控制设备第7-1部分:辅助器件铜导体的接线端子排
评论
0/150
提交评论