贺玉鹏电话收费管理系统C++_第1页
贺玉鹏电话收费管理系统C++_第2页
贺玉鹏电话收费管理系统C++_第3页
贺玉鹏电话收费管理系统C++_第4页
贺玉鹏电话收费管理系统C++_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PAGE 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)辽 宁 工 业 大 学C+程序设计课程设计(论文)题目: 电话收费管理系统 院(系): 软 件 学 院 专业班级: 软件工程096班 学 号: 091301178 学生姓名: 贺 玉 鹏 指导教师: 娄 文 楠 教师职称: 助 教 起止时间:2009。11.20-2009。12.03课程设计(论文)任务及评语院(系):软件学院 教研室:软件教研室学 号091301178学生姓名贺玉鹏专业班级软件工程096班课程设计(论文)题目电话收费管理系统课程设计(论文)任务掌握面向对象程序设计语言C+的基本语法掌握C+面向对象设计的思想

2、掌握VC+6。0与DEV C+ 开发工具的使用运用标准C+规范设计应用程序设计过程中,要严格遵守设计的时间安排,听从指导教师的指导。正确地完成上述内容,规范完整地撰写出设计报告.指导教师评语及成绩成绩: 指导教师签字: 年 月 日辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)PAGE 15目 录 TOC o ”1-3” h z HYPERLINK l ”_Toc218783630 第1章 课程设计目的与要求 PAGEREF _Toc218783630 h 1 HYPERLINK l _Toc218783631” 1。1 课程设计目的 PAGEREF _Toc218783631 h

3、 1 HYPERLINK l _Toc218783632 1。2 课程设计的实验环境 PAGEREF _Toc218783632 h 1 HYPERLINK l ”_Toc218783633 1。3 课程设计的预备知识 PAGEREF _Toc218783633 h 1 HYPERLINK l _Toc218783634” 1。4 课程设计要求 PAGEREF _Toc218783634 h 1 HYPERLINK l _Toc218783635 第2章 课程设计内容 PAGEREF _Toc218783635 h 2 HYPERLINK l ”_Toc218783636 2。1 C+程序设计

4、-电话收费管理系统问题分析 PAGEREF _Toc218783636 h 2 HYPERLINK l _Toc218783637” 2。1.1 功能分析 PAGEREF _Toc218783637 h 2 HYPERLINK l ”_Toc218783638 2.1。2 算法设计及程序设计中技术重点 PAGEREF _Toc218783638 h 3 HYPERLINK l ”_Toc218783639 2.2 程序中涉及的类的UML类图和主要函数流程图或框图 PAGEREF _Toc218783639 h 4 HYPERLINK l _Toc218783640” 2.2.1 UML类图 P

5、AGEREF _Toc218783640 h 4 HYPERLINK l ”_Toc218783641” 2。2.2 主要函数流程图 PAGEREF _Toc218783641 h 5 HYPERLINK l _Toc218783642” 2。3 程序源代码 PAGEREF _Toc218783642 h 6 HYPERLINK l _Toc218783643 2.3.1主要源代码 PAGEREF _Toc218783643 h 6 HYPERLINK l ”_Toc218783644” 2.3.2程序效果图 PAGEREF _Toc218783644 h 14 HYPERLINK l _To

6、c218783645 第3章 课程设计总结 PAGEREF _Toc218783645 h 15 HYPERLINK l _Toc218783646 参考文献 PAGEREF _Toc218783646 h 16第1章 课程设计目的与要求1.1 课程设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程C+语言教程的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力. (2)全面考核学

7、生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。 (3)利用所学知识,开发小型应用系统,掌握运用C+语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。 (5)掌握面向对象程序设计的方法。(6)熟练掌握C+语言的基本语法,灵活运用各种数据类型。(7)进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序。1.2 课程设计的实验环境硬件要求能运行Windows 操作系统的微机系统。C+语言应用程序开发软件使用:VC+ 系统,或其他C+语言应用程序开

