| Calculation of Basic and Diluted Net Income per Common Share | 
 The following table sets forth the calculation of basic and diluted net income per common share: 
  
      
       
         | 
         | 
         | 
         | 
         | 
         | 
         | 
         | 
         | 
         | 
         | 
         | 
         | 
         | 
         | 
         | 
         | 
        
       
           | 
           | 
        Three Months Ended  | 
           | 
           | 
        Nine Months Ended  | 
           | 
        
       
           | 
           | 
        August 31, 2023  | 
           | 
           | 
        August 31, 2022  | 
           | 
           | 
        August 31, 2023  | 
           | 
           | 
        August 31, 2022  | 
           | 
        
       
        Numerator:  | 
           | 
           | 
           | 
           | 
           | 
           | 
           | 
           | 
           | 
           | 
           | 
           | 
        
       
        Net income  | 
           | 
        $  | 
        680,561  | 
           | 
           | 
        $  | 
        466,820  | 
           | 
           | 
        $  | 
        1,668,349  | 
           | 
           | 
        $  | 
        1,933,586  | 
           | 
        
       
        Denominator:  | 
           | 
           | 
           | 
           | 
           | 
           | 
           | 
           | 
           | 
           | 
           | 
           | 
        
       
        Weighted-average shares outstanding-basic  | 
           | 
           | 
        8,286,555  | 
           | 
           | 
           | 
        8,390,335  | 
           | 
           | 
           | 
        8,358,792  | 
           | 
           | 
           | 
        8,449,277  | 
           | 
        
       
        Dilutive common shares issuable upon exercise of    stock options  | 
           | 
           | 
        55,512  | 
           | 
           | 
           | 
        14,150  | 
           | 
           | 
           | 
        16,147  | 
           | 
           | 
           | 
        26,384  | 
           | 
        
       
        Weighted-average shares-diluted  | 
           | 
           | 
        8,342,067  | 
           | 
           | 
           | 
        8,404,485  | 
           | 
           | 
           | 
        8,374,939  | 
           | 
           | 
           | 
        8,475,661  | 
           | 
        
       
        Income  per share:  | 
           | 
           | 
           | 
           | 
           | 
           | 
           | 
           | 
           | 
           | 
           | 
           | 
        
       
        Basic  | 
           | 
        $  | 
        0.08  | 
           | 
           | 
        $  | 
        0.06  | 
           | 
           | 
        $  | 
        0.20  | 
           | 
           | 
        $  | 
        0.23  | 
           | 
        
       
        Diluted  | 
           | 
        $  | 
        0.08  | 
           | 
           | 
        $  | 
        0.06  | 
           | 
           | 
        $  | 
        0.20  | 
           | 
           | 
        $  | 
        0.23  | 
           | 
        
       
 |