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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

C语言电影俱乐部管理程序.docx

1、C语言电影俱乐部管理程序C+课程设计报告191114班 黄玲学号:20111003886一前言本次课程设计运用MFC,基于对话框编程。运用C+语言的特点,在对话框中实现信息的添加,查找,删除,浏览等功能。充分发挥对话框的作用。二正文(1)题目:电影俱乐部【要求】允许俱乐部成员租用DVD。若想成为会员,首先应签约并且可按月交纳费用。会员一次可租用三个DVD,没有时间限制。可浏览所有可租用的DVD,能实现新成员的开户、会员对其帐户状况的查询以及俱乐部管理者对所有交易情况的查看功能。(2)需求分析:DVD信息和俱乐部会员信息用文件存储,提供文件的输入输出操作;注册新会员,提供文件的添加操作;实现查询

2、则提供文件的查找操作;另外提供键盘式选择菜单以实现功能选择。 (3)代码设计总体设计过程:在对话框中加入相应的按钮和文本框,如图:然后对相应的文本框和按钮加入相应的变量,如在类向导中的所示:1然后在MoiveClubDLG.CPP文件中对所加的文本所要实现的功能添加相应的函数,如下列表中所示:(1)从文件读取数据函数 功能:完成从文件读取数据的操作,如果文件不存在则只建立链表 输入输出均为空,只是一个过程.void CMoiveClubDlg:DataInit() struct MoiveCard *p,*q;/定义两个临时指针 b文件默认为不空 bNew假定不是新文件 b初始化文件属性 p=

