Java项目三:学生管理系统

项目目标:

1、记录不同学生的成绩

2、能对学生信息进行增删查改等操作

3、有登录界面

4、有学生信息管理界面

有需要Java代码的可以去我的GitHub上去下载:Fated-2 GitHub

Java代码:

1.登录界面

package Student;

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

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
//(只能有一个公共public类)
public class Main {

	
	public static void main(String[] args) {
		new LoginDemo();

	}

}

//书写登录页面:
class LoginDemo extends JFrame{
	//用户名以及密码:
	private String username="123";
	private String password="123";
	//窗口
	public JFrame window;
	//用户名、密码、文本框:
	public JTextField user;
	public JPasswordField pwd;
	//登录的按钮
	public JButton login;
	//构造器初始化
	public LoginDemo() {
		//面板初始化:
		window=new JFrame("学生管理系统");
		//设置尺寸  600   400:
		window.setSize(600, 400);
		//居中显示:
		window.setLocationRelativeTo(null);
		//默认可关闭:
		window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//设置为绝对布局:
		window.setLayout(null);
		//设置窗口大小不可变:
		window.setResizable(false);
		
		/*
		 * 用户标签username_label:100 100 100 50
		 * 密码标签password_label:100 200 100 50
		 * 用户名文本框user:150 100 300 50
		 * 密码文本框pwd:150 200 300 50
		 * 按钮login:250 300 100 50
		 */
		//用户
		JLabel username_label = new JLabel("用户");
		username_label.setBounds(100, 100, 100, 50);
		window.add(username_label);
		
		user=new JTextField();
		user.setBounds(150, 100, 300, 50);
		window.add(user);
		
		//密码
		JLabel password=new JLabel("密码");
		password.setBounds(100, 200, 100, 50);
		window.add(password);
		
		pwd=new JPasswordField();
		pwd.setBounds(150, 200, 300, 50);
		window.add(pwd);
		
		//按钮
		login=new JButton("登录");
		login.setBounds(250, 300, 100, 50);
		window.add(login);
		
		init();//调用监听事件
		
		//设置面板可见
		window.setVisible(true);
	}
	
	//监听按钮事件
	public void init(){
		//登录按钮的***
		login.addActionListener(new ActionListener() {
			//当鼠标被按下时会调用该方法
			@Override
			public void actionPerformed(ActionEvent e) {
				System.out.println(user.getText());
				System.out.println(pwd.getText());
				//用户名及密码正确 不正确
				if(user.getText().equals(username) && pwd.getText().equals(password)){
					
					/*
					 * 弹出提示框:正确  跳转界面  登录页面消失
					 */
					JOptionPane .showMessageDialog(null, "密码正确","登录提示框",JOptionPane.INFORMATION_MESSAGE);
					StudentJPanel sp=new StudentJPanel();
					window.dispose();//关闭窗口!
					
				}else{
					//密码不正确  弹出提示框:错误  登录页面文本框内容消失
					JOptionPane .showMessageDialog(null, "密码错误,请重新登录","登录提示框",JOptionPane.INFORMATION_MESSAGE);
					user.setText(null);
					pwd.setText(null);//设置内容为空
					
				}
				
			}
		});
	}
	
	
}

运行结果:

2.学生信息管理系统

package Student;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
import java.util.concurrent.ConcurrentHashMap;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.Border;
import javax.swing.text.AbstractDocument.Content;

/*
 * 实现学生信息管理系统的主要功能
 * 增加  撤销  查询
 */
public class StudentJPanel {
	//声明所需变量
	public JFrame student;//主面板
	//三个界面--一个是标题、一个负责查询,一个负责增加
	private JPanel p1,p2,title;
	//头部标题:
	private JTabbedPane tab;
	//容器:用来存储两个界面--并且规范界面
	private Container container;
	//添加按钮、撤销增加按钮:
	private JButton b1,b2;
	//姓名、成绩的标签
	private JLabel nameLabel,gradeLabel;
	//姓名和成绩的文本框
	private JTextField textName,textGrade;
	//不可变的文本框--用来显示学生信息内容
	private JTextArea showGrade;
	
	/*
	 * 查找面板中的变量
	 */
	//查找的标签
	private Label searchLabel;
	//确认查找的按钮
	private JButton sBut;
	//两个文本框(一个为查找信息的文本框,一个为
	private JTextField searchText,resultText;
	