8、发软件。1.3 课程设计的预备知识熟悉C+语言程序设计的基本知识及VC+编辑器的使用方法.1。4 课程设计要求仔细分析设计题目,画出程序流程图,编写程序源代码。积极上机调试源程序,增强编程技巧与调程能力。认真书写课程设计预习报告,课程设计说明书。遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成课程设计内容 第2章 课程设计内容2.1 C+程序设计-电话收费管理系统问题分析2。1.1 功能分析现代社会,随着科技的迅猛发展和人们生活水平的日益提高,手机已成为一个大众化,且普及率相当高的通讯工具。 正是由于手机的大量普及, 手机网络的服务已成为客户看重的一点. 顾客即是上帝

9、,一个产品的成功与否很大程度在于它对无形资产的积累, 如培养长期客户。 在这个竞争激烈的市场上,如何提高手机的服务功能来满足顾客的需要,在服务上取胜, 培养长期顾客,创造长远价值成为手机市场的核心问题。 对于目前大多数手机用户来说,手机话费充值的方法都过于单调。除了移动公司所发行的动感地带系列手机卡可以通过直接缴费的方式进行充值外,其他方式的手机卡均只能通过手机充值卡进行充值.因此, 一个具备基本功能且可靠方便的手机话费查询及充值系统可以满足广大手机用户的需要。 本手机用户话费及使用状况查询系统的客户主要有两类:一类是手机的普通用户,可以通过其手机号直接查询该手机的话费;另一类则是管理手机充值

10、的工作人员,除了可以为用户提供充值以外,他们还具有查看用户信息的权利。该系统将给客户提供方便, 快捷, 准确的服务。本系统开发的总体任务是实现各种信息的系统化、规范化和自动化,帮助收费人员更好更高效地完成电话费收费工作,本系统要完成的功能主要有:普通管理员和高层管理员均可进行的操作有:可以统计并查看所有的手机用户信息,该信息主要包括两方面,一方面是仅关于本手机的各种信息;另一方面是登记该手机的用户信息.手机的各种信息包括手机号,手机密码,手机收费方式(手机卡使用种类或手机套餐使用种类),手机当前余额等.用户信息包括用户身份证号,姓名,性别,家庭住址等。当存在新的手机号时,无论此时有无用户对其进

11、行登记,都可以将与该手机号相关的纪录添加入数据库中,即可以添加手机用户的纪录。对于所能查看的信息,在需要时可以对相应的信息进行修改更新.对于已销号的手机可以删除关于该手机的纪录。如果存在过多的信息,而需要查找某一条特定纪录时,提供足够的查询信息,如手机号或用户身份证号,则可以直接查询关于该手机号的纪录或关于该用户的所有手机纪录。可以统计并查看所有的手机充值纪录,充值纪录信息也包括两类:手机信息与执行此次充值操作的管理员信息。充值手机信息有:被充值的手机号,本次充值的金额,充值后本手机的当前金额.管理员信息有:管理员编号与管理员账号。可以对特定的手机进行充值,即可以添加手机充值的纪录。可以查询特

12、定的手机充值纪录,提供手机号或工作人员编号,可以查询到对该手机进行充值的纪录或由该工作人员执行过的手机充值纪录.注意已存在手机充值纪录不能也无需由工作人员自身进行删除或更改。如果系统中某手机被销号,则关于该手机所有的充值记录将全部自动消失。每一次手机被充值后,手机的所剩金额将得到自动更新。通过特定的管理员账号所可以执行的特殊操作有:可以查询所有的工作人员的详细信息,该信息包括:工作人员编号,账号名称,密码,性别,家庭住址以及该工作人员是否具有管理员权限。当出现新的工作人员时,可以添加该工作人员的信息。对现存的工作人员的信息可以进行修改。当工作人员离开此岗位时,可以删除该工作人员的信息。对当前系

