通信软件开发基础课程设计报告学院:班级:学号:姓名:2015年1月14日目录作业一课程设计目的……………………………………………………………课程设计要求……………………………………………………………开发运行的软件……………………………………………………….设计步骤……………………………………………………………………运行结果截图……………………………………………………………总结……………………………………………………………………………作业二课程设计目的……………………………………………………………. 课程设计要求……………………………………………………………. 开发运行的软件…………………………………………………………设计步骤………………………………………………………………...... 运行结果截图……………………………………………………………. 总结…………………………………………………………………………….作业一:一个显示系统时间的时钟一.课程设计目的本课程设计的目的就是要通过一次集中的强化训练,使学生能及时巩固已学的知识,补充未学的但又必要的内容。
进行课程设计目的在于加深对程序设计基础中基础理论和基本知识的理解,促进理论与实践的结合,进一步提高程序设计的能力。
具体目的如下:1.使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。
2.培养学生综合运用所学知识独立完成课题的能力。
3.培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。
4.提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。
5.培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。
6.对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。
二.课程设计要求A.具有显示时钟,“开始”,“停止”按钮的图形界面。
B.点击“开始”按钮,显示时钟;点击“停止”按钮,清除屏幕。
C.时钟界面有12个小时的点,三根不同的指针。
短粗指针为时针,长粗指针为分针,长细指针为秒针。
可以以不同颜色来区分三根指针。
D.秒针以一秒为单位进行旋转,分和时针要进行近似不停的旋转针。
例如,分针每十秒旋转一次,时针每两分钟旋转一次。
三.开发运行的软件支持Java语言的Eclipse开发软件。
四.设计步骤导入的类定义的数据绘制时钟定义的函数绘制指针五.运行结果截图初始点击开始按钮过了两分钟可以看出分针秒针在动点击停止按钮六.总结虽然基本按老师的要求完成了课程设计,但是还是有很多的不足需要改进。
而且整个界面做的也不是很好看。
会进一步去完善的。
作业二一.课程设计目的本课程设计的目的就是要通过一次集中的强化训练,使学生能及时巩固已学的知识,补充未学的但又必要的内容。
进行课程设计目的在于加深对程序设计基础中基础理论和基本知识的理解,促进理论与实践的结合,进一步提高程序设计的能力。
具体目的如下:1.使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。
2.培养学生综合运用所学知识独立完成课题的能力。
3.培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。
4.提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。
5.培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。
6.对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。
二.设计要求A.具有至少一下0-9,加,减,乘,除,小数点,等于显示结果框这些内容的图形界面。
B.输入若干运算符号和数据后点击等于输出相应结果。
C.要求可以连续输入数据和运算符号,最后计算结果。
三.开发运行的软件支持Java语言的Eclipse开发软件。
四.设计步骤导入的类数据的定义按钮的设置图形界面的绘制主要函数的绘制五.运行结果六.总结基本达到要求,但仍然有待改进。
附录一:import java.awt.*;import java.awt.event.*;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import javax.swing.*;import java.util.Timer;import java.util.*;public class zhong extends JFrame implements Runnable{Panel p1,p2;Button b1,b2;private int width = 400;private int height = 400;private int hour = 0;private int minute = 0;private int second = 0;//半径private double R = (width-200)/2.0;private double P = Math.PI/6;private boolean tag = true;private Map<Integer,Double> xMap = new HashMap<Integer,Double>();private Map<Integer,Double> yMap = new HashMap<Integer,Double>();public zhong() {b1=new Button("开始");b1.addActionListener(new ActionListener( ) {public void actionPerformed(ActionEvent e) {processAction(e); }} );b2=new Button("停止");b2.addActionListener(new ActionListener( ) {public void actionPerformed(ActionEvent e) {processAction(e); }} );p1=new Panel();p1.add(b1);p1.add(b2);add(p1,BorderLayout.SOUTH);p2 = new Panel();p2.setSize (400,400);p2.setBackground(Color.WHITE);add(p2);p2.setVisible(true);this.setTitle("pan's little clock");this.setSize(new Dimension(width,height));this.setLocation(1,1);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);//new Thread(this).start();}public int calX(double P,int i,int R1){double e = P*i;double x = Math.sin(e)*R1 + R + 50;return (int)x;}public int calY(double P,int i,int R1){double e = P*i;double y = R + 50 - Math.cos(e)*R1 ;return (int)y;}public void paint(Graphics g){for(int i=1;i<=12;i++) {double e = P*i;double x = Math.sin(e)*R + R + 50;double y = R + 60 - Math.cos(e)*R ;xMap.put(i, x);yMap.put(i, y);}Graphics2D g2 = (Graphics2D) g;//钟的背景和钟盘只绘制一次g2.setColor(Color.gray);g2.fillRect(0,0,width,height);g2.setColor(Color.WHITE);g2.drawOval(35,35,width-160,height-160);double x = 0, y = 0;for(int i=1;i<=12;i++) {double e = P*i;x = xMap.get(i);y = yMap.get(i) ;g2.drawString(String.valueOf(i),(int)x,(int) y);}tag = false;//绘制钟心g2.fillRect(33+(width-160)/2,33+(height-160)/2,8,8);//绘制数字时钟g2.drawString(hour+":"+minute+":"+second,20 + (width-180)/2,100);//绘制时针g2.setColor(Color.MAGENTA);if(hour>12){hour -= 12;}g2.drawLine(33+(width-160)/2,33+(width-160)/2,calX(Math.PI/6+Math.PI/120,hour,60), calY(Math.PI/6+Math.PI/120,hour,40));//绘制分针g2.setColor(Color.RED);g2.drawLine(33+(width-160)/2,33+(width-160)/2,calX(Math.PI/30,minute,100), calY(Math.PI/30,minute,80));//绘制秒针g2.setColor(Color.YELLOW);g2.drawLine(33+(width-160)/2,33+(width-160)/2,calX(Math.PI/30,second,150), calY(Math.PI/30,second,100));g2.dispose();}public void processAction(ActionEvent e) {Object obj=e.getSource();if (obj==b1) {p2.setVisible(false);new Thread(this).start(); }if (obj==b2) { p2.setVisible(true);//p2 = new Panel();//p2.setSize (400,400);//p2.setBackground(Color.black);//add(p2);}}public void run() {Timer timer = new Timer();timer.schedule(new TimerTask(){public void run() {hour = new java.util.Date().getHours();minute = new java.util.Date().getMinutes();second = new java.util.Date().getSeconds();repaint();}},0,1000);}public static void main(String[] args){zhong mainf = new zhong();}}附录二:import java.awt.*;import java.awt.event.*;import java.text.DecimalFormat;import javax.swing.*;import java.util.*;public class suan extends JFrame implements ActionListener { JTextField txt, text;JPanel pnl, pnl_1, pnl_2, pnl_3;JMenuBar menu;JMenuItem s, t ;JLabel label;JButton btn_Bk, btn_C, btn_left, btn_right, btn_Dot;JButton btn[];JButton btn_Add, btn_Sub, btn_Mul, btn_Div;JButton btn_Equal;DecimalFormat df;double memory_data;int memory_int;double middle, result;int key = -1, prekey = -1;public suan() {super("计算器");result = 0;df = new DecimalFormat("0.##############");txt = new JTextField(15);txt.setText("");txt.setHorizontalAlignment(JTextField.RIGHT);txt.setEditable(false);pnl = new JPanel();this.getContentPane().add(pnl);pnl_1 = new JPanel();pnl_2 = new JPanel();pnl.setLayout(new BorderLayout());JMenuBar mainMenu = new JMenuBar();setJMenuBar(mainMenu);menu = new JMenuBar();pnl.add(menu, BorderLayout.NORTH);pnl.add(txt, BorderLayout.CENTER);pnl.add(pnl_1, BorderLayout.SOUTH);pnl_1.setLayout(new BorderLayout());text = new JTextField(3);text.setEditable(false);text.setBackground(new Color(220, 220, 220));label = new JLabel(" ");btn_Bk = new JButton("Backspace");btn_C = new JButton("C");btn_Bk.addActionListener(this);btn_C.addActionListener(this);pnl_1.add(pnl_2, BorderLayout.NORTH);pnl_2.setLayout(new FlowLayout(FlowLayout.RIGHT)); pnl_2.add(text);pnl_2.add(label);pnl_2.add(btn_Bk);pnl_2.add(btn_C);pnl_3 = new JPanel();pnl_1.add(pnl_3, BorderLayout.CENTER);btn = new JButton[10];for (int i = 0; i < btn.length; i++) {btn[i] = new JButton(Integer.toString(i));btn[i].addActionListener(this);}btn_left = new JButton("(");btn_right = new JButton(")");btn_Dot = new JButton(".");btn_Add = new JButton("+");btn_Sub = new JButton("-");btn_Mul = new JButton("*");btn_Div = new JButton("/");btn_Equal = new JButton("=");pnl_3.setLayout(new GridLayout(5, 4));pnl_3.add(btn[7]);pnl_3.add(btn[8]);pnl_3.add(btn[9]);pnl_3.add(btn_Add);btn_Add.addActionListener(this);pnl_3.add(btn[4]);pnl_3.add(btn[5]);pnl_3.add(btn[6]);pnl_3.add(btn_Sub);btn_Sub.addActionListener(this);pnl_3.add(btn[1]);pnl_3.add(btn[2]);pnl_3.add(btn[3]);pnl_3.add(btn_Mul);btn_Mul.addActionListener(this);pnl_3.add(btn_left);btn_left.addActionListener(this);pnl_3.add(btn[0]);pnl_3.add(btn_right);btn_right.addActionListener(this);pnl_3.add(btn_Div);btn_Div.addActionListener(this);pnl_3.add(btn_Dot);btn_Dot.addActionListener(this);pnl_3.add(btn_Equal);btn_Equal.addActionListener(this);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);pack();this.setVisible(true);}public void actionPerformed(ActionEvent event) {Object temp = event.getSource();try {for (int i = 0; i <= 9; i++) {if (temp == btn[i]) {txt.setText(txt.getText() + Integer.toString(i));}}if (temp == btn_Add || temp == btn_Sub || temp == btn_Mul || temp == btn_Div || temp == btn_left || temp == btn_right) {txt.setText(txt.getText() + event.getActionCommand());}if (temp == btn_Dot) {txt.setText(txt.getText() + ".");}if (temp == btn_Equal) {try {double result = Calculate(txt.getText());txt.setText(df.format(result));} catch (Exception e) {}}if (temp == btn_Bk) {String s = txt.getText();txt.setText("");for (int i = 0; i < s.length() - 1; i++) {char a = s.charAt(i);txt.setText(txt.getText() + a);}}if (temp == btn_C) {middle = result = 0;txt.setText("");}try {} catch (Exception eeee) {}}catch (Exception e) {}}final static int N = 100;private int com(String x) {if (x.equals("*") || x.equals("/")) {return 2;}if (x.equals("*") || x.equals("/")) {return 1;} else {return -1;}}public double Calculate(String Input) {String example = new String("()+*/-");String[] input = new String[N];String[] Post = new String[N];int n = Input.length();int count = 0;int pre = -1;for (int i = 0; i < n; i++) {if (example.indexOf(Input.charAt(i)) != -1) {if (pre != -1 && i != pre) {input[count++] = Input.substring(pre, i);} if (pre == -1) {input[count++] = Input.substring(0, i);}input[count++] = Input.substring(i, i + 1);pre = i + 1;}}if (pre < n) {if (pre == -1) {input[count++] = Input.substring(0, n);} else {input[count++] = Input.substring(pre, n);}}Stack<String> S = new Stack<String>();int j = 0;for (int i = 0; i < count; i++) {if (example.indexOf(input[i]) == -1) {Post[j++] = input[i];} else {if (input[i].equals("(")) {S.push(input[i]);} else if (input[i].equals(")")) {while (!S.peek().equals("(")) {Post[j++] = S.pop();}S.pop();} else {if (S.empty()) {S.push(input[i]);} else {while (!S.empty() && com(S.peek()) >= com(input[i]) && (!S.peek().equals("("))) {Post[j++] = S.pop();}S.push(input[i]);}}}}while (!S.empty()) {Post[j++] = S.pop();}S.clear();int m = j;for (int i = 0; i < m; i++) {if (Post[i].equals("+")) {double a = Double.parseDouble(S.pop());S.push(String.valueOf(Double.parseDouble(S.pop()) + a));} else if (Post[i].equals("-")) {double a = Double.parseDouble(S.pop());S.push(String.valueOf(Double.parseDouble(S.pop()) - a));} else if (Post[i].equals("*")) {double a = Double.parseDouble(S.pop());S.push(String.valueOf(Double.parseDouble(S.pop()) * a));} else if (Post[i].equals("/")) {double a = Double.parseDouble(S.pop());S.push(String.valueOf(Double.parseDouble(S.pop()) / a));} else {S.push(Post[i]);}}double result = Double.parseDouble(S.pop());return result;}public static void main(String args[]) {new suan();}}。