	//按钮监听类
	Listener l;
	//声明数组用来存储学号和成绩
	int[] id;
	int[] grade;
	//设置下标--下标必须是灵活的,进行赋值时才不会重复
	int index;
	//设置布尔类型判断是否有重复学生
	boolean[] bl;
	
	
	//构造器初始化
	public StudentJPanel(){
		l=new Listener();//初始化***
		id=new int[100];
		grade=new int[100];
		bl=new boolean[100]; 
		index=0;
		//面板初始化:
		student=new JFrame("学生信息管理系统");
		//设置标题
		tab=new JTabbedPane(JTabbedPane.TOP);
		//容器:设置在student面板上
		container=student.getContentPane();
		//初始化3个(添加、查询)面板:
		p1=new JPanel();
		p2=new JPanel();
		title=new JPanel();
		//初始化两个标签(姓名、成绩)
		nameLabel=new JLabel("学号");
		gradeLabel=new JLabel("成绩");
		//初始化两个文本框:
		textGrade=new JTextField(15);
		textName=new JTextField(15);
		//两个按钮(确认添加以及撤销添加)
		b1=new JButton("确认添加");
		b2=new JButton("撤销添加");
		//显示文本框:
		showGrade=new JTextArea(13,35);
		//showGrade.setBounds(10, 500, 500, 200);
		//添加滚动效果:想要给谁添加滚动效果小括号里写谁
		
		
		//设置面板属性
		student.setSize(500, 420);
		student.setLocationRelativeTo(null);//居中显示
		//绝对布局:
		student.setLayout(null);
		//设置窗口不可变:
		student.setResizable(false);
		//设置默认可关闭
		student.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		//设置表头--两个查询以及添加面板:
		//tab.add(对象(面板),"面板上显示的内容")
		tab.add(p1,"成绩输入");
		tab.add(p2,"成绩查询");
		title.add(new JLabel("学生信息管理系统"));
		
		//添加到容器中
		//容器.add(对象,位置)
		container.setLayout(new BorderLayout());//设置容器的位置
		container.add(title,BorderLayout.NORTH);//顶部
		container.add(tab,BorderLayout.CENTER);//中部
		
		//声明一个容器:用来存储姓名、成绩的文本框以及标题
		Container c1=new Container();
		//设置容器的位置:浮动--一般向左浮动
		c1.setLayout(new FlowLayout());
		//将姓名、成绩的文本框以及标签加到容器中
		c1.add(nameLabel);
		c1.add(textName);
		c1.add(gradeLabel);
		c1.add(textGrade);
		//容器添加到增加的面板中
		p1.add(c1,BorderLayout.WEST);//p1容器在面板中的位置
		p1.add(c1);	
		p1.add(showGrade);
		JScrollPane jp=new JScrollPane(showGrade);
		p1.add(jp);
		
		//按钮添加:
		Container c2=new Container();
		c2.setLayout(new FlowLayout());
		c2.add(b1);
		c2.add(b2);
		p1.add(c2);
		
		//给按钮添加监听事件:
		b1.addActionListener(l);
		b2.addActionListener(l);
		
		/*
		 * 初始化查询面板中的所需对象:
		 */
		searchLabel=new Label("请输入您查找的学号");
		sBut=new JButton("确认查询");
		searchText=new JTextField(15);
		resultText=new JTextField(15);
		//查询面板布局
		Container c3=new Container();
		c3.setLayout(new FlowLayout());
		c3.add(searchLabel);
		c3.add(searchText);
		c3.add(sBut);
		p2.add(c3,BorderLayout.AFTER_LAST_LINE);
		p2.add(resultText);
		sBut.addActionListener(l);
		
		
		student.setVisible(true);
		
	}
	
	//监听事件(Java内部类):实现监听接口
	class Listener implements ActionListener{
		//被点击时/被按下时调用:
		@Override
		public void actionPerformed(ActionEvent e) {
			// ActionEvent e--指代的是按下的那个按钮
			//e.getSource():获取按下的按钮
			if(e.getSource()==b1){
				System.out.println("确认添加");
				/*
				 * 1.获取文本框内容--显示内容的文本框
				 * 两个数组--名-成绩   下标
				 * 2.添加完成后,文本框内容消失
				 */
				if(!(textName.getText().equals("")) && !(textGrade.getText().equals(""))){
					String str=textName.getText();
					id[index]=Integer.parseInt(str);
					String str1=textGrade.getText();
					grade[index]=Integer.parseInt(str1);
					
					if(bl[id[index]]==true){
						
						/*
						 * 弹出提示框:学生重复  跳转界面 
						 */
						JOptionPane .showMessageDialog(null, "学生已存在","输入学生学号提示框",JOptionPane.INFORMATION_MESSAGE);
						textName.setText(null);//清空学号文本框
						textGrade.setText(null);//清空成绩文本框
					}else{
						index++;
						sortMess();
					}
					
				}
				textName.setText("");
				textGrade.setText("");
				
			}
			if(e.getSource()==b2){
				System.out.println("撤销添加");
				if(index>0){//撤销--减小坐标
					index--;
					sortMess();
				}
			}
			if(e.getSource()==sBut){
				System.out.println("确定查询");
				if(!(searchText.getText().equals(""))){
					//不为空就进行查询
//					System.out.println(Arrays.toString(bl));
					if(bl[Integer.parseInt(searchText.getText())]==false){
						//如果学生不存在
						JOptionPane .showMessageDialog(null, "学生不存在","输入学生学号提示框",JOptionPane.INFORMATION_MESSAGE);
						searchText.setText(null);//清空查询文本框
						resultText.setText(null);//清空结果文本框
					}else{
							for (int i = 0; i < index; i++) {
							if(id[i]==Integer.parseInt(searchText.getText())){
								//如果名字数组中内容与文本框内容相等,则将内容输出到查询文本框中
								resultText.setText("学号:"+id[i]+",成绩:"+grade[i]);
								return;//如果查到直接停止程序!
							}
						}
					}
					
				}
			}
			
		}
		
		//创建一个方法用于将数组内容添加到显示文本框中
		public void sortMess(){
			if(!(showGrade.getText().equals(""))){
				//如果文本框内有内容将内容清空
				showGrade.setText("");
			}
			
			//index有多大,就说明有几个值
				for (int i = 0; i < index; i++) {
					bl[id[i]]=true;
					String str="学号:"+id[i]+"\t"+"成绩"+grade[i];
					//将获取到的两个数组中的内容发送到文本框中
					showGrade.append(str+"\n");
				}
			
		}
		
		
		
	}
	
	
	
	
	public static void main(String[] args) {
		new StudentJPanel();

	}

}

运行结果:

全部评论

相关推荐

hso_:哈哈哈哈哈哈我没offer一样在同一道题开喷了
投递深圳同为数码等公司10个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务