课程设计说明书713 2.docx
《课程设计说明书713 2.docx》由会员分享,可在线阅读,更多相关《课程设计说明书713 2.docx(13页珍藏版)》请在冰豆网上搜索。
![课程设计说明书713 2.docx](https://file1.bdocx.com/fileroot1/2022-12/14/7f0ac8f3-b461-4a66-8ac0-eeea6587fb2b/7f0ac8f3-b461-4a66-8ac0-eeea6587fb2b1.gif)
课程设计说明书7132
计算机科学与技术教研室
课程设计说明书
(2014-2015学年第1学期)
课程名称
Java与数据库课程设计
设计题目
模拟计算器
学号
201340405241
姓名
张胜男
小组成员
黄静静、胡少美、李亚男、张胜男
起止时间:
2015年7月6日至2015年7月17日
课程设计
评语
在该课程设计中,该生按时到机房进行课程设计,表现良好,参与了该课程设计的整个过程,实现了模拟计算器系统的以下功能:
标准型计算器的加减乘除等;科学型计算器的数学常用函数。
其课程设计说明书填写正确,有条有理,代码正确,有了一定的独立编程能力并且对课本知识掌握较为熟练。
能按照设计要求完成指定的功能。
该生在答辩过程中程序运行正常,回答问题较流利,对java和数据库知识掌握良好。
平时成绩
报告成绩
演示与答辩成绩
成绩总评
指导教师
(签字)
年月日
注:
成绩均用百分制。
总成绩=平时成绩*20%+报告成绩*40%+演示与答辩成绩*40%
设计题目:
模拟计算器
1、课程设计目的
(1)使学生巩固和提高Java编程技术
(2)培养学生掌握程序设计的基本思路和方法;
(3)加强学生研发、调试程序的能力;
(4)培养学生分析、解决问题的能力;
(5)提高学生的科技论文写作能力。
2、课程设计正文
2.1概要设计
系统分析
该系统主要功能包括:
设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算,计算器应用程序可以完成加法、减法、乘法、除法且有小数点、正负号的运算,和完成复杂的数学常用函数的运算,计算器应用程序可以完成求倒数、三角函数、log函数、ln函数、幂函数、反三角函数的运算;还包括退格和清零等功能。
用鼠标单击相应的数字键和运算符号键,然后单击=按钮,窗口上方的文本框将会显示计算出来的结果,要将文本编辑框清零,可单击清零按钮。
图1系统功能图
分析:
1.定义一个类,在类的构造方法中设计定义GUI图形界面,设计出标准计算器的图形界面和科学型计算器的图形界面;
2.给定义的数字按钮添加ActionListener监听事件,点击按钮在文本框中出现相应的数字;
3.给的菜单中的菜单项添加MouseListener监听事件,item1监听显示标准型计算器,item2监听显示科学型计算器;
4.标准型计算器功能:
实现基本的加减乘除的运算;
5.科学型计算器功能:
实现常见的数学函数的运算,像三角函数、反三角函数、log函数、ln函数、取整、取余等;
模拟计算器要实现的功能:
1、数字的输入;2、函数的实现与调用;3、删除文本框中的内容;4、清零文本框;5、等于功能;6、退出系统。
2.2详细设计
2.2.1窗体、按钮、菜单的定义
JFramej=newJFrame("计算机");
JPanelp=newJPanel();
JPanelp1=newJPanel();
JPanelp2=newJPanel();
JPanelp3=newJPanel();
JTextFieldt=newJTextField();
JMenuBarbar1=newJMenuBar();
JMenumnu1=newJMenu("查看");
JMenuItemitem1=newJMenuItem("标准型");
JMenuItemitem2=newJMenuItem("科学型");
ButtonGroupgrp1=newButtonGroup();
//-------------科学性---------------
JButtonb13=newJButton("MOD");
JButtonb14=newJButton("asin");
JButtonb15=newJButton("acos");
JButtonb16=newJButton("atan");
JButtonb17=newJButton("INT");
JButtonb18=newJButton("√");
JButtonb19=newJButton("!
");
JButtonb20=newJButton("1/x");
JButtonb21=newJButton("log");
JButtonb22=newJButton("ln");
JButtonb23=newJButton("sin");
JButtonb24=newJButton("cos");
JButtonb25=newJButton("tan");
JButtonb26=newJButton("л");
JButtonb27=newJButton("e");
JButtonb28=newJButton("%");
//----------------标准型-------------------
JButtonbt1=newJButton("1");
JButtonbt2=newJButton("2");
JButtonbt3=newJButton("3");
JButtonbt4=newJButton("4");
JButtonbt5=newJButton("5");
JButtonbt6=newJButton("6");
JButtonbt7=newJButton("7");
JButtonbt8=newJButton("8");
JButtonbt9=newJButton("9");
JButtonbt10=newJButton("0");
JButtonbt0=newJButton("00");
JButtonbt11=newJButton(".");
JButtonbt12=newJButton("+");
JButtonbt13=newJButton("-");
JButtonbt14=newJButton("*");
JButtonbt15=newJButton("/");
JButtonbt16=newJButton("=");
JButtonbt17=newJButton("^");
JButtonbt18=newJButton("复位");
JButtonbt19=newJButton("删除");
2.2.2GUI图形界面的设计:
bar1.add(mnu1);
mnu1.add(item1);
mnu1.add(item2);
j.setLayout(null);
p.setLayout(newGridLayout(4,5));
p1.setLayout(newGridLayout(4,3));
p2.setLayout(newGridLayout(4,4));
p1.setBackground(Color.BLACK);
j.setBounds(50,50,500,600);
p.setBounds(50,150,400,400);
p1.setBounds(50,150,200,300);
p2.setBounds(253,225,300,226);
t.setBounds(50,40,400,100);
bar1.setSize(500,30);
t.setFont(font);
p2.add(b13);
p2.add(b17);
p2.add(b21);
p2.add(b25);
p2.add(b14);
p2.add(b18);
p2.add(b22);
p2.add(b26);
p2.add(b15);
p2.add(b19);
p2.add(b23);
p2.add(b27);
p2.add(b16);
p2.add(b20);
p2.add(b24);
p2.add(b28);
p.add(bt7);
p.add(bt8);
p.add(bt9);
p.add(bt14);
p.add(bt17);
p.add(bt4);
p.add(bt5);
p.add(bt6);
p.add(bt15);
p.add(bt18);
p.add(bt1);
p.add(bt2);
p.add(bt3);
p.add(bt12);
p.add(bt19);
p.add(bt10);
p.add(bt0);
p.add(bt11);
p.add(bt13);
p.add(bt16);
j.add(bar1);
j.add(t);
p.setVisible(false);
p1.setVisible(false);
p2.setVisible(false);
p3.setVisible(false);
j.setVisible(true);
2.2.3事件的监听
(1)数字按钮的监听
操作结果:
在文本框输入相应的数字;
分析:
按钮添加ActionListener监听,实现actionPerformed()方法,在方法体中调用setText()方法文本框的输入;
(2)菜单项的监听
操作结果:
点击相应的菜单项显示相应的图形界面;
分析:
菜单项添加MouseLitener监听,实现其中的MousePressed()方法,在方法体中设置面板的setVisable()方法,实现相应的界面显示;
(3)加减按钮的监听
操作结果:
实现对数字的连加连减功能;
分析:
给加减法按钮添加ActionListrener监听,重写actionPerformrd()方法中实现连加连减的算法,并设置id的值,为点击等于按钮监听中的Switch(id)提供选项;
(4)乘除按钮的监听
操作结果:
实现对输入数字的乘除算法;
分析:
在按钮的监听中利用s1=str、str+="*"、s2=""实现文本框中数字的交换,并设置id的值;
(5)科学型计算按钮的监听
操作结果:
点击相应的科学型计算按钮实现相应的功能;
分析:
给科学型按钮添加ActionListener监听,重写actionPerformed()方法实现相应的功能;
(6)删除按钮添加监听
操作结果:
对文本框中的内容进行删除;
分析:
在删除按钮的监听中定义数组char[]c1,c2;c2=newchar[str.length()-1];
c1=str.toCharArray()利用for循环实现对文本框中的内容长度减一,以此来实现删除;
(7)等于按钮的监听
操作结果:
点击等于号文本框中显示计算结果
分析:
在等于按钮的监听中在各个id选项中实现不同的算法,在科学型算法的id选项中调用Math类中的函数来实现功能,再利用switch(id)来选择算法执行并在文本框中显示结果;
(8)复位按钮的监听
操作结果:
点击复位按钮实现文本框的清零
分析:
在复位按钮的监听中将所有用到的字符串和double型的数字全部设置为空;
2.2.4函数流程图
(1)标准型计算器流程图
图2标准型计算器流程图
(2)科学型计算器流程图
图5科学型计算器流程图
2.2.5代码(见附录)
2.3程序测试结果
(1)主菜单界
图3主界面
(2)标准型计算器界面
图5标准型计算器界面
(3)科学型计算器界面
图6科学型计算器界面
2、课程设计总结
我们已经学习了一学期的java和数据库知识,通过这次课程设计,使我对于java和数据库这两门课门课有了比较深的了解,虽然在学习过程中也遇到各种各样的困难,但是通过查询书籍以及询问老师等途径解决了许多问题。
在解决这些问题的过程中让我也学到了许多课本上没有的知识,巩固了知识而且明白了团队合作的重要性。
在编写程序时,首先我对模拟计算器系统进行了大致的了解,通过小组内成员的讨论将问题更具体化,知道如何去编写这个程序。
首先定义所有需要的框架、按钮,再设置其大小位置,并且给每一个按键添加监听编写其监听事件;总共这个系统共两部分,第一部分是标准型计算器,第二部分是科学型计算器。
通过这次的课程设计,我学到了许多,更加明白了课本的重要性,同时也发现了自己在学习上的一些不足之处。
在做这个课题之前我又重新的看了一遍课本,把老师教过的知识和书上的基础知识又巩固了一遍,在课程设计的时候就可以避免盲目的去做。
通过编写程序,开拓了我的视野,学会了独立思考问题的能力以及上机操作的能力。
这些都是我可以继续学习的重要渠道。
通过编程,我知道了想要完成一个课程设计必须具备的一些素质。
首先要有足够的程序设计的基础知识储备,然后是对程序进行编程时需要的开拓思维,之后就是对于模拟计算器系统设计的认识。
在方法上面我学到了编程时应该利用多种思考的方法去解决问题,而不是只局限于一种方法去实现程序的设计。
通过这次课程设计,我受益匪浅,学到了许多的知识与技能。
更加重要的是提高了我分析问题的能力、多面思考问题的能力。
另一方面我在这次课程设计中明白了合作精神的重要性。
从中也认识到了自己的许多的不足。
例如没有耐心,有时侯在调试程序时,发现了一个错误,但是总是解决不了,心里就会感到厌烦,不想继续做下去。
还有不够细心,每一次改写完程序后,检查了一遍,自己认为没有错了,结果一调试发现又有错误等等。
不过也发现了自己的一些优点,比如善于听取他人意见,虚心求教等。
最后,通过全组人的齐心协力,最终将程序编写了出来,并且使之得到实现我们的预期目的。
通过此次课程设计,从一定成度上提高了我们对数据结构的熟悉度,也提高了我们独立编程的能力,同时也体会到在程序设计过程中团体合作,共同解决问题的重要性。
综上所述,在学习过程中我不断的吸取知识,对于不足之处及时地改正。
同时我深刻地认识到要学好数据结构更重要的是掌握一些计算机方面的知识以及C++方面的知识,同时具备上机操作能力,实践操作与知识的掌握同等重要。
4、参考文献
[1]朱福喜.《Java语言程序设计》(第二版).科学出版社
[2]陈国君等.《Java程序设计基础》(第二版).清华大学出版社
[3]Deitel.《Java大学基础教程》(第六版).电子工业出版社
[4]MaryCampione.《Java语言导学》(第四版).机械工业出版社
[5]Y.DanielLiang.《Java语言程序设计基础篇》(第六版).机械工业出版社
[6]KathySierra.《HeadFirstJava》(第二版).东南大学出版社
答辩记录
答辩小组教师:
孙丽,叶春凤
提问与答辩情况记录如下:
1、如何对这个题目进行分析设计的?
答:
首先决定使用链表的数据结构,然后在根据题目要求选择使用合适的链表,对需要的变量进行定义,然后创建单链表,为了实现药品销售统计系统的功能,一共需要编写七大函数,其中以排序应用为主,在此使用了直接插入排序来实现其功能,定义指针,建立新的结点,其中又利用while和if语句实现系统各个功能。
2、程序的亮点是什么?
答:
在这个程序中,首先根据数据结构的相关知识,用链表来实现其功能。
在这个程序中,主要是排序的应用,用到了数据结构中的直接插入法排序法,建立另一个头结点H,把L中第一个结点作为H的第一个结点,q指向原有的结点的数据,q指向的结点插到p的后面即p->next的前面,p指向新建立的头结点,其中利用到了while和if语句,从而完成功能的实现。
3、怎么实现删除函数?
答:
首先建立一个头指针p,L是单链表的头指针,p=L->next;在p->next!
=NULL的条件下,比较输入的药品信息与存在的药品信息是否相同,若相同,则删除成功;p=p->next;继续执行下面的内容。
若p->next==NULL,则输出没有此需要删除的信息。
在删除函数中主要是用if和while语句来实现其功能。