《程序设计课程设计报告.doc》由会员分享,可在线阅读,更多相关《程序设计课程设计报告.doc(11页珍藏版)》请在三一办公上搜索。
1、程序设计课程设计报告内容:一、设计任务与要求 1.设计任务 1)利用动态链表实现电话薄程序 2)了解MFC架构,利用Visual C+实现一个简单计算器系统。2.实验要求 1)实现电话薄通讯录的建立,查询,删除,插入。 2)主要实现计算器数据的加、减、乘、除运算。二、需求分析1.功能需求1)通讯录:查询,删除,插入,显示。 2)计算器:基本运算功能:可以进行加、减、乘、除等基本运算。 删除功能:删除数值。 归零功能:可以在计算完成后清空编辑框中的已有数值。2.运行需求 VC+6.0 Windows操作系统三、系统设计 1. 总体方案设计 电话薄建立通讯录查询通讯录删除通讯录插入通讯录退出菜单
2、清零等于除法乘法减法加法计算器加法除法乘法等于清零减法 2.详细设计1) 电话薄主要代码:#include using namespace std;#define null 0struct notelist char num5; / 编号 char name9; / 姓名 char sex3; / 性别 char phone13; / 电话 char addr31; / 地址 notelist *next;int n;bool find1(notelist *head,char num);notelist *creat()/通讯录的建立char i; notelist *head; notel
3、ist*p1,*p2; n=0; p1=p2=new notelist;p1-next=null; head=null;/*couti;*/*cin.clear(); /清空状态和缓冲区 ,判断输入正确与否cin.sync(); for(int j=1;j100000;j+) k=i-j;if(k=0)coutendl;elsecout输入错误i;*/ do cout请输入第n+1条通讯信息:endl;coutp1-num;while(find1(head,p1-num)cout-此编号已存在!请重新输入!-endl;coutp1-num;coutp1-name;coutp1-sex;cout
4、p1-phone;coutp1-addr;n=n+1; if(n=1)head=p1; else p2-next=p1; p2=p1; p1=new notelist;p1-next=null;couti; while(i=y|i=Y); p2-next=null; return(head);bool find1(notelist *head,char num)/查询相同编号notelist *p1,*p2;if(head=null)return 0;p1=head;while(strcmp(num,p1-num)!=0)&p1-next!=null)p2=p1;p1=p1-next;if(s
5、trcmp(num,p1-num)=0)return 1;else return 0;void print(notelist*head)/通讯录信息的输出 notelist *p; coutendl通讯录里有n条记录如下:endl;cout编号 姓名 性别 电话 地址endl; p=head; if(head!=null) docoutnum name sex phone addrnext;while(p!=null);void find(notelist *head,char num)/查询notelist *p1,*p2;if(head=null)cout没记录num)!=0)&p1-ne
6、xt!=null)p2=p1;p1=p1-next;if(strcmp(num,p1-num)=0)cout编号 姓名 性别 电话 地址endl;coutnum name sex phone addrendl;else cout找不到该编号:;notelist *del(notelist *head,char num)/通讯录信息的删除notelist *p1,*p2;if(head=null)cout没记录num)!=0&p1-next!=null)p2=p1;p1=p1-next;if(strcmp(num,p1-num)=0)if(p1=head)head=p1-next;else p2
7、-next=p1-next;cout编号为num的记录已删除!endl;n=n-1;else coutnext=null;elsewhile(strcmp(p0-num,p1-num)0&(p1-next!=null) p2=p1; p1=p1-next;if(strcmp(p0-num,p1-num)next=p0;p0-next=p1;elsep1-next=p0;p0-next=null;n=n+1;return(head);int main()int s,d, a,j=0;notelist *head,*stu;char c, i,k5,del_num5;char y;docout建立
8、通讯录请按1-查询通讯录请按2endl;cout删除通讯录请按3-插入通讯录请按4endl;cout 退出菜单请按5c;switch(c)case 1:head=creat();print(head);break;case 2:coutendlk;dofind(head,k);coutendlk;while(strcmp(k,exit)!=0);break;case 3:coutendldel_num;while(strcmp(del_num,exit)!=0)head=del(head,del_num);print(head);coutdel_num;break;case 4:/*coute
9、ndli;*/do coutendl如下填写第j+1条插入通讯录的资料;stu=new notelist;coutstu-num;while(find1(head,stu-num)/判断编号是否存在cout-此编号已存在!请重新输入!-endl;coutstu-num;coutstu-name;coutstu-sex;coutstu-phone;coutstu-addr; head=insert(head,stu); print(head);j=j+1;couti;while(i=y|i=Y);break;case 5:break;default: cout输入错误!endl;break;co
10、ut是否继续操作:(是请按y-退出请按其它任意键)y;while(y=y|y=Y);return 0;2)计算器主要代码:void CMyDlg:OnNum1() / TODO: Add your control notification handler code hereif(panduan=true)donum=0;panduan=false;inputnum=1;if(dian=false)donum=donum*10+inputnum;elsedonum=donum+inputnum*pow(0.1,n);n+;m_num=donum;UpdateData(false);void CM
11、yDlg:OnAdd() / TODO: Add your control notification handler code hereresult=donum;method=1;panduan=true;n=1;dian=false;void CMyDlg:OnMin() / TODO: Add your control notification handler code hereresult=donum;method=2;panduan=true;n=1;dian=false;void CMyDlg:OnMul() / TODO: Add your control notification
12、 handler code herepanduan=true;result=donum;method=3;n=1;dian=false;void CMyDlg:OnDiv() / TODO: Add your control notification handler code herepanduan=true;result=donum;method=4;n=1;dian=false;void CMyDlg:OnClear() / TODO: Add your control notification handler code heredonum=0;inputnum=0;panduan=tru
13、e;result=0;m_num=0;n=1;dian=false;UpdateData(false);四、运行结果及测试 1. 运行界面及其效果图电话薄 计算器2. 对在编程与调试中的问题 1)电话薄 对程序代码编写的不够规范化,而且操作不好会造成死循环。 2)计算器 功能还不够齐全,只能进行一些基本的加,减,乘,除操作。五、课程设计总结与体会经过学习C程序设计及C+面向对象程序设计,对VC+课程设计的编写设计,加深了我对VC+程序设计课程所学知识的进一步理解。这次的课程设计,让我更加了解VC+程序的内部结构和资源使用。总之,完成这次课程设计之后,使我更加掌握了编程的基本要素,学会了用编程思想解决生活中的常见问题,用所学知识解决实际问题。六、参考资料C程序设计C+面向对象程序设计MFC快速参考指南