电子商务期末大作业代码

电子商务代码

效果图

在这里插入图片描述

建议拿来自己改一下,图片地址,框框大小都有,还有大量的注释提醒你这个参数是干嘛的,考试雷同就怪自己吧。

使用流程

先在登录框中输入账户密码,点击登录

登录后凯撒加密第一个框就会出现账户和密码,格式为 账户:密码

第二个框中输入秘钥(自定义,随便输入,加密解密保持一致即可)

点击加密按钮 -> 加密结果会在第三个框中出现

登录框 Login,项目在这个类中运行的

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


import javax.swing.*;

public class Login extends JFrame {

	//修改登录框的大小,默认400, 250,考试时就改成比较合适大小的
	static final int HEIGHT=400,WIDTH=250;
	//修改凯撒加密解密框的大小,默认400, 250,考试时就改成比较合适大小的
	static final int HEIGHT_KENSA=400,WIDTH_KENSA=350;
	
	
    //背录图片的路径。(相对路径或者绝对路径。本例图片放于"java项目名”的文件下)
    static String path = "改成你的图片地址";//登录的背景图
    static String path2 = "改成你的图片地址";//加密的背景图


    
    static String str; //明文or密文,无需修改
    static  int key; //用于存储明秘钥,无需修改
    static JTextField   text_str; //用于存储 明文or密文,无需修改

    
    public static void main(String[] args) {
        Login login = new Login();
        login.initUI();//初始化登录界面
        login.iniFocusevent();//初始化登录界面


    }
    /**
              * 初始化登录界面
     */
    private  void initUI() {

        JFrame  frame = new JFrame();
        frame.setTitle("Login");
        frame.setSize(HEIGHT, WIDTH);
        frame.setDefaultCloseOperation(3);
        frame.setLocationRelativeTo(null);
        frame.setResizable(false);
        frame.setFont(new Font("宋体", Font.PLAIN, 14));//设置字体类型,大小为14号,PLAIN为字体类型,可设置为加粗

        //实例化布局对象
        FlowLayout fl = new FlowLayout(FlowLayout.CENTER, 10, 10);//布局,随便改,能看就行

        frame.setLayout(fl);
        //设置账户
        JLabel labname = new JLabel("账户:");
        labname.setFont(new Font("宋体", Font.PLAIN, 14));//设置字体类型,大小为14号,PLAIN为字体类型,可设置为加粗
        frame.add(labname);

        JTextField   text_name = new JTextField();
        Dimension dim1 = new Dimension(300, 30);
        text_name.setPreferredSize(dim1);
        frame.add(text_name);

        //设置密码

        JLabel labpass = new JLabel("密码:");
        labpass.setFont(new Font("宋体", Font.PLAIN, 14));//设置字体类型,大小为14号,PLAIN为字体类型,可设置为加粗
        frame.add(labpass);

        JPasswordField   text_password = new JPasswordField();
        text_password.setPreferredSize(dim1);
        frame.add(text_password);

        //设置图片

        ImageIcon background = new ImageIcon(path);//设置图片

        JLabel label = new JLabel(background);//把背景圆片显示在一个标签玉面

        label.setBounds(0,0, frame.getWidth(), frame.getHeight());//

        //把标签的大小位置设置为图片刚好填充委个面板
        JPanel imagePanel = (JPanel) frame.getContentPane();//把内容窗格转化为JPanel.否则不能用方法setOpaque()

        imagePanel.setOpaque(false);

        frame.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));//把景国片器加到分层窗格的最高层作为

        label.setBounds(0,0,500,158);

        //设置登录按钮
        JButton  button1 = new JButton();
        Dimension dim2 = new Dimension(100, 30);
        button1.setText("登录");
        button1.setFont(new Font("宋体", Font.PLAIN, 14));
        button1.setSize(dim2);
        frame.add(button1);
        frame.setVisible(true);
        //设置登录逻辑
        button1.addActionListener(new LoginListener(frame,text_name,text_password));

        //处理账户密码,进行账户密码的加密
        button1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String text = text_name.getText();
                String passwordText = text_password.getText();
                str = text+":"+passwordText;//赋值给它
                text_str.setText(str);//给text_str复制
            }
        });

    }
    /**
              * 初始化加密解密界面
     */

    private static   void iniFocusevent() {

        JFrame  frame = new JFrame();
        frame.setTitle("凯撒加密解密");
        frame.setSize(HEIGHT_KENSA, WIDTH_KENSA);
        frame.setDefaultCloseOperation(3);
        frame.setLocationRelativeTo(null);
        frame.setResizable(false);
        frame.setFont(new Font("宋体", Font.PLAIN, 14));

        //实例化布局对象
        FlowLayout fl = new FlowLayout(FlowLayout.LEADING, 20, 20);
        frame.setLayout(fl);
        //设置账户
        JLabel labname = new JLabel("请输入明文/密文:");
        labname.setFont(new Font("宋体", Font.BOLD, 15));
        frame.add(labname);

        text_str = new JTextField();
        Dimension dim1 = new Dimension(300, 30);
        text_str.setPreferredSize(dim1);
        frame.add(text_str);






        //设置密码

        JLabel labpass = new JLabel("输入秘钥:");
        labpass.setFont(new Font("宋体", Font.BOLD, 15));
        frame.add(labpass);

        JPasswordField   text_password = new JPasswordField();
        text_password.setPreferredSize(dim1);
        frame.add(text_password);


        //设置结果

        JLabel labResults= new JLabel("结果为:");
        labResults.setFont(new Font("宋体", Font.BOLD, 15));
        frame.add(labResults);

        JTextField   text_Result = new JTextField();
        text_Result.setPreferredSize(dim1);
        frame.add(text_Result);


        //设置图片

        ImageIcon background = new ImageIcon(path2);

        JLabel label = new JLabel(background);//把背景圆片显示在一个标签玉面

        label.setBounds(0,0, frame.getWidth(), frame.getHeight());//

        //把标签的大小位置设置为图片刚好填充委个面板
        JPanel imagePanel = (JPanel) frame.getContentPane();//把内容窗格转化为JPanel.否则不能用方法setOpaque()

        imagePanel.setOpaque(false);

        frame.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));//把景国片器加到分层窗格的最高层作为

        label.setBounds(0,0,500,158);

        //设置加密按钮
        JButton  button1 = new JButton();
        Dimension dim2 = new Dimension(100, 30);
        button1.setText("加密");
        button1.setFont(new Font("宋体", Font.PLAIN, 14));
        button1.setSize(dim2);
        frame.add(button1);
        frame.setVisible(true);
        //设置加密逻辑
        button1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String resu = text_password.getText();
                String encryption = Encrypt.Encryption(text_str.getText(), Integer.valueOf(resu));
                text_Result.setText(encryption);
            }
        });


        //设置解密按钮
        JButton  button2 = new JButton();
        Dimension dim3 = new Dimension(100, 30);
        button2.setText("解密");
        button2.setFont(new Font("宋体", Font.PLAIN, 14));
        button2.setSize(dim3);
        frame.add(button2);
        frame.setVisible(true);
        //设置解密逻辑
        button2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String resu = text_password.getText();
                String encryption = Encrypt.Decrypt(text_str.getText(), Integer.valueOf(resu));
                text_Result.setText(encryption);
            }
        });

    }

}

