Design an abstract class named BankAccount with attributes such as balance, number of deposits, number of withdrawals, annual interest rate, and monthly service charges. The class should have methods like constructor, deposit, withdraw, calcInterest, and monthlyProcess. Then, design a subclass called SavingAccount that inherits from BankAccount and has additional features such as an inactive status field. The SavingAccount class should also have overridden methods for deposit and withdraw. Finally, write a driver class to test the code, display results through standard output and file output, and create a Graphical User Interface (GUI) to test the behaviors of the classes.