java-课程设计-彩票购买抽奖程序(个人部分)

彩票抽奖(个人部分)

一、团队课程设计博客链接

https://www.cnblogs.com/hcy420/p/14342842.html

二、个人负责的功能(图中黄色部分)

三、Git代码提交记录截图

四、个人负责模块说明(及代码)

  • 用户登陆

    代码

    public static boolean  login(String username, String password) {
    		File file = new File("C:\\Users\\lxx599\\Desktop\\user.txt");
    		int temp = 0;
    		try ( BufferedReader br = new BufferedReader(new FileReader(file));) {
    			String strin;
    			
    			while((strin=br.readLine())!=null) {
    				String[] stri = strin.split("\\s+") ;
    				
    				for (int i = 0; i < stri.length; i++) {
    					User u1 = new User();
    					u1.id=stri[0];
    					u1.username=stri[1];
    					u1.password=stri[2];
    					u1.money=Integer.parseInt(stri[3]);
    					u1.tel=stri[4];
    					if(stri[1].equals(username)&&stri[2].equals(password)) {
    						temp++;
    						u=u1;
    						break;
    					}
    				}	
    			}
    			
    				if (temp >= 1)
    					return true;
    			
    		} catch (NumberFormatException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (FileNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    
    		return false;
    
    	}
    

    功能介绍:使用static修饰login(String username, String password )方法是因为static能够实现在不同的包中被调用。该方法中的两个参数分别是用户名和密码,通过判断用户名和密码是否匹配,且能在文件中找到,则登陆成功,否则提示登录错误的信息。

  • 用户注册

    代码:

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            // TODO add your handling code here:     
            File file = new File("C:\\Users\\lxx599\\Desktop\\user.txt");
            boolean temp = user.User.repeatUser(jTextField2.getText(),jTextField1.getText());
            if(!temp&&file.exists()) {//还有注意txt文件是否为空      	
    			try ( BufferedWriter bw = new BufferedWriter(new FileWriter(file,true));) {
    				bw.write(jTextField1.getText());
    				bw.write(" ");
    				bw.write(jTextField2.getText());
    				bw.write(" ");
    				bw.write(jTextField3.getText());
    				bw.write(" ");
    				bw.write(jTextField4.getText());
    				bw.write(" ");
    				bw.write(jTextField5.getText());
    				bw.newLine();
    				bw.flush();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    			JOptionPane.showMessageDialog(null, "注册成功");
    		}
            else JOptionPane.showMessageDialog(null, "该账户已经存在");
            new Login().setVisible(true);dispose();
        
        }
    

    功能介绍:在账号和id不是已有账号的情况下,通过BufferedWriter的flush将获取到的信息写入文件中。

  • 手动彩票抽奖

    代码:

    public static int getReward(String string) {
    		Lottery lo = new Lottery();
    		int specialNumber = 0;//特殊数字
    		String[] str = string.split("\\s+");
    		lo.setNumber(string);
    		System.out.println(string);
    		specialNumber = (int)(1+ Math.random()*36);
    		System.out.println(specialNumber);
    		
    		int count=0;//中奖号码个数
    		//String valueNum;
    		int[] arr = new int[7];
    		int k = 0;
    		while (k < 7) {
    			arr[k] = (int) (1+Math.random() * 36);
    			for(int j=0;j<k;j++) {
    				if(arr[k]==arr[j]) k--;//随机产生不重复的七个数字
    			}
    			k++;
    		}
    		//valueNum = arr.toString();
    		int j=0;
    		for (int i = 0; i < arr.length; i++) {
    			for (j = 0; j < str.length; j++) {
    				if(arr[i]>Integer.parseInt(str[j])) {
    					j++;
    				}
    				else if(arr[i]<Integer.parseInt(str[j])) {
    					i++;
    				}
    				else count++;
    			}
    			if(j==str.length) break;
    		}
    		
    		int special =0;//判断是否有特殊数字
    		for (int i = 0; i < arr.length; i++) {
    			if(arr[i]==specialNumber) {
    				special=1;
    				break;
    			}
    		}
    		
    		int award=0;
    		/*此处省略了判断中奖金额的设置*/
    		return award;
    	}
    

    功能介绍:将传入的字符串与中奖的号码一一进行比对同时创建一个lo用来存储该用户在购票时所选择的号码。若中奖则award的值为相应的金额,反之award的值为0。

五、课程设计总结

​ 在本次的课程设计中,虽然我们团队的彩票抽奖程序并没有很完善,但是总体上实现了用户的登陆、注册和手动选号购票等。课程设计是一个将课堂是的理论知识付诸于实践的一个良好机会,有效促进我的编写函数的能力,同时也对static修饰的方法有了更加深刻的印象,static修饰的方法能够被不同包访问(类名.方法名),但是不能在static修饰的方法中调用非静态变量或者方法,同时也不能使用this关键字。

posted @ 2021-01-28 23:19  羊腿桂鱼yu  阅读(98)  评论(0编辑  收藏  举报