用于凯撒加密的,此类是用于凯撒密码的加密和解密的,无需运行,保持跟Login类在同一个包

import java.util.Scanner;

/**
   * 凯撒加密
   * 此类是用于凯撒密码的加密和解密的,无需运行
 */
public class Encrypt {
    //运行测试
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("[A 加密][J 解密],请选择一个");
        Scanner c=new Scanner(System.in);//	创建Scanner对象
        String s1=c.nextLine();//获取本行的字符串
        if(s1.equalsIgnoreCase("A")) {//判断变量s1与A是否相等,忽略大小
            System.out.println("请输入明文:");
            Scanner sc=new Scanner(System.in);
            String s=sc.nextLine();
            System.out.println("请输入密钥:");
            Scanner sc1=new Scanner(System.in);
            int key=sc1.nextInt();//将下一输入项转换成int类型
            Encryption(s,key);//调用Encryption方法
        }else if(s1.equalsIgnoreCase("J")) {
            System.out.println("请输入密文:");
            Scanner sc=new Scanner(System.in);
            String s=sc.nextLine();
            System.out.println("请输入密钥:");
            Scanner sc1=new Scanner(System.in);
            int key=sc1.nextInt();
            Decrypt(s,key);//调用Encryption方法
        }
    }

    /**
     * Decrypt 解密
     * @param str 密文
     * @param n 秘钥
     */
    public static String Decrypt(String str, int n) {
        // TODO Auto-generated method stub
        //解密
        int k=Integer.parseInt("-"+n);
        String string="";
        for(int i=0;i<str.length();i++) {
            char c=str.charAt(i);
            if(c>='a'&&c<='z')//如果字符串中的某个字符是小写字母
            {
                c+=k%26;//移动key%26位
                if(c<'a')
                    c+=26;//向左超界
                if(c>'z')
                    c-=26;//向右超界
            }else if(c>='A'&&c<='Z')//如果字符串中的某个字符是大写字母
            {
                c+=k%26;//移动key%26位
                if(c<'A')
                    c+=26;//向左超界
                if(c>'Z')
                    c-=26;//向右超界
            }
            string +=c;//将解密后的字符连成字符串
        }
        System.out.println(str+"解密后为:"+string);
        return string;
    }


    /**
     * Encryption 加密方法
     * @param str 明文
     * @param k 秘钥
     */
    public static String Encryption(String str, int k) {
        // TODO Auto-generated method stub
        //加密
        String string="";
        for(int i=0;i<str.length();i++) {
            char c=str.charAt(i);
            if(c>='a'&&c<='z')//如果字符串中的某个字符是小写字母
            {
                c+=k%26;//移动key%26位
                if(c<'a')
                    c+=26;//向左超界
                if(c>'z')
                    c-=26;//向右超界
            }else if(c>='A'&&c<='Z')//如果字符串中的某个字符是大写字母
            {
                c+=k%26;//移动key%26位
                if(c<'A')
                    c+=26;//向左超界
                if(c>'Z')
                    c-=26;//向右超界
            }
            string +=c;//将解密后的字符连成字符串
        }
        System.out.println(str+"加密后为:"+string);
        return string;
    }


}