3、head=(struct MoiveCard*)malloc(sizeof(struct MoiveCard); head-prev=head-next=NULL;/建立头结点(不存放数据) if(!(fp=fopen(data.dat,r)/试图用只读方式打开数据文件,如文件不存在则fp返回NULL值 bNew文件不存在,当然是新文件了 b文件当前状态是空的,第一次运行程序嘛 iCount=0;/总结点数为0,注意不包括头结点,头结点不用来存放数据 last=head;/尾结点此时就是头结点 if(!b)/因为文件默认为不空,如果文件已存在,则从文件中读取数据建立链表 fread(&iCou

4、nt,sizeof(int),1,fp);/先从文件中读取总结点数 for(int i=0;inext=NULL; q-prev=p; p-next=q; p=p-next; m_huiyuan.InsertString(i,p-name);/显示名单 last=p;/改变尾指针的指向 if(iCount=0)/如果名单为空,禁用更新、删除和查找等按钮,以免发生误操作导致错误 GetDlgItem(IDC_UPDATE)-EnableWindow(FALSE); GetDlgItem(IDC_delete)-EnableWindow(FALSE); GetDlgItem(IDC_namefin

5、d)-EnableWindow(FALSE); GetDlgItem(IDC_DVDfind)-EnableWindow(FALSE); GetDlgItem(IDC_name)-EnableWindow(FALSE); GetDlgItem(IDC_DVD1)-EnableWindow(FALSE); GetDlgItem(IDC_DVD2)-EnableWindow(FALSE); GetDlgItem(IDC_DVD3)-EnableWindow(FALSE); GetDlgItem(IDC_huifei)-EnableWindow(FALSE); else m_huiyuan.SetC

6、urSel(0);/默认选中第一条记录 OnSelchangehuiyuan(); (2)添加函数 功能:在链表的结尾添加一条记录,并将默认将新记录的姓名置为“新名字”,其它项为空输入输出均为空,只是一个过程.void CMoiveClubDlg:Onadd() / TODO: Add your control notification handler code here GetDlgItem(IDC_name)-EnableWindow(TRUE); GetDlgItem(IDC_DVD1)-EnableWindow(TRUE); GetDlgItem(IDC_DVD2)-EnableWin

7、dow(TRUE); GetDlgItem(IDC_huifei)-EnableWindow(TRUE); GetDlgItem(IDC_DVD3)-EnableWindow(TRUE);/启用文本框控件 curr=(struct MoiveCard*)malloc(sizeof(struct MoiveCard);/将当前指针指向新增加的结点上 strcpy(curr-name,新名字); strcpy(curr-DVD1,); strcpy(curr-DVD2,); strcpy(curr-huifei,); strcpy(curr-DVD3,);/将默认的数据复制到当前结点 m_huiy

8、uan.InsertString(m_huiyuan.GetCount(),新名字); m_huiyuan.SetCurSel(m_huiyuan.GetCount()-1);/在列表框中插入新名字并选中 iCount+;/总结点数加1 curr-next=NULL; curr-prev=last; last-next=curr; last=curr;/在尾结点后插入新结点 b; b; /修改文件属性,文件被修改且不为空 GetDlgItem(IDC_UPDATE)-EnableWindow(TRUE); GetDlgItem(IDC_delete)-EnableWindow(TRUE); G

9、etDlgItem(IDC_namefind)-EnableWindow(TRUE); GetDlgItem(IDC_DVDfind)-EnableWindow(TRUE);/启用更新、删除、查找按钮控件 LoadInfo(curr);/在文本框显示个人信息(3)函数更新功能:完成修改当前记录的操作 输入输出均为空,只是一个过程.void CMoiveClubDlg:OnUpdate() / TODO: Add your control notification handler code here UpdateData(); int sel = m_huiyuan.GetCurSel();/得

10、到所选择记录在列表框中的序号 if(m_name=) MessageBox(必须键入姓名!,错误!,MB_ICONERROR); m_IDC_Name.SetFocus(); return;/如果姓名输入框为空则发生错误 strcpy(curr-name,m_name); strcpy(curr-DVD1,m_DVD1); strcpy(curr-DVD2,m_DVD2); strcpy(curr-huifei,m_huifei); strcpy(curr-DVD3,m_DVD3);/将更新的数据从文本输入框复制到结点 m_huiyuan.DeleteString(sel); m_huiyua

11、n.InsertString(sel,m_name); m_huiyuan.SetCurSel(sel);/更新列表框中的姓名 m_add.SetFocus();/将焦点设置到“添加”按钮上(4)变更列表框选项 功能:当列表框的选择项改变时,移动指针到指定结点的位置 输入输出均为空,只是一个过程.void CMoiveClubDlg:OnSelchangehuiyuan() / TODO: Add your control notification handler code here int sel = m_huiyuan.GetCurSel();/获得当前的选择 curr=head-next

12、; for(int i=0;inext;/移动当前指针到选定结点 LoadInfo(curr);/更新界面(5)结点中存放的数据信息显示在文本框void CMoiveClubDlg:LoadInfo(MoiveCard *p) m_name=p-name; m_DVD1=p-DVD1; m_DVD2=p-DVD2; m_DVD3=p-DVD3; m_huifei=p-huifei; UpdateData(FALSE); m_IDC_Name.SetFocus(); m_IDC_Name.SetSel(0,20,TRUE);(6)删除函数void CMoiveClubDlg:Ondelete()

13、 / TODO: Add your control notification handler code here int sel = m_huiyuan.GetCurSel();/得到所选记录在列表框中的序号 struct MoiveCard *p=curr;/新建一个临时指针变量 if (MessageBox(确定要删除吗?,警告,MB_ICONQUESTION|MB_OKCANCEL) = IDCANCEL) return;/弹出确认对话框 iCount-;/总结点数减1 /删除当前结点 p-prev-next=p-next; if(p-next)!=NULL)/注意删除结点为末尾结点时的

14、操作! p-next-prev=p-prev; else last=p-prev; free(p);/释放内存空间 m_huiyuan.DeleteString(sel);/在列表框中删除记录 if (m_huiyuan.GetCount()=0) GetDlgItem(IDC_UPDATE)-EnableWindow(FALSE); GetDlgItem(IDC_delete)-EnableWindow(FALSE); GetDlgItem(IDC_namefind)-EnableWindow(FALSE); GetDlgItem(IDC_DVDfind)-EnableWindow(FALS

15、E); GetDlgItem(IDC_name)-EnableWindow(FALSE); GetDlgItem(IDC_DVD1)-EnableWindow(FALSE); GetDlgItem(IDC_DVD2)-EnableWindow(FALSE); GetDlgItem(IDC_DVD3)-EnableWindow(FALSE); GetDlgItem(IDC_huifei)-EnableWindow(FALSE); OnClear(); b; b; return;/如果剩除到一条记录都不剩,则需要禁用一些控件以免发生误操作,同时修改文件属性 if (selnext;/将临时指针变量

16、移动来头结点的下一个结点,也就是第一个存放数据的结点 while(p)/当结点不为空 fwrite(p,sizeof(struct MoiveCard),1,fp); p=p-next;/将数据写入文件并将指针后移 CDialog:OnClose();(9)About函数void CMoiveClubDlg:OnAbout() / TODO: Add your control notification handler code here CAboutDlg dlg; dlg.DoModal();(10)处理回车键函数void CMoiveClubDlg:OnOK() OnUpdate();/这

17、个函数是为了处理回车键的事件,默认为关闭对话框,现在改为调用OnUpdate()函数(11)名字查找功能:以姓名方式查找相应的记录,如不存在则提示找不到 输入为空 输出为空void CMoiveClubDlg:Onnamefind() / TODO: Add your control notification handler code here UpdateData(); int sel=m_huiyuan.FindString(m_huiyuan.GetCurSel(),m_findwhat);/直接调用FindString函数查找并得到序号 if(sel=LB_ERR)/如果找不到记录,则

18、输入查找失败提示 MessageBox(找不到记录!,提示,MB_ICONWARNING); return; m_huiyuan.SetCurSel(sel);/选中所找到的记录项 OnSelchangehuiyuan();(12)DVD查找void CMoiveClubDlg:OnDVDfind() / TODO: Add your control notification handler code here UpdateData(); MoiveCard *temp=curr;/将当前结点的地址存入一个临时指针中 int sel = m_huiyuan.GetCurSel();/得到当前记

19、录的序号 do curr=curr-next;/从当前记录的下一记录开始查找 sel+;/序号加1 if(curr=NULL)/如果已经查找到表尾 curr=head-next;/将当前指针移动到头结点的下一个结点,因为头结点并不存放数据 sel=0;/第一条记录的序号为0 if(!(strcmp(curr-DVD1,m_findwhat)/如果匹配成功 m_huiyuan.SetCurSel(sel);/选中找到的记录项 OnSelchangehuiyuan(); return;/已完成查找,退出函数体 while(curr!=temp);/循环条件为没有遍历整个链表 MessageBox(

20、找不到记录!,提示,MB_ICONWARNING);/已经遍历整个链表但没有找到记录,输出查找失败信息 return;(13)更改名字void CMoiveClubDlg:OnChangeName() / TODO: If this is a RICHEDIT control, the control will not / send this notification unless you override the CDialog:OnInitDialog() / function and call CRichEditCtrl().SetEventMask() / with the ENM_CHANGE flag ORed into the mask. / TODO: Add your control notification handler code here

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

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