2013-12-08 33 views
1

我有一個程序要求數據文件具有顯示所有員工,個別員工,插入員工和刪除員工的部分。如何從數據文件或文本文件中刪除一行?

以下是完整的代碼,但我不知道該怎麼做了刪除部分

import java.io.*; 
import java.util.*; 
import java.util.Scanner; 
import javax.swing.*; 
import java.io.IOException; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 

public class Program6pt2 
{  

    static Scanner scan = new Scanner (System.in); 
    static String str, FName, LName, SS, SS1, Name; 
    static double pay, hours; 
    static double rate, gross, overtime, net, NO, fed, state, deduction; 
    static double union=7.85, hospital=25.65; 
    static char ch, ch1; 
    static int num, i; 
    //static Scanner scan= new Scanner(System.in); 
    public static void main(String[] args)throws FileNotFoundException, IOException 
    { 
     Scanner infile= new Scanner(new FileReader("G:\\Program5.txt")); 
     { 
     System.out.println("########################################################"); 
     System.out.println("#  The purpose of the following algorithms   #"); 
     System.out.println("#  are to find the area, surface area, volume,`  #"); 
     System.out.println("# and compound interest of the following programs #"); 
     System.out.println("########################################################"); 

     do { 

      System.out.println("######################################################"); 
      System.out.println("#             #"); 
      System.out.println("#  MENU          #"); 
      System.out.println("#  1. Individual Employees      #"); 
      System.out.println("#  2. All Employees        #"); 
      System.out.println("#  2. Insert          #"); 
      System.out.println("#  2. Quit          #"); 
      System.out.println("######################################################"); 
      System.out.println(); 
      System.out.println(" Please enter 1 or 2 to quit "); 
      num = scan.nextInt();  
      switch (num) 
      { 
       case 1:individual(SS, LName, FName, pay, hours); 
        break; 
       case 2: all(SS, LName, FName, pay, hours); 
        break; 
       case 3: insert(SS, LName, FName, pay, hours); 
        break; 
       case 4: delete(SS, LName, FName, pay, hours); 
        break; 
       default: System.out.println("Thank you so much for using this Program!"); 
      } 

     }while(num != 5);               

     } 
    } 


    public static void individual(String a, String b, String c, double d, double e)throws FileNotFoundException, IOException 
    { 
     Scanner infile= new Scanner(new FileReader("G:\\Program5.txt")); 
     int i=0; 
     System.out.println("---****************************************************************---"); 
     System.out.println("--- THIS MENU ALLOWS THE USER TO SELECT A SS NUMBER OR AN  ****---"); 
     System.out.println("--- INDIVIDUAL'S NAME AND DISPLAY ALL THEIR INFO AS WELL  ****---"); 
     System.out.println("--- DISPLAY ALL THE NAMES IN THE LIST AS WELL AS THEIR SS # IN ***----"); 
     System.out.println("--- A LIST              ****---"); 
     System.out.println("---****************************************************************---"); 
     do 
     { 
     System.out.println("################### #########################"); 
     System.out.println("#   MAIN MENU      #"); 
     System.out.println("#  1. Enter The Social Security Number #"); 
     System.out.println("#  2. Quit        #"); 
     System.out.println("#  3. Main Menu       #"); 
     System.out.println("#           #"); 
     System.out.println("#############################################"); 
     System.out.println(); 
     System.out.println(" Please enter 1,2,3 or 4 "); 
     num = scan.nextInt(); 
     System.out.println(); 


     switch (num) 
     { 
      case 1:SSnumber(a,b,c,d,e); 
       break; 
      case 3: System.out.println("Please enter a number"); 
       break;        
      default: System.out.println("Please select A, B, C, or D to Quit"); 
       break; 
     } 
     }while(num != 3); 
    } 

    public static void SSnumber(String A, String B, String C, double D, double E)throws FileNotFoundException, IOException 
    { 
     Scanner infile = new Scanner(new FileReader("G:\\Program5.txt")); 
     int i=0; 
     System.out.print("Enter the employee number (ex. 111-11-1111) : "); 
     SS1= scan.next(); 
     System.out.println(); 

     System.out.println("-----------------------------------------------------------------------------------------------------------"); 
     System.out.printf("%-4s%10s%13s%8s%10s%14s%12s%13s%10s%n", "NO.", "Last Name", "First Name", "Hours", "Payrate", "Overtime Pay", "Gross Pay", "Deductions", "Net Pay"); 
     System.out.println("-----------------------------------------------------------------------------------------------------------"); 

     while (infile.hasNext()) 
     { 
     A= infile.next(); 
     B= infile.next(); 
     C= infile.next(); 
     D= infile.nextDouble(); 
     E= infile.nextDouble(); 

     ++i; 
     if(A.compareTo(SS1) ==0) 
     { 
      if(E>40) 
      { 
       overtime= 1.5*D*(E-40); 
       gross= overtime+ (D*40); 
      } 
      else 
      { 
       overtime=0; 
       gross= E*D; 
      } 
      fed=gross*0.18; 
      state=gross*0.045; 
      deduction=fed+state+hospital+union; 
      net=gross-deduction; 
      //System.out.println(+i+ B+ C+ E+ D+ overtime+ gross+ deduction+ net); 

      System.out.printf("%-5d%-12s%-12s%6.1f%9.2f%10.2f%15.2f%13.2f%10.2f%n", i, B, C, E, D, overtime, gross, deduction, net); 
     } 
     } 
     infile.close(); 
     System.out.println(); 
     System.out.println(); 
    } 


