2013-12-08 25 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

简答:你不能。

长答案:创建一个新文件并复制除文件以外的所有行。之后,重命名旧文件,然后重命名新文件,也许删除旧文件。