软 件 课 程 设 计 报 告XUDUO.docx
- 文档编号:26708501
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:24
- 大小:187.58KB
软 件 课 程 设 计 报 告XUDUO.docx
《软 件 课 程 设 计 报 告XUDUO.docx》由会员分享,可在线阅读,更多相关《软 件 课 程 设 计 报 告XUDUO.docx(24页珍藏版)》请在冰豆网上搜索。
软件课程设计报告XUDUO
《软件课程设计》报告
班级:
信息安全08-3
姓名:
许多
学号:
08083701
指导老师:
夏战国
中国矿业大学计算机科学与技术学院
年月
软件课程设计任务书
专业年级:
信息安全08
学生姓名:
许多
课程设计题目:
类别
题目序号
成绩
面向过程
1,2,3,4,5,7
面向对象
1,2,3,4,6,8
图形界面
1,5
数据结构
1,2,3,4
第一阶段:
/*5.
(1)编程序,使用户任意输入一个年份以及该年的1月1日是星期几,而后任意指定某一天(再输入该年的任意一个月份日期),
由程序计算出这一天是星期几。
注意,2月份闰年为29天,非闰年为28天;可被4整除而不可被100整除的年份、或者可被400整除的年份均为闰年。
*/
intmain()
{
intyear,month,day,x,y,i,m[11]={31,28,31,30,31,30,31,31,30,31,30};
cout<<"请输入一个年份:
";
cin>>year;
cout<<"请输入该年的1月1日是星期几:
";
cin>>x;
cout<<"请输入是哪一天:
";
cin>>month>>day;
for(i=1;i { day+=m[i]; }//算出这一天是这一年的第几天; if(year%4==0&&year%100! =0||year%400==0&&month>2) day++;//如果是闰年,天数加一; y=(day-1)%7; x=(x+y)%7;//根据一周七天的循环,求余加到原来的星期上去; if(x==0)x=7; cout<<"这一天是星期"< return0; } 程序流程图 If判断 不是闰年是闰年 (天数day+1) 运行结果图 课程设计小结: 本实验是对学过的c++基本知识的从新回顾,运用到了数组,循环,闰年的判断等基本操作,题目比较简单,困难不大,实验第一阶段面向过程主要是对c++基本知识的一个回顾,熟悉编程的基本方法,本实验进行的较为顺利,但是在本题的延伸中,默认元年元月元日是星期一时,计算任意一天是星期几时,需要将本程序进行调整,在循环的控制上会有一些不同,但最后还是顺利解决,第一阶段顺利完成六个题目。 第二阶段: 1.自定义一个示意性的复数类型complex,其中含有若干个成员函数,使用该类可以完成复数的加法以及对复数的输出。 请完成类定义,并编制主函数,说明complex类对象,对定义的各成员函数进行调用。 复数类的设计 classcomplex { private: doublereal; doubleimag; public: 成员函数的声明: }; 部分成员函数的定义: complexcomplex: : add(complexc2) { real+=c2.real; imag+=c2.imag; return*this; }//加法; 减法,乘法,除法的设计类似; doublecomplex: : value() { doublec; c=sqrt(imag*imag+real*real); returnc; }//取模 intmain() { doublex,y,z; cout<<"请输入第一个复数的实虚部: "; cin>>x>>y; complexc1(x,y); cout<<"请输入第二个复数的实虚部: "; cin>>x>>y; complexc2(x,y); cout<<"请输入要进行的运算(1,2,3,4,5对应加,减,乘,除法,取模): "; cin>>z; if(z==1) { cout<<"两个数的和是: "; c1.add(c2); c1.out(); } 接下来再用四个判断来表示减法,乘法,除法以及取模运算; return0; } 程序流程图 运行结果图: 课程设计小结: 本题设计了对于复数的加减乘除以及取模运算,利用一个选择判断来决定所进行的运算,将五种运算独立开来,降低了题目的难度。 在设计运算函数时,加,减,乘,以及取模的设计基本类似,除法稍微复杂一些,算法上同数学运算法则,并无特殊。 第二阶段面向对象是对类基本操作的回顾,主要是对类的基本写法,面向对象程序的特点的熟悉,对于函数的封装性以及各个数据成员及成员函数的访问属性的设定,又是一次回顾,面向对象的程序设计是一次思路的转变,对于以后的编程也有重要作用。 这一阶段的题目难度有所增加,经过努力,完成了六道题,对于类的操作以及面向对象程序的编写又有了新的理解与认识。 第三阶段: 1.用你熟悉的一种可视化编程语言实现如下图所示的计算器。 该计算器需要实现基础的数学运算,如加,减,乘,除。 设置数字0~9 PrivateSubCommand10_Click()'数字0 Text1.Text=Text1.Text&0 EndSub 如此设置加、减、乘、除,同时a赋值为1、2、3、4作为标记 PrivateSubCommand16_Click()'加号 num1=Val(Text1.Text) Text1.Text="" a=1 EndSub 等于号是对四种运算符的调用 PrivateSubCommand12_Click()'等于 Ifa=1ThenText1.Text=Str(num1+Val(Text1.Text)) Ifa=2ThenText1.Text=Str(num1-Val(Text1.Text)) Ifa=3ThenText1.Text=Str(Val(Text1.Text)*num1) Ifa=4Then IfVal(Text1.Text)=0Then MsgBox"分母不能为0,请重新输入" Text1.Text="" Else Text1.Text=Str(num1/Val(Text1.Text)) Text1.Text=Val(Text1.Text) EndIf EndIf EndSub 以下为小数点和删除键 PrivateSubCommand11_Click()'小数点 IfInStr(Text1.Text,".")=FalseThen Text1.Text=Text1.Text&"." EndIf EndSub PrivateSubCommand17_Click()'AC(删除键) Text1.Text="" EndSub 初始状态 PrivateSubForm_Load() Text1.Text="" EndSub 程序流程图: 运行结果图: 课程设计小结: 第三阶段的实验是可视化的编程,是一个新的领域,本阶段的每一道题都是一个新的挑战,每一道题都是一个新的尝试,本阶段我完成了两道题,一个计算器还有一个五子棋,都是用VB编写的,计算器的编写先是画出所要计算器的形状,然后主要是对各个按键功能的设定,对于数字键,小数点,删除设定方法比较简单而且基本一致,等号的操作比较麻烦,主要涉及到对于各个运算符的调用,本实验利用了一个标记变量来确定所进行的运算,以此来确定等号的功能,基本上难度不是特别大。 第三阶段的题目是一个全新的领域,对于我们以后有很大的用处。 第四阶段: 1.用链表和数组两种方式分别实现栈的出栈、入栈、取栈顶元素、判空、查找等操作。 顺序栈 定义顺序栈类 classStack { private: intsize;//存储空间容量 inttop;//栈顶指针 int*s;//存储空间首地址 public: Stack(int);//构造函数,建立空栈,即栈初始化 voidShow();//顺序输出栈顶指针与栈中的元素 voidJudge();//检测栈的状态 voidPush(int);//入栈 intPop();//退栈 intGetTop(); voidSearch(int);//读栈顶元素 }; //建立容量为size的空栈 Stack: : Stack(intm) { size=m;//存储空间容量 s=newint[size];//动态申请存储空间 top=0;//栈顶指针为0,即建立空栈 return; } //顺序输出栈中的元素 voidStack: : Show() { for(inti=top;i>0;i--) cout< cout< return; } //检测栈的状态 voidStack: : Judge() { if(top==size)//存储空间已满,返回-1 cout<<"此栈已满! "; if(top==0)//栈为空,返回0 cout<<"此栈为空! ";//正常返回1 } //入栈 voidStack: : Push(intx) { if(top==size)//存储空间已满,上溢错误 { cout<<"存储空间已满,上溢错误! \n"; return; } top=top+1;//栈顶指针进1 s[top-1]=x;//新元素入栈 return; } //退栈 intStack: : Pop() { inty; if(top==0)//栈为空,下溢错误 { cout<<"栈为空,下溢错误! \n"; return0; } y=s[top-1];//将站定元素赋给指定的变量y top=top-1;//栈顶指针退1 returny;//返回退出栈的元素 } //读栈顶元素 intStack: : GetTop() { if(top==0)//栈为空 { cout<<"空栈! \n"; return0; } returns[top-1];//返回栈顶元素 } voidStack: : Search(intz) { intj=0; for(inti=top;i>0;i--) { if(z==s[i-1]){cout<<"所要找的数在位置"< } if(! j) cout<<"栈中没有所要找的数! "; } //主函数 intmain() { intk; intl; intx; cout<<"请输入要建立栈的大小: "; cin>>k; Stacks(k);//建立容量为k的空栈s,元素为整型 cout<<"请输入入栈的元素: "; for(inti=0;i {cin>>l;s.Push(l);} cout<<"栈顶元素: "< cout<<"输出栈中的元素: \n"; s.Show(); cout<<"请输入所要查找值: "; cin>>x; s.Search(x); cout<<"从栈中弹出元素为: "< s.Judge(); return0; } 程序流程图 : 运行结果图: //带链的栈 #include usingnamespacestd; //定义结点 structnode { intd; node*next; }; //定义带链栈类 classStack { private: node*top;//带链栈的栈顶指针 public: Stack();//构造函数,建立空栈,即栈初始化 voidShow();//顺序输出带链栈中的元素 intJudge();//检测带链栈的状态 voidPush(int);//入栈 intPop();//退栈 intGetTop();//读栈顶元素 voidSearch(int);//查找 }; //带链栈初始化 Stack: : Stack() { top=NULL;//栈顶指针为空 } //顺序输出栈中的元素 voidStack: : Show() { node*p; p=top; if(p==NULL) { cout<<"空栈! \n"; } while(p! =NULL) { cout< p=p->next; } } //检测带链栈的状态 intStack: : Judge() { if(top==NULL)//若带链栈为空,则函数返回0 {cout<<"此栈为空! "< else{cout<<"此栈非空! "< } //入栈 voidStack: : Push(intx) { node*p; p=newnode;//申请一个新结点 p->d=x;//置新结点数据域值 p->next=top;//置新结点指针域值 top=p;//栈顶指针指向新结点 return; } //退栈 intStack: : Pop() { inty; node*q; if(top==NULL) { cout<<"空栈! \n"; return0; } q=top; y=q->d;//栈顶元素赋给变量 top=q->next;//栈顶指针指向下一个结点 deleteq;//释放结点空间 returny;//返回退栈的元素 } //读栈顶元素 intStack: : GetTop() { if(top==NULL) { cout<<"空栈! \n"; return0; } returntop->d;//返回栈顶元素 } voidStack: : Search(intz) { intj=0; inth=0; node*p; p=top; while(p) { h++; if(z==p->d){cout<<"所要找的数在位置"< p=p->next; } if(! j) cout<<"栈中没有所要找的数! "; } //主函数 intmain() { Stacks;//建立一个空的带链栈,元素为整型 intk;//栈的大小 intl; intx; cout<<"请输入栈的大小: "; cin>>k; cout<<"请输入入栈元素: "; for(inti=0;i {cin>>l;s.Push(l);} cout<<"输出栈中的元素: \n"; s.Show(); cout<<"请输入要查找的元素: "; cin>>x; s.Search(x); if(s.Judge()) cout<<"栈顶元素: "< if(s.Judge())//若栈非空则退栈 cout<<"退栈元素: "< return0; } 程序流程图: 运行结果图: 课程设计小结: 第四阶段是对数据结构的应用,主要是链表的操作,编程方法还是面向对象的编程,主要是对典型数据结构的熟悉,以及这些数据结构的基本特点以及对于这些数据结构的基本操作的实现,编程难度又有所增加,但是在同学的互相讨论以及老师的指导下还是完成了四道题目,顺利完成了实验要求。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 告XUDUO XUDUO