    public static void all(String a, String b, String c, double d, double e)throws FileNotFoundException, IOException 
    { 

     Scanner infile = new Scanner(new FileReader("G:\\Program5.txt")); 
     int i=0; 


     System.out.println("-----------------------------------------------------------------------------------------------------------"); 
     System.out.printf("%-4s%10s%13s%8s%10s%14s%12s%13s%10s%n", "NO.", "Last Name", "First Name", "Hours", "Payrate", "Overtime Pay", "Gross Pay", "Deductions", "Net Pay"); 
     System.out.println("-----------------------------------------------------------------------------------------------------------"); 

     while (infile.hasNext()) 
     { 
     a= infile.next(); 
     b= infile.next(); 
     c= infile.next(); 
     d= infile.nextDouble(); 
     e= infile.nextDouble(); 

     ++i; 
     if(e>40) 
     { 
      overtime=1.5*d*(e-40); 
      gross= overtime+(d*40); 
     } 
     else 
     { 
      overtime=0; 
      gross=e*d; 
     } 
     fed=gross*0.18; 
     state=gross*0.045; 
     deduction=fed+state+union+hospital; 
     net=gross-deduction; 

     System.out.printf("%-5d%-12s%-12s%6.1f%9.2f%10.2f%15.2f%13.2f%10.2f%n", i, b, c, e, d, overtime, gross, deduction, net); 
     } 
     infile.close(); 
     System.out.println(); 
     System.out.println(); 
    } 



    public static void insert(String a, String b, String c, double d, double e)throws FileNotFoundException 
    { 
     Scanner infile = new Scanner(new FileReader("G:\\Program5.txt")); 
     try 
     { 

     while (infile.hasNext()) 
     { 
      a= infile.next(); 
      b= infile.next(); 
      c= infile.next(); 
      d= infile.nextDouble(); 
      e= infile.nextDouble(); 
     } 
     System.out.print("Enter the ID number (ex.111-22-3333) : "); 
     a=scan.next(); 
     System.out.print("Enter the Last Name (ex. Smith) : "); 
     b=scan.next(); 
     System.out.print("Enter the First Name (ex. John) : "); 
     c=scan.next(); 
     System.out.print("Enter the pay rate (ex 7.00) : "); 
     d=scan.nextDouble(); 
     System.out.print("Enter the hours worked (ex 57.0) : "); 
     e=scan.nextDouble(); 

     FileWriter insert1 = new FileWriter("G:\\Program5.txt", true); 

     insert1.append("\n"); 
     insert1.append(a + " "); 
     insert1.append(b + " "); 
     insert1.append(c + " "); 
     insert1.append(d + " "); 
     insert1.append(e + "\n"); 
     insert1.close(); 
     } 
     catch(Exception o) 
     { 
     System.out.println("Wrong"); 
     } 
     System.out.println(); 
    } 


    public static void delete(String a, String b, String c, double d, double e)throws FileNotFoundException 
    { 
     Scanner infile = new Scanner(new FileReader("G:\\Program5.txt")); 
     try 
     { 
     boolean append=false; 
     Scanner inFile = new Scanner(new FileReader("G:\\Program5.txt")); 
     FileWriter outfile= new FileWriter("G:\\Program5.txt", append); 
     BufferedWriter print = new BufferedWriter(outfile); 


     System.out.println("choose a employee to delete from the system."); 
     System.out.print("Enter the employee Social Security Number: "); 
     SS= scan.next(); 
     { 
      print.write("\n"); 
      print.write(a + " "); 

      print.write("\n"); 
     } 
     print.close(); 
     } 
     catch (IOException ioe) 
     { 
     ioe.printStackTrace(); 
     System.out.println("Wrong"); 
     } 
     System.out.println(); 
    } 
} 
+0

首先您需要定義「刪除」,「行」和「文件」。 (而且,看到你定義程序的面積,表面積,體積和複合興趣也很有趣。) –

+1

(一般來說,你不能從標準磁盤文件的中間刪除一行。可以截斷一個文件從最後刪除,或者你可以用空白或某些替換該行,或者你可以複製文件並省略新副本中的行,但這些幾乎都是你的選擇。) –

+0

@ Hotlicks!哈哈!我一直用我的程序使用舊的shell。我從不放棄它們!我認爲找到工資系統的面積,銷售額和複利很有意思! &謝謝 – user3080143

回答

0

您可以使用下面的代碼替換爲「」或零通緝線;

public static boolean readReplace(String fileName, String oldPattern, 
     String replPattern, int lineNumber) { 
    String line; 
    StringBuffer sb = new StringBuffer(); 
    int nbLinesRead = 0; 
    try { 
     FileInputStream fis = new FileInputStream(fileName); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(
       fis)); 
     while ((line = reader.readLine()) != null) { 
      nbLinesRead++; 
      line = line.toLowerCase(); 

      if (nbLinesRead == lineNumber) { 
       line = line.replaceFirst(oldPattern.toLowerCase(), 
         replPattern); 
      } 
      sb.append(line + "\n"); 
     } 
     reader.close(); 
     BufferedWriter out = new BufferedWriter(new FileWriter(fileName)); 
     out.write(sb.toString()); 
     out.close(); 

    } catch (Exception e) { 
     return false; 
    } 
    return true; 
} 
+0

謝謝mohammed amine bourk!一個簡單的問題,我需要把 – user3080143

+0

案例4:readreplace(); – user3080143

+0

您可以通過投票+1非常好地感謝我 – Bourkadi

0

簡答:你不能。

長答案:創建一個新文件並複製除文件以外的所有行。之後,重命名舊文件,然後重命名新文件,也許刪除舊文件。