ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:193.57KB ,
资源ID:23503553      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23503553.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(windoes系统编程课程设计.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

windoes系统编程课程设计.docx

1、windoes系统编程课程设计中南民族大学计算机科学学院Windows系统编程课程设计报告题 目: 汽车客运公司售票系统 专 业 自动化 学 生 姓 名 张宁 班 级 学 号 08064008 指 导 老 师 程鹏 完 成 日 期 2010年12月22日 一、课题名称 Windows系统编程课程设计汽车客运公司售票系统之售票系统登陆界面的设计二、课题内容和要求1、内容:1. 了解Windows编程的基础知识,掌握MFC应用程序的基本知识2. 加深对数据库的掌握和运用3. 掌握用VC+开发应用程序的的一般步骤和方法4. 进一步加强C+的编程能力和对程序结构的理解5. 基本掌握面向对象程序设计的基

2、本思路和方法2.要求:1. 了解Windows编程的基础知识,掌握MFC应用程序的基本知识;基本掌握面向对象程序设计的基本思路和方法;掌握用VC+开发应用程序的一般步骤和方法;系统以Windows标准菜单界面方式工作,运行界面友好,演示程序以用户和计算机的对话方式进行2. 程序的功能建立一个基于对话框的MFC,要设置权限,即设置一个登陆的对话框。进入系统以后能够展示出一个普通的汽车公司售票系统,能够实现售票等基本功能。3. 输入输出的要求 采用界面选择与编辑框两种输入方式,输出结果直接显示在售票对话框中。输入的数据必须符合程序所规定的合法输入方式,对不合法的信息输入将提示无法处理。 4. 综合

3、应用 使用界面编程、网络、数据库、文件系统、线程和进程、异常处理等知识。 特别是数据库的应用,用来存储数据和提供数据。 对于网络主要进行网络通信,连接客户端和服务器端。 采取模块化方式进行程序设计,要求程序的功能设计、数据结构设计及整体结构设计合理三、开发工具介绍随着计算机的广泛应用,办公无纸化正在越来越普及,传统的手工信息管理已显然不能满足人们的需求,这就需要一种适应潮流的新的管理系统的出现,员工信息管理与考勤系统就是用Visual C+开发的Access数据库管理系统。Access数据库是一个关系数据库,在Visual C+中,可以用SQL语句实现对它的操作。本系统的建表是直接在Acces

4、s中进行,而对表的操作则在Visual C+中通过编程进行。Visual C+是一种编程开发非常灵活的工具。有两种编程方法:其一是WINDOWS API函数,另一种就是使用MFC。Visual C+与数据库连接的一种方式是MFC ODBC连接Visual Studio 2010是微软亚太研发集团服务器与开发工具事业部成立以来参与的最大开发项目。超过100位工程师在为Visual Studio 2010的多个重要模块设计中贡献了他们的智慧与心血。在.NET Framework 4.0中为Windows Forms架构设计运行时和设计时的新功能;对SharePoint、Silverlight、WP

5、F、WCF、WF等多个平台提供更多工具支持;大大增强Visual Studio中的各种基本开发工具,例如C+编译和链接工具,并行开发工具中的调试器和性能探视器;为更好地支持团队开发,提供全新的UML建模工作组件、模型浏览器和建模工程等。Microsoft为单独工作或在小型团队中的专业开发人员提供了两种选择,Visual Studio 2005 Professional Edition和用于Microsoft Office系统的Visual Studio 2005工具。每种版本都在标准版的特性上进行了扩展,包括用于远程服务程序开发和调试、SQL Server2005开发的工具,以及完整的、没有限

6、制的开发环境。每种产品都可以单独购买或打包定购。 专业开发人员喜欢自由的使用.NET Framework 2.0,它是一种稳健的、功能齐备的开发环境,支持创建扩展Visual Studio集成开发环境的工具。 MFC借助C+的优势为Windows开发开辟了一片新天地,同时也借助ApplicationWizzard使开发者摆脱离了那些每次都必写基本代码,借助ClassWizard和消息映射使开发者摆脱了定义消息处理时那种混乱和冗长的代码段。更令人兴奋的是利用C+的封装功能使开发者摆脱Windows中各种句柄的困扰,只需要面对C+中的对象,这样一来使开发更接近开发语言而远离系统. 利用C+的封装性

7、开发者可以更容易理解和操作各种窗口对象;利用C+的派生性开发者可以减少开发自定义窗口的时间和创造出可重用的代码;利用虚拟性可以在必要时更好的控制窗口的活动。而且C+本身所具备的超越C语言的特性都可以使开发者编写出更易用,更灵活的代码。Platform SDK。这才是Visual C+和整个Visual Studio的精华和灵魂,虽然我们很少能直接接触到它。大致说来,Platform SDK是以Microsoft C/C+编译器为核心(不是Visual C+,看清楚了),配合MASM,辅以其他一些工具和文档资料。上面说到Developer Studio没有编译程序的功能,那么这项工作是由谁来完成

8、的呢?是CL,是NMAKE,和其他许许多多命令行程序,这些我们看不到的程序才是构成 Visual Studio的基石。vc+是Windows平台上的C+编程环境,学习VC要了解很多Windows平台的特性并且还要掌握MFC、ATL、COM等的知识,难度比较 大。Windows下编程需要了解Windows的消息机制以及回调(callback)函数的原理;MFC是Win32API的包装类,需要理解文档视 图类的结构,窗口类的结构,消息流向等等;COM是代码共享的二进制标准,需要掌握其基本原理等等。VC作为一个主流的开发平台一直深受编程爱好者的喜爱,但是很多人却对它的入门感到难于上青天,究其原因主要

9、是大家对他错误的认识造成的,严格的来说VC +不是门语言,虽然它和C+之间有密切的关系,如果形象点比喻的话,可以C+看作为一种”工业标准”,而VC+则是某种操作系统平台下的”厂商标 准”,而”厂商标准”是在遵循”工业标准”的前提下扩展而来的。VC+应用程序的开发主要有两种模式,一种是WIN API方式,另一种则是MFC方式,传统的WIN API开发方式比较繁琐,而MFC则是对WIN API再次封装,所以MFC相对于WIN API开发更具备效率优势。 Windows系统是一个消息驱动的OS: 1、消息的组成:一个消息由一个消息名称(UINT),和两个参数(WPARAM,LPARAM)。当用户进行

10、了输入或是窗口的状态发生改变时系统都会发送消息到某一个窗口。例如当菜单转中之后会有WM_COMMAND消息发送,WPARAM的高字中(HIWORD(wParam))是命令的ID号,对菜单来讲就是菜单ID。当然用户也可以定义自己的消息名称,也可以利用自定义消息来发送通知和传送数据。 2、谁将收到消息:一个消息必须由一个窗口接收。在窗口的过程(WNDPROC)中可以对消息进行分析,对自己感兴趣的消息进行处理。例如你希望对菜单选择进行处理那么你可以定义对WM_COMMAND进行处理的代码,如果希望在窗口中进行图形输出就必须对WM_PAINT进行处理。 3、未处理的消息到那里去了:M$为窗口编写了默认

11、的窗口过程,这个窗口过程将负责处理那些你不处理消息。正因为有了这个默认窗口过程我们才可以利用Windows的窗口进行开发而不必过多关注窗口各种消息的处理。例如窗口在被拖动时会有很多消息发送,而我们都可以不予理睬让系统自己去处理。 4、窗口句柄:说到消息就不能不说窗口句柄,系统通过窗口句柄来在整个系统中唯一标识一个窗口,发送一个消息时必须指定一个窗口句柄表明该消息由那个窗口接收。而每个窗口都会有自己的窗口过程,所以用户的输入就会被正确的处理。例如有两个窗口共用一个窗口过程代码,你在窗口一上按下鼠标时消息就会通过窗口一的句柄被发送到窗口一而不是窗口二。四、设计思路用户管理数据库采用的是SQL Se

12、rver数据库,建立用户权限表以及设备信息表,通过MFC ODBC方式访问,使用类CRecordset的函数MoveFirst()、MoveLast()、MoveNext()、MovePrev()、IsBOF()、IsEOF()对设备信息表实现遍历操作,使用类CRecordset的函数AddNew增加设备或者函数Delete删除设备。并根据用户登录情况确定用户是否可以修改设备信息,以此实现后台数据与前台界面操作的一致。在帐户被通过后,用户可以使用它来登录系统,登录时系统自动查找用户表,判断帐户是否存在,存在则提示用户登录成功,并显示可以的操作;否则,提示不存在该用户,返回登录界面,让用户重新输

13、入信息。另外,经过这个验证的过程,提醒用户牢记帐号和密码,防止他人盗窃个人信息,从而提高用户信息的安全性。进行登录操作时,访问到了用户表(User)在用户未成功登录时,个人资料功能是被禁止的。只有成功登录以后,用户才有资格修改自己的资料,包括基本信息的修改,帐户(昵称或密码)的更新,帐号是不可以更改的,一旦服务器分配以后,始终与帐户绑定。方便管理员管理帐户,也使得系统具有一定的稳定性。该模块访问到了用户表和个人信息表。 备注:当在修改密码时,系统会确认旧密码,如果输入的旧密码错误,系统会弹出出错信息,否则才允许更新密码。并且,如果修改昵称,系统会把修改后的昵称更新到两个表中,使得数据能够保持同

14、步,方便管理员的管理和维护,提高了系统的可靠性。系统具有数据录入、数据修改、记录查询、报表打印等功能。较全面满足了材料库存管理的各项工作。该系统采用模块化原理编程,做到了模块规模适中,本身相对独立。模块化使程序结构清晰,易于设计、易于理解,提高了系统的可靠性。用户的需求具体体现在各种信息的提供、保存、更新和查询统计,这就要求数据库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的详细设计打下基础。针对本系统要求,设计如下的数据项和数据结构: 用户信息表:包括的数据项有:,用户名,用户密码,用户权限。 系统信息表:包括的数据项有:权限I

15、D,系统设置。读入模块该模块只是起选择通道的作用。根据模块的输入,输出和小说明,可设计出该模块的算法。“读入”模块的算法模块名:READING输入:、输出:、指令:switch( ) case 1:调用“汽车客运公司售票系统售票管理”模块 case 2:调用“汽车客运公司售票系统系统管理员”模块 文件读入模块 该模块主要从文件中读取存储的旅客登记信息和班次信息,并将其输出到屏幕或者流向信息处理模块。 模块名:WenJianREAD; 输入: 输出: 要实用的变量:ChengKe m_chengke; 要查询的乘客 Bus m_bus; 被查询的班次int AfxMessageBox( LPCT

16、STR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 );用于弹出一个消息框1,创建一个MFC的application,2,把控件拖到界面上放好,可以放两个EDIT,一个放用户名,一个放密码,再放一个按钮,名字改成确定,3,双击确定按钮,会弹出编写代码的地方.如果LZ不要判断用户名是否正确,只要写一句就好.MessageBox(_T(登陆成功!);,如果还需要内置一个用户名密码进行判断就获取一下两个EDIT的值进行一下判断就好了. 程序的主要有两个主要处理模块:各个类的描述和对话框的处理1.定义类先定义一个乘客类:class ChengKe 座位

17、编号 Num int 姓名 Name char30身份证号 IdNum char20friend Bus;再定义一个汽车类:class Bus 班次号 BanCi char 20发车时间 StartTime char 20 终点城市 DestCity char20座位数 AllSeats int已售数量 CurSeats int指向乘客链表的指针 Psgs ChengKe *指向下一辆车的指针 next Bus * friend BusList;public: Bus(char *a,char *b,char *c,int d ,int e) /构造函数 BanCi=a; StartTime=

18、b; 依次初始化 Psgs=new ChengKeAllSeats; /生成乘客动态数组 for (int i=1; iNum=I; /将座位编号初始化将乘客姓名和身份证号清空Bus() /析构函数 delete Psgs;最后定义汽车列表类:class BusList 指向汽车类的指针 head Bus *public: BusList() BusList() int AddBus(char *bc,char *st,char *dc,int as) /班次 发车时间 终点城市 座位数 int DeleteBus(char *bc) /班次 int AddChengKe(char *bc,c

19、har *name,char *idnum) /班次号 姓名 身份证号 int DeleteChengKe(char *bc,char *name) /班次号 姓名 int FindChengKe(char *name,char &Ans) /姓名 输出的地方(char *) int SaveBusListToFile() int SaveChengKeListToFile(char *bc) /班次 GetBusListToScreen() GetChengKeListToScreen(char *bc) /班次BusList:BusList() /生成10辆汽车链表,并用head指向Bus

20、List:BusList() /删除链表AddBus(char *bc,char *st,char *dc,int as) /班次 发车时间 终点城市 座位数 /在链表中增加一个bus结点。DeleteBus(char *bc) /班次 /在链表中删除一个bus结点。int AddChengKe(char *bc,char *name,char *idnum) /班次号 姓名 身份证号 /找到相应的班次,添加ChengKe2.定义所用的全局变量/全局变量BusList *buslist; /这里定义了一个汽车列表的指针float XueShengPiao=0.5; /学生票折扣double J

21、unRenPiao=0.7; /军人票折扣double QiTaPiao=0.8; /其它票折扣int YuShouDays=3; /预售期限int JieZhiHours=1; /退票截止时间(小时)int JieZhiMins=5; /售票截止时间(分钟)CTime nowtime;CString today; /假定今天的日期int whichday=0; /正在操作哪一天 3、模块设计 通过CMenu:CreatePopupMenu()建立一个弹出菜单,然后使用TrackPopupMenu弹出菜单。使用CreatePopupMenu创建的菜单也可以将其作为一个弹出项添加另一个菜单中。下

22、面的伪代码演示了如何创建一个弹出菜单并进行修改后弹出: CMenu menu1,menu2;menu1.CreatePopupMenumenu1.InsertMenu(1)menu1.InsertMenu(2)menu1.InsertMenu(3)menu2.CreatePopupMenumenu2.AppendMenu(MF_POPUP,1,menu1.Detach() 将弹出菜单加入 or InsertMenu.menu2.InsertMenu(string desc);menu.TrackPopupMenu(.)用户登录界面设计,判断用户名密码是否正确 BOOL CLoginDlg:On

23、InitDialog() CDialog:OnInitDialog(); / TODO: Add extra initialization here :SetWindowPos( m_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); SetDlgItemText(IDC_USER_NAME,admin); SetDlgItemText(IDC_USER_PASSWORD,123456); /m_ctrlRadio1.SetCheck(1); return TRUE; / return TRUE unless you set th

24、e focus to a control / EXCEPTION: OCX Property Pages should return FALSE void CLoginDlg:OnSubmit() / TODO: Add your control notification handler code here /读取用户输入的账号密码 GetDlgItemText(IDC_USER_NAME,strUserName); GetDlgItemText(IDC_USER_PASSWORD,strUserPassword); /判断账号密码是否匹配 if ( strUserName != admin)

25、 MessageBox( 账号不存在! ,警告!); SetDlgItemText(IDC_USER_NAME,); SetDlgItemText(IDC_USER_PASSWORD,); return; else if( strUserPassword != 123456) MessageBox( 密码错误! ,警告!); SetDlgItemText(IDC_USER_PASSWORD,); return; OnOK();下面的伪代码演示了消息循环的用法: while(1) id=getMessage(.); if(id = quit) break; translateMessage(.)

26、;BOOL CShouPiaoXiTongDlg:OnInitDialog() /初始化 CDialog:OnInitDialog(); / Set the icon for this dialog. The framework does this automatically / when the applications main window is not a dialog SetIcon(m_hIcon, TRUE); / Set big icon SetIcon(m_hIcon, FALSE); / Set small icon / TODO: Add extra initializa

27、tion here /- /从这里开始是主窗口的初始化代码/主窗口初始化到此结束 /- CLoginDlg m_logDlg;/登陆对话框实例化 m_logDlg.DoModal();/打开登录模态对话框 int m_managerType = m_logDlg.m_managerType;/赋值 /判断登录人员的身份类型 if ( 0 = m_managerType )/如果是售票员 SetDlgItemText(IDC_CUR_USER,m_logDlg.strUserName); GetDlgItem(IDC_SHEZHI)-ShowWindow(SW_HIDE); else/如果登陆的

28、不是售票员 CSysManager m_sysManagerDlg;/实例化一个管理员对话框 m_sysManagerDlg.m_user = m_logDlg.strUserName; m_sysManagerDlg.DoModal(); /打开管理员对话框 exit(1);/管理员窗口关闭后直接退出不进入主对话框(售票对话框) return TRUE; / return TRUE unless you set the focus to a control CFormView类提供用户在资源文件中定义界面的能力,并可以将子窗口和变量进行绑定。通过UpdateData函数让数据在变量和子窗口间

29、交换。CTreeView类利用TreeCtrl界面作为视界面,通过调用CTreeCtrl& CTreeView:GetTreeCtrl( ) const得到CTreeCtrl的引用。CListView类利用ListCtrl界面作为视界面,通过调用CTreeCtrl& CTreeView:GetTreeCtrl( ) const得到CListCtrl的引用。CEditView类利用Edit接收用户输入,它具有输入框的一切功能。通过调用CEdit& CEditView:GetEditCtrl( ) const得到Edit&的引用。void CEditView:SetPrinterFont( CFont* pFont )可以设置打印字体。CRichEditView类作为Rich Text Edit(富文本输入)的视类,提供了可以按照格式显示文本的能力,在使用时需要CRichEditDoc的支持。下面的代码建立了一个简单身份证记录的类,同时也能够支持序列化。 in Hstruct strPID char szName10; char szID16; struct strPID* pNext;class CAllPID : public CObjectpublic: DECLARE_SERIAL(CAllPID

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1