Sistema de gestión de la librería:
Objetivos de ejercicio del proyecto:
1. Análisis básico de aplicaciones Java
2. Cultive las ideas básicas de la programación orientada a objetos
3. Aplicación integral de patrones básicos de diseño de Java
4. Dominar el diseño básico de capas e interfaces
5. Cree una estructura de paquete de aplicación Java razonable
6. Conocimiento aprendido por la aplicación integral de JSE
7. Use el marco de recopilación racionalmente en la aplicación
8. Uso integral de componentes comunes de swing en aplicaciones
9. Mecanismo de implementación de la capa de rendimiento básica
10. Operaciones básicas de transmisiones y archivos IO
11. Desarrolle buenos hábitos de programación de Java
12. Cultive la capacidad de depurar programas de Java y cultivar la capacidad de corregir errores
Requisitos funcionales del proyecto:
1. Puede operar el registro del usuario, modificar información básica, eliminar y consultar.
2. Puede agregar, eliminar, modificar y consultar la información básica del libro.
3. Puede completar el formulario de compra. Un formulario de compra contiene múltiples información de compra específica. Los libros comprados ya deben estar disponibles en la gestión del libro; Mientras compra, modifica el volumen de inventario de los libros correspondientes en el inventario.
4. Puede completar el formulario de ventas. Un formulario de ventas contiene múltiples información de ventas específica. Los libros vendidos ya deben estar en la gestión del libro, y la cantidad de ventas no puede exceder la cantidad actual de inventario; Mientras vende, modifique el volumen de inventario de los libros correspondientes en el inventario.
5. Puede ver los detalles del inventario y encontrar el valor de inventario de libros específicos de acuerdo con las condiciones.
6. Simplifique los permisos e implementa el control de permiso fijo. El usuario se divide en personal con diferentes permisos de operación de acuerdo con el módulo, y un usuario administrativo especial puede operar todas las funciones.
Diseño básico del proyecto:
★ Marco general del diseño de arquitectura, División de módulos: 5 módulos: usuario, libro, compra, ventas e inventario
★ Sistema de estructura funcional Diseño de submódulos funcionales específicos de cada módulo funcional
★ Implementación del marco del proyecto de diseño de bases de datos: módulo, capa, subcontrato y compilación de aplicaciones
1. Gestión de usuarios (user.txt)
Nota: El tipo es Tipo int, que se utiliza para representar el tipo de operador.
1 - denotado como administrador, todas las operaciones se pueden realizar
2-Denotado como una persona que puede operar el módulo de libro
3 - Expresado como una persona que puede operar el módulo de compra
4 - expresado como una persona que puede operar módulos de ventas
5 - Expresado como una persona que puede operar módulos de inventario
2. Gestión de libros (book.txt)
3. Gestión de compras (inmain.txt)
4. Gestión de detalles de compra (indetail.txt)
5. Gestión de ventas (outMain.txt)
6. Gestión de detalles de ventas (superar.txt)
7. Gestión de inventario (stock.txt)
Subcontrato del proyecto
La primera capa: módulo de usuario (usuario) según el módulo
Libros (libros),
Comprar (in),
Ventas (fuera),
Inventario (tienda)
La segunda capa: según el modo de tres capas, se divide en la capa de presentación (UI), la capa lógica (negocio) y la capa de datos (DAO)
Por lo general, se necesita agregar una capa de objeto de valor (VO)
La tercera capa: depende de la situación específica de acuerdo con la división dentro de la capa. Por ejemplo, los subackages deben construirse en forma de triángulo de hierro, mientras que la interfaz de usuario y VO no necesitan dividirse en los subackages).
Ideas de estratificación del proyecto:
No perfeccionado, continúe prestando atención a esta serie (ii)
Lo siguiente es parte del código: (una clase pública en Util)
cn.hncu.bookstore.util
Fileioutil.java:
paquete cn.hncu.bookstore.util; import java.io.file; import java.io.fileInputStream; import java.io.filenotfoundexception; import java.io.fileOutputStream; import java.io.ioexception; import java.io.ObjectInStream; import java.io.ObjectEn java.util.arrayList; import java.util.list; import javax.swing.JOptionPane;/*** Los datos públicos del usuario leen y escriben clase* @author chen haoxiang** @version 1.0*/public class fileioutil {public fileioutil () {}/*** Lea todos los datos de la base y regreso* @@param fileutil (nombre de archivo (nombre de archivo (name correspondiente (nombre de los datos (nombre de los datos (nombre de datos (nombre de datos () Table) * @param ee (¡tipo de genérico pasado!) * @return registros de todas las tablas! */@Suppleswarnings ("sin verificar") // Presione Advertencia Public Static <E> List <E> ReadFormFile (String FileName, E Ee) {List <E> List = New ArrayList <E> (); archivo final archivo = nuevo archivo (nombre de archivo); ObjectInputStream in = null; if (! file.exists ()) {joptionPane.showMessEdialog (nulo, "¡La tabla de datos no existe!"); lista de devolución; } try {in = new ObjectInputStream (new FileInputStream (FileName)); intente {list = (list <E>) in.readObject (); } catch (ClassNotFoundException e) {E.PrintStackTrace (); }} Catch (FileNotFoundException e) {E.PrintStackTrace (); } catch (ioException e) {E.PrintStackTrace (); } finalmente {if (in! = null) {try {in.close (); } Catch (ioException e) {lanzar nueva runtimeException ("fallado de la base de datos cierres"); }}} Lista de retorno; } / ** * Escriba una recopilación de lista en el nombre de archivo del archivo de datos * * @param List (la recopilación de datos que debe almacenarse) * @param filename (el nombre del archivo al que está escrito el archivo) * / public static void write2File (list <bect> list, list, string fileutputStream out = null; prueba {out = new ObjectOutputStream (new FileOutputStream (FileName)); out.writeObject (lista); } catch (FileNotFoundException e) {E.PrintStackTrace (); } catch (ioException e) {E.PrintStackTrace (); } finalmente {if (out! = null) {try {out.close (); } Catch (ioException e) {Throw New RuntimeException ("¡Falló en la base de datos!"); }}}}}}}}}Datos de usuario encapsulados:
cn.hncu.bookstore.user.vo;
Usermodel.java
paquete cn.hncu.bookstore.user.vo;/** * @author chen haoxiang * @version 1.0 * * <br/> * Objetivo de valor utilizado para guardar información del usuario <br/> * 1. Serialize <br/> * 2. Privatizar todos los miembros variables y el método de configuración de Supplement <br/> * 3. ESCRIBIR EL MEDICINO Y HAHCODE ---- Use el método de privatización de los miembros de la configuración variable) Código <br/> * 4. Método de tostración <br/> * 5. Método de construcción de parámetros vacíos <br/> */public class Usermodel {private String uuid; // User User Unique Identification Code Name de cadena privada; // Nombre de usuario Inter Tipo; // Tipo de usuario Private String Pwd; // User Public Usermodel () {}/** * Función: Get UUID-User Identificación única de Identificación String Pwd; Código de identificación único*/ public String getuuid () {return uuid; } / *** Función: Establecer el código de identificación único de UUID-USER* @param UUID-USER Código de identificación único Tipo de cuerda Parámetro* / public void setuuid (string uuid) {this.uUid = uuid; } / *** Función: Obtenga el nombre de usuario del usuario* @return-name-user nombre* / public string getName () {return name; } / *** Función: Obtenga el nombre de usuario del usuario* @return-name-user nombre* / public string getName () {return name; } / *** Función: Establezca el nombre de usuario** @Param Nombre-Nombre de usuario Conjunto por el usuario, Tipo de cadena Tipo de parámetro* / public void setName (name de cadena) {this.name = name; } / *** Función: Obtenga el tipo de usuario:* 1 - representa el administrador, y todas las operaciones se pueden realizar* 2 - Representa a la persona que puede operar el módulo de libro* 3 - Representa a la persona que puede operar el módulo de compra* 4 10 representa a la persona que puede operar el módulo de ventas* 5 - Representa a la persona que puede operar el módulo de inventario* @@return type* / público int gettype () } / *** Función: Establezca el tipo de usuario:* 1– representa a la persona que puede operar el módulo de libro* 2-representa a la persona que puede operar el módulo de libro* 3-Divendido como una persona que puede operar el módulo de compra* 4- Divendido como una persona que puede operar el tipo de módulo de ventas* 5-5-Público como una persona que puede operar el módulo de inventario de inventario* @param settype (int type) {this.type = type; } / ***Función: Obtenga la contraseña del usuario*@return String Type, contraseña del usuario* / public String getpwd () {return pwd; } / ***Función: Establezca la contraseña del usuario*@param pwd-parámetro de tipo de cuerda* / public void setpwd (string pwd) {this.pwd = pwd; } @Override public int hashcode () {final int prime = 31; int resultado = 1; resultado = prime * resultado + ((uuid == null)? 0: uuid.hashcode ()); resultado de retorno; } @Override public boolean iguales (objeto obj) {if (this == obj) return true; if (obj == null) return false; if (getClass ()! = obj.getClass ()) return false; Usermodel otro = (usermodel) obj; if (uuid == null) {if (other.uuid! = null) return false; } else if (! uuid.equals (other.uuid)) return false; devolver verdadero; } @Override public string toString () {return "usermodel [uuid =" + uuid + ", name =" + name + ", type =" + type + ", pwd =" + pwd + "]"; }} Datos de consulta de usuario encapsulado:
cn.hncu.bookstore.user.vo;
UserQueryModel.java
paquete cn.hncu.bookstore.user.vo; pública clase userQueryModel extiende usermodel {}Aunque esta clase no tiene nada, solo hereda el USERMODEL, todavía tiene que ser escrito. ¡Esta es la especificación de escritura de Java que todos cumplen!
User DAO (capa de datos): (interfaz)
cn.hncu.bookstore.user.dao.dao;
Userdao.java
paquete cn.hncu.bookstore.user.dao.dao; import java.util.list; import cn.hncu.bookstore.user.vo.usermodel; import cn.hncu.bookstore.user.vo.userQueryModel;/ * * * * @author haox * * * @version 1.0 * data module de usador de modulina de los datos del usuario de interfaz userDao { / *** Función: Crear un usuario** @param usermodel --- datos de usuario para ser creados* @return-tree significa creación exitosa, falsa medios fallido* / public boolean create (userModel user); / *** Función: Eliminar un usuario*** @param uuid --- Código de identificación único del usuario, cada usuario no será el mismo* @return --- Verdadero significa que la eliminación es exitosa, falsa significa que la eliminación falló*/ public boolean Delete (string uuid); / *** Función: modificar los datos del usuario** @Param User --- Nombre del parámetro de datos del usuario que debe modificarse* @return return true: indica que la modificación es exitosa, devuelve falso indica que la modificación ha fallado*/ Update public boolean (usuario usermodel); / *** Función: Obtenga todos los datos del usuario** @return --- una recopilación de usermodel, es decir, los datos del usuario*/ lista pública <sermodel> getAll (); /** * Función: Búsqueda de acuerdo con ciertas condiciones de búsqueda, * <br/> * Devuelve los datos del usuario que cumplen con las condiciones de búsqueda. ** @param uqm --- Condiciones de búsqueda encapsuladas* @return ---- Conjunto de datos de usuario que cumple con las condiciones de búsqueda*/ Lista pública <Sermodel> GetByCondition (UserQueryModel uqm); / *** Función: Obtenga ciertos datos de usuario** @param uuid --- Código de identificación único del usuario* @return --- Devuelve los datos del usuario encontrados de acuerdo con este código de identificación único*/ public usermodel getSingle (string uuid);}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.