theme: condensed-night-purple highlight: a11y-dark
Это 18-й день моего участия в ноябрьском испытании обновлений. Узнайте подробности события:Вызов последнего обновления 2021 г."
Предисловие:
Этот проект разработан с использованием Java Swing, который может реализовать вход/регистрацию/сброс системы управления складом, управление системой, управление сырьем, управление готовой продукцией, управленческие записи и выход из системы после входа в систему. Дизайн интерфейса относительно краток, подходит для использования в качестве разработки курса Java для начинающих и технологии обучения.
Резюме:
В настоящее время многие предприятия имеют проблемы: недостаточная информатизация, низкая загрузка компьютеров, большое количество повседневных задач выполняется вручную, поэтому такие проблемы, как низкая эффективность работы и плохая внутренняя коммуникация, трудно преодолеть. Для повышения конкурентоспособности предприятий необходима внутренняя информатизация предприятий. Поэтому необходимо внедрить передовую систему автоматизации и реализовать управление, совместное использование и передачу информации внутри предприятия, чтобы позволить предприятию занять лидирующие позиции в условиях жесткой конкуренции 21 века. Система управления складом — это планирование и контроль потока товаров и информации, а также денег. Он образует единое целое складского хозяйства, складского хозяйства и инвентаря, так что предприятие находится в состоянии полного контроля, уменьшая масштаб инвестиций и ускоряя оборачиваемость капитала. На основе отражения в режиме реального времени корректирует отклонения предприятия во всех аспектах ежедневного производственного и операционного процесса, снижает себестоимость готовой продукции и отставание товаров. Этот дизайн представляет собой базовую систему управления складом, а функция программы относительно проста и близка к реальности. Система эффективно управляет общими деловыми операциями, такими как отсутствие и наличие запасов и управление запасами на предприятии, а также базовой информацией, такой как связанные поставщики. Поэтому он имеет универсальное применение и может удовлетворить потребности складов предприятия. Эта система использует программное обеспечение для управления базой данных My SQL и MySQL в качестве платформы разработки системы, а также использует графический язык программирования JavaSwing для разработки программ.
Основные модули:
Вход пользователя, регистрация, сброс
Управление сырьем: «вход сырья, возврат сырья, инвентаризация сырья, выставление счетов за производство, возврат производства, производственные отходы»
Управление готовой продукцией: «ввод готовой продукции, инвентаризация готовой продукции, возврат готовой продукции, ремонт готовой продукции, возврат готовой продукции»
Управление записями: «оперативные записи, записи об отходах, записи об отгрузке, записи о сырье, записи о готовой продукции»
Справочный центр: «Помощь, О программе, Выход из системы»
Функциональный скриншот:
Авторизоваться
Функция домашней страницы системы
Управление системой:
Войдите на страницу управления системой, вы можете регистрировать новых пользователей, удалять пользователей, а также упорядочивать и просматривать данные.
Управление сырьем:
Управление сырьем: включая ввод сырья, возврат сырья, инвентаризацию сырья, выставление счетов за производство, возврат производства, ввод и просмотр производственных отходов и других данных и т. д.
Управление готовой продукцией:
Управление готовой продукцией: включая ввод готовой продукции, инвентаризацию готовой продукции, возврат готовой продукции, ремонт готовой продукции, ввод данных о возврате готовой продукции и операции просмотра и т. д.
Управление записью:
Управление записями: включая записи операций, записи об отходах, записи об отгрузке, записи о сырье и записи о готовой продукции, операции просмотра данных.
разное:
Некоторые ключевые коды:
Регистрация входа пользователя:
public class Logo implements ActionListener{
public static final String logoon = "登录";
public static final String helpt = "帮助";
public static final String logooff ="退出";
public static final String user = "用 户:";
public static final String password = "密 码:";
private javax.swing.JTextField userText;
private javax.swing.JPasswordField userpwd;
private javax.swing.JPanel jp = new javax.swing.JPanel(){
public void paintComponent(Graphics g){
super.paintComponent(g);
if(!isOpaque()){return;}
Graphics2D g2d = (Graphics2D) g;
//int rule = AlphaComposite.SRC_OVER;
AlphaComposite opaque = AlphaComposite.SrcOver;
//AlphaComposite blend = AlphaComposite.getInstance(rule, 0.6f);
//AlphaComposite set = AlphaComposite.Src;
int width = getWidth();
int height = getHeight();
GradientPaint gradientPaint = new GradientPaint(0,0,java.awt.Color.green,width/2,height/2,java.awt.Color.yellow,false);
g2d.setComposite(opaque);
g2d.setPaint(gradientPaint);
g2d.fillRect(0, 0, width,height);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_OFF);
}
};
private javax.swing.JButton logoin = null;
private JFrame logo_Frame = new JFrame(logoon);
/*public Logo() {
// TODO 自动生成构造函数存根
}
*/
public Logo(){
try{
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
}catch(Exception exe){System.err.print(exe.getMessage());}
JFrame.setDefaultLookAndFeelDecorated(true);
Toolkit tools = logo_Frame.getToolkit();
Image logo = tools.getImage("res/logo.jpg");
logo_Frame = new JFrame(logoon);
logo_Frame.setIconImage(logo);
jp.setLayout(new GridBagLayout());
jp.setBackground(java.awt.Color.pink);
javax.swing.ImageIcon pic = new javax.swing.ImageIcon("res/logo1.jpg");
javax.swing.JLabel picture = new javax.swing.JLabel(pic);
setupComponent(picture,0,0,GridBagConstraints.ABOVE_BASELINE_LEADING,1,true);
javax.swing.JLabel users = new javax.swing.JLabel(user);
setupComponent(users,0,1,1,1,false);
javax.swing.JLabel pas = new javax.swing.JLabel(password);
setupComponent(pas,0,2,1,1,false);
userText = new javax.swing.JTextField(12);
userText.requestFocus();
userText.addKeyListener(new KeyListener(){
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){}
public void keyPressed(KeyEvent e){
if((e.getKeyChar() == KeyEvent.VK_ENTER )&&(userText.getText().trim() != "")){
userpwd.requestFocus();
}
}
});
setupComponent(userText,1,1,1,1,false);
userpwd = new javax.swing.JPasswordField(12);
userpwd.addKeyListener(new KeyListener(){
public void keyTyped(KeyEvent e){}
public void keyPressed(KeyEvent e){
if((e.getKeyChar() == KeyEvent.VK_ENTER) && (userpwd.getText().trim() != "")){
logoin.requestFocus();
}
else{
userpwd.requestFocus();
}
}
public void keyReleased(KeyEvent e){
}
});
setupComponent(userpwd,1,2,1,1,false);
logoin = new javax.swing.JButton(logoon);
logoin.addKeyListener(new KeyListener(){
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){}
public void keyPressed(KeyEvent e){
if((e.getKeyChar()==KeyEvent.VK_ENTER )){
if(("".equals(userText.getText().trim())) ){
javax.swing.JOptionPane.showMessageDialog(logo_Frame, "必须输入用户名!","输入用户名",JOptionPane.ERROR_MESSAGE);
userText.requestFocus();
return;
}
if(("".equals(userpwd.getText().trim()))){
javax.swing.JOptionPane.showMessageDialog(logo_Frame, "必须输入密码!","输入密码",JOptionPane.ERROR_MESSAGE);
userpwd.requestFocus();
return;
}
boolean b = USeDB.logoon(userText.getText().trim(), userpwd.getText().trim());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(System.currentTimeMillis());
String day = sdf.format(date);
String s ="'"+day+"','"+userText.getText().trim()+"','"+"登录"+"'";
String sql = "insert into handle_record values("+s+")";
USeDB.UpdateDB(sql);
if(b){
logo_Frame.dispose();
new My_MainFrame(userText.getText().trim());
}
userText.setText("");
userpwd.setText("");
userText.requestFocus();
}
}
});
logoin.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println(userText.getText());
if(("".equals(userText.getText().trim()))){
javax.swing.JOptionPane.showMessageDialog(logo_Frame, "必须输入用户名!","输入用户名",JOptionPane.ERROR_MESSAGE);
userText.requestFocus();
return;
}
if(("".equals(userpwd.getText().trim()))){
javax.swing.JOptionPane.showMessageDialog(logo_Frame, "必须输入密码!","输入密码",JOptionPane.ERROR_MESSAGE);
userpwd.requestFocus();
return;
}
if(userText.getText().trim()!=""&& userpwd.getText().trim()!=""){
boolean b = USeDB.logoon(userText.getText().trim(), userpwd.getText().trim());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(System.currentTimeMillis());
String day = sdf.format(date);
String s ="'"+day+"','"+userText.getText().trim()+"','"+"登录"+"'";
String sql = "insert into handle_record values("+s+")";
USeDB.UpdateDB(sql);
if(b==true){
logo_Frame.dispose();
new My_MainFrame(userText.getText().trim());
}else{
userText.setText("");
userpwd.setText("");
userText.requestFocus();
javax.swing.JOptionPane.showMessageDialog(logo_Frame, "用户名或密码错误","错误提示",JOptionPane.ERROR_MESSAGE);
}
}
}
});
setupComponent(logoin,0,3,1,1,true);
javax.swing.JButton help = new javax.swing.JButton(helpt);
Подключение к БД:
public class DBUtil{
private static String dbUrl="jdbc:mysql://localhost:3307/stock_manager2?characterEncoding=utf8"; // 数据库连接地址
private static String dbUserName="root"; // 用户名,这里是你的mysql用户名,一般是root
private static String dbPassword="crit@2019"; // 密码,mysql密码,密码为空的话不要写,我的是空,所以没写
private static String jdbcName="com.mysql.jdbc.Driver"; // 驱动名称
//private static String driver="sun.jdbc.odbc.JdbcOdbcDriver";//声明驱动类字符串
//声明数据库连接字符串
//private static String url="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=db/mydb.mdb";
private static Connection con=null;//声明数据库连接对象引用
private static Statement stat=null;//声明语句对象引用
private static PreparedStatement psInsert=null;//声明预编译语句对象引用
private static ResultSet rs=null;//声明结果集对象引用
public DBUtil() {
// TODO 自动生成构造函数存根}
public static Connection getConnection(){//得到数据库连接的方法
try{
Class.forName(jdbcName);//加载驱动类
con=DriverManager.getConnection(dbUrl,dbUserName,dbPassword);//得到连接
}
catch(Exception e){e.printStackTrace();}
return con;//返回连接
}
public static void closeCon(){//关闭数据库连接的方法
try{
if(rs!=null){rs.close(); rs=null;}//如果结果集不为空关闭结果集并赋值null
if(stat!=null){stat.close(); stat=null;}//如果语句对象不为空关闭语句对象并赋值null
if(con!=null){con.close(); con=null;}//如果连接不为空关闭连接并赋值null
}
catch(Exception e){e.printStackTrace();}
}
}
Дизайн базы данных:
пользовательская таблица:
CREATE TABLE `NewTable` (
`user_id` int(11) NOT NULL AUTO_INCREMENT ,
`user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`u_text` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,
PRIMARY KEY (`user_id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=5
ROW_FORMAT=DYNAMIC
;
Форма ввода сырья:
CREATE TABLE `NewTable` (
`product_ID` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`product_client` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`product_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`product_spec` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`product_unit` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`product_value` float NULL DEFAULT NULL ,
`product_make` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stock_date` datetime NULL DEFAULT NULL ,
`product_text` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,
PRIMARY KEY (`product_ID`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
ROW_FORMAT=DYNAMIC
;
Лист регистрации отгрузки:
CREATE TABLE `NewTable` (
`scrap_id` int(11) NOT NULL AUTO_INCREMENT ,
`user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`handle_date` datetime NULL DEFAULT NULL ,
`scrap_text` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`scrap_id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=3
ROW_FORMAT=DYNAMIC
;
Информационный лист отходов:
CREATE TABLE `NewTable` (
`stuff_ID` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`stuff_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stuff_company` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stuff_people` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`check_people` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stuff_unit` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stuff_value` int(11) NULL DEFAULT NULL ,
`stuff_spec` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stuff_color` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stuff_place` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stock_date` datetime NULL DEFAULT NULL ,
`stuff_text` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,
PRIMARY KEY (`stuff_ID`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
ROW_FORMAT=DYNAMIC
;
Суммировать:
через этот дизайн курса. Я узнал много вещей, которые мне очень пригодились. Я чувствую, что дизайн интерфейса java похож на интерфейс mfc. Просто у java нет визуального интерфейса и это слишком утомительно. Другие в основном связаны с классами и объектами. Это довольно просто реализовать. Используя базу данных mysql с высокой стабильностью и безопасностью, два программного обеспечения объединяются для завершения проектирования и разработки системы. Он также полностью учитывает потребности пользователей. Оператор может запросить всю информацию в любое время, и каждый модуль предоставляет функцию просмотра информации. Эта система понимает, что пользователи могут выполнять управление системой, управление сырьем, управление готовой продукцией, управленческие записи и другие операции после входа в систему. Поскольку у меня недостаточно знаний и опыта, а время разработки короткое, система будет иметь некоторые дефекты и недостатки. . В будущем будет предпринято больше усилий для улучшения этой системы, но она по-прежнему является хорошим выбором в качестве справочного материала для обучения студентов и разработки курса.
ВсеНравится, Избранное, Следите, КомментируйтеЛа,