LoginListener,用于处理登录的逻辑的,不用修改,无需运行,保持跟Login类在同一个包

package com.smoyui;

import java.awt.BorderLayout;
import java.awt.Dimension;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Font;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
/**
 * 处理登录的逻辑,当账户为vv,密码为123456时就显示登录成功
 * 相关账户密码的参数已经提取出来,可以根据你的需求来变动账户密码
 * @author Administrator
 *
 */
public class LoginListener implements ActionListener{
	
	private static final String USERNAME = "vv"; //登录的账户
	private static final String PASSWORD  = "123456";//登录的密码
	
	
    private javax.swing.JTextField text_name;
    private javax.swing.JPasswordField text_password;
    private javax.swing.JFrame login;
    
    

    public LoginListener(javax.swing.JFrame login,javax.swing.JTextField text_name,javax.swing.JPasswordField text_password)
    {//获取登录界面、账号密码输入框对象
        this.login=login;
        this.text_name=text_name;
        this.text_password=text_password;
    }

    int i=3;//3次登录机会

    public void actionPerformed(ActionEvent e)
    {
        Dimension dim2 = new Dimension(100,30);
        Dimension dim3 = new Dimension(300,30);

        javax.swing.JFrame login2 = new javax.swing.JFrame();
        login2.setSize(400,200);
        login2.setDefaultCloseOperation(3);
        login2.setLocationRelativeTo(null);
        login2.setFont(new Font("宋体",Font.PLAIN,14));
        javax.swing.JPanel jp1 = new JPanel();
        javax.swing.JPanel jp2 = new JPanel();

        if(text_name.getText().equals(USERNAME) && text_password.getText().equals(PASSWORD))
        {
            JLabel message = new JLabel("登陆成功!");
            message.setFont(new Font("宋体",Font.PLAIN,14));  //宋体,正常风格,14号字体
            message.setPreferredSize(dim3);
            jp1.add(message);
            login2.add(jp1,BorderLayout.CENTER);

            login2.setResizable(false);
            login2.setVisible(true);

            login.dispose();
        }

        else if(i>=2)
        {
            JLabel message = new JLabel("账号或密码错误,您今天还有"+(i-1)+"次机会");
            message.setFont(new Font("宋体",Font.PLAIN,14));  //宋体,正常风格,14号字体
            message.setPreferredSize(dim3);
            //将textName标签添加到窗体上
            jp1.add(message);
            login2.add(jp1,BorderLayout.CENTER);

            JButton close = new JButton("确定");
            close.setFont(new Font("宋体",Font.PLAIN,14));
            //设置按键大小
            close.setSize(dim3);
            jp2.add(close);
            login2.add(jp2,BorderLayout.SOUTH);

            i--;//次数减少
            close.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent e)
                {
                    login2.dispose();
                }
            });

            login2.setResizable(false);
            login2.setVisible(true);
        }

        else if(i == 1)
        {
            JLabel message = new JLabel("账号已锁定,请明天再试");
            message.setFont(new Font("宋体",Font.PLAIN,14));  //宋体,正常风格,14号字体
            message.setPreferredSize(dim3);
            jp1.add(message);
            login2.add(jp1,BorderLayout.CENTER);

            JButton close = new JButton("确定");
            close.setFont(new Font("宋体",Font.PLAIN,14));
            close.setSize(dim3);
            jp2.add(close);
            login2.add(jp2,BorderLayout.SOUTH);

            close.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent e)
                {
                    login2.dispose();
                }
            });

            login2.setResizable(false);
            login2.setVisible(true);
            login.dispose();
        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值