Système de gestion de la librairie:
Objectifs de l'exercice du projet:
1. Analyse de base des applications Java
2. Cultivez les idées de base de la programmation orientée objet
3. Application complète des modèles de conception Java de base
4. Maître la conception de base de la superposition et des interfaces
5. Construisez une structure de package d'application Java raisonnable
6. Connaissances apprises par une application complète de JSE
7. Utiliser le cadre de collecte rationnellement dans l'application
8. Utilisation complète des composants communs du swing dans les applications
9. Mécanisme de mise en œuvre de la couche de performance de base
10. Opérations de base des flux et fichiers IO
11. Développer de bonnes habitudes de programmation Java
12. Cultiver la capacité de déboguer les programmes Java et de cultiver la capacité de corriger les erreurs
Exigences fonctionnelles du projet:
1. Peut exploiter l'enregistrement des utilisateurs, modifier les informations de base, supprimer et interroger.
2. Peut ajouter, supprimer, modifier et interroger les informations de base du livre.
3. Vous pouvez remplir le formulaire d'achat. Un formulaire d'achat contient plusieurs informations d'achat spécifiques. Les livres achetés doivent être déjà disponibles dans la gestion du livre; Lors de l'achat, modifiant le volume d'inventaire des livres correspondants dans l'inventaire.
4. Vous pouvez remplir le formulaire de vente. Un formulaire de vente contient plusieurs informations de vente spécifiques. Les livres vendus doivent déjà être dans la gestion du livre et la quantité de vente ne peut pas dépasser la quantité d'inventaire actuelle; Pendant la vente, modifiez le volume des stocks des livres correspondants dans l'inventaire.
5. Vous pouvez afficher les détails des stocks et trouver la valeur de l'inventaire de livres spécifiques en fonction des conditions.
6. Simplifiez les autorisations et implémentez le contrôle fixe d'autorisation. L'utilisateur est divisé en personnel avec différentes autorisations de fonctionnement en fonction du module, et un utilisateur d'administration spécial peut faire fonctionner toutes les fonctions.
Conception de projet de base:
★ Cadre global de la conception de l'architecture, Division des modules: 5 modules: utilisateur, livre, achat, vente et inventaire
★ Conception de structure fonctionnelle du système Subdules fonctionnels spécifiques de chaque module fonctionnel
★ Implémentation du cadre du projet de conception de la base de données: module, couche, sous-traitance et applications de construction
1. Gestion des utilisateurs (user.txt)
Remarque: Le type est le type int, qui est utilisé pour représenter le type de l'opérateur.
1 - indiqué comme administrateur, toutes les opérations peuvent être effectuées
2 - Dénové en tant que personne qui peut exploiter le module du livre
3 - Exprimé en tant que personne qui peut exploiter le module d'achat
4 - exprimé en tant que personne qui peut exploiter des modules de vente
5 - exprimé en tant que personne qui peut exploiter des modules d'inventaire
2. Management du livre (book.txt)
3. Gestion des achats (inmain.txt)
4. Gestion des détails d'achat (intetail.txt)
5. Gestion des ventes (outmain.txt)
6. Gestion des détails des ventes (Outdetail.txt)
7. Gestion des stocks (Stock.txt)
Sous-traitance du projet
La première couche: module utilisateur (utilisateur) selon le module
Livres (livres),
Acheter (in),
Ventes (Out),
Inventaire (magasin)
La deuxième couche: Selon le mode à trois couches, il est divisé en couche de présentation (UI), couche logique (entreprise) et couche de données (DAO)
Habituellement, une couche d'objet de valeur (VO) doit être ajoutée
La troisième couche: dépendent de la situation spécifique en fonction de la division dans la couche. Par exemple, les sous-packages doivent être construits sous la forme d'un triangle de fer, tandis que l'interface utilisateur et le VO n'ont pas besoin d'être divisés en sous-packages).
Idées de stratification du projet:
Non perfectionné, veuillez continuer à prêter attention à cette série (II)
Ce qui suit fait partie du code: (une classe publique dans util)
cn.hncu.bookstore.util
Fileioutil.java:
package cn.hncu.bookstore.util; import java.io.file; import java.io.fileInputStream; import java.io.filenotfoundException; import java.io.fileoutputstream; import java.io.ioexception; java.util.ArrayList;import java.util.List;import javax.swing.JOptionPane;/** * User public data read and write class* @author Chen Haoxiang* * @version 1.0 */public class FileIoUtil { public FileIoUtil() { } /** * Read all data from the database and return it* * @param fileName(file name corresponding to the data table) * @param ee (type du générique passé!) * Records @return de toutes les tables! * / @SuppressWarnings ("Unchecked") // Appuyez sur l'avertissement public static <e> list <e> readFormFile (String filename, e ee) {list <e> list = new ArrayList <e> (); fichier file final = nouveau fichier (nom de fichier); ObjectInputStream dans = null; if (! file.exists ()) {joptionpane.showMessageAdIalog (null, "Le tableau de données n'existe pas!"); Liste de retour; } try {in = new ObjectInputStream (new FileInputStream (filename)); try {list = (list <e>) in.readObject (); } catch (classNotFoundException e) {e.printStackTrace (); }} catch (filenotFoundException e) {e.printStackTrace (); } catch (ioException e) {e.printStackTrace (); } enfin {if (in! = null) {try {in.close (); } catch (ioException e) {throw new RuntimeException ("Database close a échoué"); }}} liste de retour; } / ** * Écrivez une collection de liste dans le nom de fichier de fichiers de données * * @param liste (la collecte de données qui doit être stockée) * @param nom de fichier (le nom de fichier auquel le fichier est écrit) * / public static void write2file (list <object> list, String FileName) {ObjectOutputStream out = null; try {out = new ObjectOutputStream (new FileOutputStream (nom de fichier)); out.writeObject (list); } catch (filenotFoundException e) {e.printStackTrace (); } catch (ioException e) {e.printStackTrace (); } enfin {if (out! = null) {try {out.close (); } catch (ioException e) {lancer un nouveau RuntimeException ("la base de données Close a échoué!"); }}}}}}}}}Données utilisateur encapsulées:
cn.hncu.bookstore.user.vo;
UserModel.java
Package cn.hncu.bookstore.user.vo; / ** * @author Chen haoxiang * @version 1.0 * * <br/> * Objet de valeur utilisé pour enregistrer les informations utilisateur <br/> * 1. Serialize <br/> * 2. Privatiser toutes les membres variables et compléter la méthode du setter-ut Code <br/> * 4. Méthode de toString <br/> * 5. Méthode de construction des paramètres vide <br/> * / classe publique UserModel {chaîne privée uUid; // Utilisateur Code d'identification unique Nom de chaîne privée; // Nom d'utilisateur Int Type; // Type d'utilisateur Private String Pwd; // Mot de passe utilisateur public Unermodel () {} / ** * Fonction: GET UUID-UUD Code d'identification unique * / public String getUUID () {return uuid; } / ** * Fonction: SET UUID-USER Code d'identification unique * @param UUID-USER Unique Identification Code-String Type Paramètre * / public void setuuid (String UUID) {this.uUid = uuid; } / ** * Fonction: Obtenez le nom d'utilisateur de l'utilisateur * @ return - nom-user nom * / public String getName () {Nom de retour; } / ** * Fonction: Obtenez le nom d'utilisateur de l'utilisateur * @ return - nom-user nom * / public String getName () {Nom de retour; } / ** * Fonction: Définissez le nom d'utilisateur * * @param nom - nom d'utilisateur défini par l'utilisateur, paramètre de type de chaîne * / public void setName (String Name) {this.name = name; } / ** * Fonction: Obtenez le type d'utilisateur: * 1 (Représente l'administrateur, et toutes les opérations peuvent être effectuées * 2 (représente la personne qui peut exploiter le module de livre * 3 (représente la personne qui peut exploiter le module d'achat * 4 (représente la personne qui peut exploiter le module de vente * 5 (représente la personne qui peut exploiter le type d'inventaire * @return utilisateur type * / public int GetType () {Table de la module * @return Type * / public int GetType () {Retour Type * } / ** * Fonction: Définissez le type d'utilisateur: * 1 (représente la personne qui peut exploiter le module de livre * 2 (représente la personne qui peut exploiter le module de livre * 3 `` rendu en tant que personne qui peut exploiter le module d'achat * 4 `` rendu en tant que personne qui peut exploiter le module de vente * 5 `` renotant comme une personne qui peut exploiter le module d'inventaire * @Param Type - Type de Type de Tableau * setType (int type) {this.type = type; } / ** * Fonction: Obtenez le mot de passe de l'utilisateur * @return String Type, User Motword * / public String getpwd () {return pwd; } / ** * Fonction: Définissez le mot de passe de l'utilisateur * @param pwd - Paramètre de type de chaîne * / public void setpwd (String pwd) {this.pwd = pwd; } @Override public int hashcode () {final int prime = 31; Int résultat = 1; result = prime * result + ((uuid == null)? 0: uUid.hashcode ()); Résultat de retour; } @Override public boolean equals (objet obj) {if (this == obj) return true; if (obj == null) return false; if (getClass ()! = obj.getClass ()) return false; Userodel Autre = (UserModel) obj; if (uUid == null) {if (autre.uuid! = null) return false; } else if (! uuid.equals (autre.uuid)) renvoie false; Retour Vrai; } @Override public String toString () {return "userModel [uuid =" + uuid + ", name =" + name + ", type =" + type + ", pwd =" + pwd + "]"; }} Données de requête utilisateur encapsulées:
cn.hncu.bookstore.user.vo;
UserQueryModel.java
package cn.hncu.bookstore.user.vo; classe publique UserQueryModel étend UserModel {}Bien que cette classe n'ait rien, elle hérite simplement de l'Userodel, elle doit encore être écrite. Ceci est la spécification d'écriture Java que tout le monde demeure!
Utilisateur DAO (couche de données): (interface)
cn.hncu.bookstore.user.dao.dao;
Userdao.java
Package cn.hncu.bookstore.user.dao.dao; Importer java.util.list; import Cn.hncu.bookstore.user.vo.usermerymodel; / * * * * @author Chen Haoxiang * * @version 1.0 * Probore de la couche utilisateur de Chen Haoxiang * * @version 1,0 * Interface UserDao {/ ** * Fonction: Créez un utilisateur * * @param UserModel --- Données utilisateur à créer * @ return - true signifie la création réussie, FAUX signifie la création échouée * / public boolean create (UserModel User); / ** * Fonction: Supprimer un utilisateur * * @param UUID --- Code d'identification unique de l'utilisateur, chaque utilisateur ne sera pas le même * @return --- true signifie que la suppression est réussie, faux signifie que la suppression a échoué * / public boolean delete (String UUID); / ** * Fonction: modifier les données utilisateur * * @param utilisateur --- le nom du paramètre de données utilisateur qui doit être modifié * @return return true- indique que la modification est réussie, return false- indique que la modification a échoué * / public boolean update (userodel user); / ** * Fonction: obtenez toutes les données de l'utilisateur * * @return --- Une collection UserModel, c'est-à-dire les données de l'utilisateur * / public List <SerModel> getall (); / ** * Fonction: Recherchez en fonction de certaines conditions de recherche, * <br/> * Renvoyez des données utilisateur qui remplissent les conditions de recherche. * * @param uqm --- Conditions de recherche encapsulées * @return ---- L'ensemble de données utilisateur qui remplit les conditions de recherche * / public List <SerModel> GetByCondition (UserQueryModel UQM); / ** * Fonction: Obtenez certaines données utilisateur * * @param uUID --- Utilisateur Unique Code d'identification * @return --- Renvoie les données utilisateur trouvées en fonction de ce code d'identification unique * / public UserModel getingled (String UUID);}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.