13、统中存在的所有信息可以进行备份。2.1。2 算法设计及程序设计中技术重点1、设计目标本系统要实现的目标是使电话费收费工作规范化,系统化,程序化,避免电话费交费的不方便性,提高信息处理的速度和准确性,能够及时、准确、有效地查询和修改电话用户信息。最终实现电话费收费管理的系统化,提高信息处理工作的效率和完整性. 2、项目规划本系统的功能比较完善,主要完成管理员的管理功能,用户信息的管理功能和用户话费的充值查询功能。3、管理员信息管理模块管理员信息管理模块主要由查看管理员信息,添加管理员信息,修改管理员信息和删除管理员信息4部分组成.4、用户信息管理模块用户信息管理模块主要由查看用户信息,添加用户信

14、息,修改用户信息,删除用户信息和查询用户信息5部分组成。5、话费充值查询模块话费充值查询模块是要由查看充值记录,话费充值,查询个人充值记录3部分组成。6、系统功能结构电话费收费管理系统的功能结构如下图所示:系统设置用户查询充值记录管理员登录修改管理员密码系统全面备份系统全面恢复退出话费查询查看充值记录话费充值查询个人充值记录管理员信息管理查看管理员信息修改管理员信息添加管理员信息修改管理员信息用户信息管理删除用户信息修改用户信息查看用户信息添加用户信息查询用户信息高级管理员登录后进入的功能界面系统功能结构图2.2 程序中涉及的类的UML类图和主要函数流程图或框图2。2。1 UML类图CLogi

15、nDlg : public CDialogm_strLoginName:CStringm_strLoginPswd:CString+CLoginDlg(CWnd* pParent=NULL):void+DoDataExchange(CDataExchange* pDX):void+OnOK():void+OnInitDialog():bool+DECLARE_MESSAGE_MAP():voidCMPhoneQueryApp : public CWinAppm_pADOConn:_ConnectionPtrm_pADOSet:_RecordsetPtrm_iLoginCount:int-m_s

16、trCurAdminID:CStringm_strCurAdminName:CString-m_bIsLogin:bool+CMPhoneQueryApp():void+ADOExecute(_RecordsetPtr &ADOSet,_variant_t &strSQL):void+InitInstance():bool+ExitInstance():int2。2。2 主要函数流程图Y进入系统是否登录输入充值信息信息正确确定充值用户登录YNN系统流程图2。3 程序源代码2。3。1主要源代码1、数据库的调用BOOL CMPhoneQueryApp:InitInstance()AfxEnable

17、ControlContainer();m_iLoginCount = 0;/ 创建ADO连接对象if( FAILED(::CoInitialize(NULL)) ) AfxMessageBox(ADO Init failed);return false;trym_pADOConn.CreateInstance(_uuidof(Connection);m_pADOConn Open(DSN=MPQ;Provider=MSDASQL”,”,”, adConnectUnspecified);catch(_com_error &e)CString err;err.Format(s”, (char)(e

18、。Description() );AfxMessageBox(err);catch(。)AfxMessageBox(Unknown Error.”);/ 初始化ADO记录集m_pADOSet.CreateInstance(_uuidof(Recordset));/ 初始化登录状态m_bIsLogin = FALSE;/ CMy4_1App message handlers2、充值功能的实现void CAddOrderDlg:OnOK() / TODO: Add extra validation hereCAddConfirmDlg delConf;delConf。DoModal();CMPho

19、neQueryView* pView = (CMPhoneQueryView)((CMainFrame*)AfxGetMainWnd())-GetActiveView());if ( !(pView -m_bAddConfirm) )return;UpdateData(true);m_strAdminId.TrimRight( ); m_strAdminName。TrimRight( );m_strAddMoney.TrimRight(” ”);m_strAddPhoneNo。TrimRight( );/ 确定所有输入有效CString sWarning=”;if ( m_strAddMone

20、y = ” ) sWarning = _T(充值金额”); else if ( m_strAddPhoneNo = ” )sWarning = _T(”手机号码); if ( ” != sWarning ) sWarning += _T(”不能为空”); AfxMessageBox(sWarning, MB_ICONEXCLAMATION); return;_variant_t strQuery, Holder;/ 确认已有该手机的纪录strQuery = select from phone where phone_no = ”+m_strAddPhoneNo+;theApp.ADOExecu

21、te(theApp.m_pADOSet, strQuery);int iCount = theApp。m_pADOSet -GetRecordCount();if ( iCount = 0 ) AfxMessageBox(_T(”手机号码输入有错!没有该手机的纪录”), MB_ICONEXCLAMATION); return;/计算出该手机现有的余额theApp.m_pADOSet -MoveFirst();Holder = theApp.m_pADOSet GetCollect(balance”);CString strBalance = (char)(_bstr_t)Holder;doub

22、le dBalance = atof(strBalance);double dMoney = atof(m_strAddMoney);dBalance += dMoney;Holder= dBalance;strBalance = (char*)(_bstr_t)Holder;/ 计算出该条纪录的编号;strQuery = ”select Max(order_id) as maxorderid from order”;theApp。ADOExecute(theApp。m_pADOSet, strQuery);theApp。m_pADOSet -MoveFirst();Holder= theAp

23、p.m_pADOSet GetCollect(maxorderid);intiOrderId = Holder.vt = VT_NULL ? 1 : Holder。intVal + 1;char cOrderId20;_itoa( iOrderId, cOrderId, 10);CString strOrderId = (const char*) cOrderId;/ 获得该手机所对应的编号strQuery = select phone_id from phone where phone_no = +m_strAddPhoneNo+”;theApp.ADOExecute(theApp.m_pA

24、DOSet, strQuery);theApp.m_pADOSet MoveFirst();Holder = theApp.m_pADOSet GetCollect(phone_id);CString strPhoneId = (char)(_bstr_t)Holder; strQuery = insert order (order_id, phone_id, staff_id, money, balance) values (”+strOrderId+”, +strPhoneId+,”+m_strAdminId+”,CAST(”+m_strAddMoney+” AS money), CAST

25、(”+strBalance+ AS money);if ( theApp。ADOExecute(theApp。m_pADOSet, strQuery) ) strQuery = ”update phone set phone。balance = CAST(+strBalance+ AS money) where phone_no = +m_strAddPhoneNo+”;if (theApp.ADOExecute(theApp.m_pADOSet, strQuery)AfxMessageBox(_T(添加记录成功!), MB_ICONINFORMATION);/ 清空输入数据m_strAdmi

26、nId = m_strAdminName = m_strAddMoney = m_strAddPhoneNo = ”;UpdateData(false);elseAfxMessageBox(_T(添加记录失败!”), MB_ICONEXCLAMATION);else AfxMessageBox(_T(添加记录失败!”), MB_ICONEXCLAMATION);/ Refresh RoomType ListpViewRefreshOrder();CDialog:OnOK();BOOL CAddOrderDlg::OnInitDialog() CDialog:OnInitDialog();/ T

27、ODO: Add extra initialization herem_strAdminName = theApp。m_strCurAdminName;m_strAdminId = theApp.m_strCurAdminID;(CEdit)GetDlgItem(IDC_ORDER_ADDPHONENO)SetLimitText(50); (CEdit*)GetDlgItem(IDC_ORDER_ADDMONEY)SetLimitText(10);UpdateData(FALSE);return TRUE; / return TRUE unless you set the focus to a

28、 control / EXCEPTION: OCX Property Pages should return FALSE3、查询功能的实现/ QueryOrderDlg。cpp : implementation file/#include ”stdafx.hinclude ”mphonequery.hinclude ”QueryOrderDlg。h#include MPhoneQueryView.hinclude ”MainFrm.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;

29、endif/ CQueryOrderDlg dialogCQueryOrderDlg:CQueryOrderDlg(CWnd* pParent /=NULL*/): CDialog(CQueryOrderDlg:IDD, pParent)/AFX_DATA_INIT(CQueryOrderDlg)m_bCheckAdminId = FALSE;m_bCheckPhoneNo = FALSE;/AFX_DATA_INITvoid CQueryOrderDlg::DoDataExchange(CDataExchange pDX)CDialog:DoDataExchange(pDX);/AFX_DA

30、TA_MAP(CQueryOrderDlg)DDX_Check(pDX, IDC_CHECK_ADMINID, m_bCheckAdminId);DDX_Check(pDX, IDC_CHECK_PHONENO, m_bCheckPhoneNo);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CQueryOrderDlg, CDialog)/AFX_MSG_MAP(CQueryOrderDlg)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CQueryOrderDlg message handlersvoid CQueryOrderDlg::OnOK() / T

31、ODO: Add extra validation hereUpdateData(TRUE);int iIndex;if ( !m_bCheckAdminId & !m_bCheckPhoneNo )AfxMessageBox(_T(”请选择查询条件!”), MB_ICONEXCLAMATION);return;if (m_bCheckAdminId)iIndex = ((CComboBox*)GetDlgItem(IDC_QUERY_ADMINID)-GetCurSel();((CComboBox)GetDlgItem(IDC_QUERY_ADMINID)GetLBText(iIndex,m

32、_strAdminId);elsem_strAdminId = ”;if (m_bCheckPhoneNo)iIndex = ((CComboBox)GetDlgItem(IDC_QUERY_PHONENO)GetCurSel();(CComboBox)GetDlgItem(IDC_QUERY_PHONENO)GetLBText(iIndex,m_strPhoneNo);elsem_strPhoneNo = ”;_variant_t strQuery, Holder;strQuery = ”select * from phone where phone_no like +m_strPhoneN

33、o+”;theApp。ADOExecute(theApp.m_pADOSet, strQuery);int iCount = theApp.m_pADOSet -GetRecordCount();CString strPhoneId;if ( iCount = 0 )strPhoneId = ”;elseHolder = theApp.m_pADOSet -GetCollect(”phone_id”);strPhoneId = (char)(_bstr_t)Holder;strQuery = select * from order where phone_id like +strPhoneId

34、+” and staff_id like +m_strAdminId+”;CMPhoneQueryView p = (CMPhoneQueryView*)(CMainFrame)AfxGetMainWnd())GetActiveView());p-RefreshOrder(strQuery);CDialog:OnOK();BOOL CQueryOrderDlg:OnInitDialog() CDialog:OnInitDialog();/ TODO: Add extra initialization here_variant_t strQuery, Holder, strSubQuery, S

35、ubHolder;_RecordsetPtr pSubADOSet;/ 初始化ADO记录集pSubADOSet。CreateInstance(_uuidof(Recordset);/ 插入手机号strQuery = select distinct phone_id from order”;theApp。ADOExecute(theApp.m_pADOSet,strQuery);int iCount = theApp.m_pADOSetGetRecordCount();if(iCount 0)theApp.m_pADOSet-MoveFirst();CString strPhoneId;CStr

36、ing strPhoneNo;for(int i = 0; i GetCollect(”phone_id”);strPhoneId = (char)(_bstr_t)Holder;strSubQuery = ”select phone_no from phone where phone_id = +strPhoneId+”;theApp.ADOExecute(pSubADOSet, strSubQuery);SubHolder = pSubADOSet GetCollect(”phone_no);strPhoneNo = (char*)(_bstr_t)SubHolder;(CComboBox

37、)GetDlgItem(IDC_QUERY_PHONENO))-InsertString(i, strPhoneNo);theApp.m_pADOSetMoveNext();(CComboBox)GetDlgItem(IDC_QUERY_PHONENO))SetCurSel(0);/ 插入管理员编号strQuery = ”select distinct staff_id from staff”;theApp.ADOExecute(theApp.m_pADOSet,strQuery);iCount = theApp.m_pADOSetGetRecordCount();if(iCount 0)theApp.m_pADOSet-MoveFirst();CString strAdminId;for(int i = 0;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论