Exemple #1
0
        static void Main()
        {
            bool createdNew = true;

            using (Mutex mutex = new Mutex(true, "Math Monkeys", out createdNew))
            {
                if (createdNew)
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    MMControl programController = new MMControl();
                    programController.RunProgram();
                    //Application.Run(new frmLogin());
                }
                else
                {
                    MessageBox.Show("Math Monkeys is already running.", "Math Monkeys", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
            }



            #region Test Code

            /* XmlDocument xd = new XmlDocument();
             * xd.Load(@"\t.xml");
             * // Console.WriteLine(xd.SelectSingleNode("Test/testitem/name").InnerText);
             * //Console.ReadKey();
             * */

            #endregion
        }
Exemple #2
0
        /// <summary>
        /// Jonathan Sanborn
        /// Called when a user logs out of the system
        /// </summary>
        public void Logout(MMControl mmControl)
        {
            currentSession.Duration = DateTime.Now - currentSession.Date;
            LoginRecords.Add(currentSession);

            mmControl.FileHandler.UpdateUser((IXMLnode)this);
        }
        static void Main()
        {
            bool createdNew = true;

            using (Mutex mutex = new Mutex(true, "Math Monkeys", out createdNew))
            {
                if (createdNew)
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    MMControl programController = new MMControl();
                    programController.RunProgram();
                    //Application.Run(new frmLogin()); 
                }
                else
                {
                    MessageBox.Show("Math Monkeys is already running.", "Math Monkeys", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); 
                }
            }



            #region Test Code

            /* XmlDocument xd = new XmlDocument();
             xd.Load(@"\t.xml");
            // Console.WriteLine(xd.SelectSingleNode("Test/testitem/name").InnerText);
             //Console.ReadKey(); 
             * */

            #endregion


        }
Exemple #4
0
        /// <summary>
        /// 9 April 2014
        /// Jonathan Sanborn
        ///
        /// Gets all the assignment attempts for this assignment that are stored in the XML
        /// </summary>
        /// <param name="mmControl">The Control object</param>
        private void GetAssignmentAttempts(MMControl mmControl)
        {
            assignmentAttempts = mmControl.FileHandler.GetAssignmentAttemptsByAssignment(this);

            foreach (AssignmentAttempt aa in assignmentAttempts)
            {
                aa.Assignment = this;
            }
        }
        /// <summary>
        /// 29 March 2014
        /// Jonathan Sanborn
        ///
        /// Parameterized constructor for A Student user
        /// </summary>
        /// <param name="mmControl">The Controller Object</param>
        /// <param name="id">Unique ID for the student in the system</param>
        /// <param name="fistName">The first Name of the student</param>
        /// <param name="lastName">The last name of the student</param>
        /// <param name="screenName">A unique screen name for the student</param>
        /// <param name="password">The password for the student</param>
        /// <param name="dob">The date of birth for the student</param>
        /// <param name="grade">The grade or group the student is in.</param>
        public Student(MMControl mmControl, string id, string fistName, string lastName, string screenName, string password, DateTime?dob, string grade)
            : base(id, UserType.Student, fistName, lastName, screenName, password)
        {
            init();

            this.DOB   = dob;
            this.grade = grade;

            getAssignments(mmControl);
        }
Exemple #6
0
        /// <summary>
        /// 22 March 2014 Jonathan Sanborn & Harvey Mercado
        /// Parameterized constructor for Assignment
        /// </summary>
        /// <param name="id">A unique ID for the Assignment</param>
        /// <param name="userID">The unique ID of the user that the assignment is assigned to.</param>
        /// <param name="problemSetId">the problem set Id of the for which the Problem Set that the assignment is built on</param>
        /// <param name="goal">The percent of problems that must be correct to pass this assignment values 0.0-1.0.</param>
        public Assignment(MMControl mmControl, string id, Student student, ProblemSet problemSet)
        {
            init();

            this.ID           = id;
            this.Student      = student;
            this.ProblemSet   = problemSet;
            this.DateAssigned = DateTime.Now;
            GetAssignmentAttempts(mmControl);
        }
        /// <summary>
        /// 9 April 2014
        /// Jonathan Sanborn
        ///
        /// Constructor for an Assignment Session
        /// </summary>
        /// <param name="mmControl">The Control Object</param>
        /// <param name="assign">The Assignment for this session</param>
        public AssignmentSession(MMControl mmControl, ref Assignment assign)
        {
            init();
            MMControl           = mmControl;
            assignment          = assign;
            problemSetGenerator = new ProblemSetGenerator(assignment.ProblemSet);
            assignmentAttempt   = new AssignmentAttempt();
            problemList         = problemSetGenerator.GetProblemList;

            attemptsRemaining = (int)Assignment.ProblemSet.NumberOfAttempts;
            currentProblem    = problemList.First();
            problemList.Remove(CurrentProblem);
        }
        /// <summary>
        /// Jonathan Sanborn
        ///
        /// Copy construct from a User object
        /// </summary>
        /// <param name="mmControl">The Controller Object</param>
        /// <param name="user">The User to copy</param>
        public Student(MMControl mmControl, User user)
            : base()
        {
            init();
            this.ID           = user.ID;
            this.UserType     = user.UserType;
            this.FirstName    = user.FirstName;
            this.LastName     = user.LastName;
            this.ScreenName   = user.ScreenName;
            this.LoginRecords = user.LoginRecords;
            this.Password     = user.Password;

            getAssignments(mmControl);
        }
Exemple #9
0
        /// <summary>
        /// Jonathan Sanborn
        /// Constructor
        ///
        /// </summary>
        /// <param name="mmControl">The controller Object</param>
        public frmLogin(MMControl mmControl)
        {
            InitializeComponent();
            MMControl = mmControl;

            this.ddlUserName.SelectedIndexChanged += new EventHandler(MMControl.LoginSelectionChanged);

            userBindingSource.DataSource = MMControl.AllUserList;

            //done so that the selected index changed event fires
            //needs more elegent solution
            ddlUserName.SelectedIndex = -1;
            ddlUserName.SelectedIndex = 0;
            ddlUserName.Focus();
        }
Exemple #10
0
        /// <summary>
        /// 9 April 2014
        /// Jonathan Sanborn
        ///
        /// XML Constructor
        /// </summary>
        /// <param name="mmControl">The Control Object</param>
        /// <param name="s">The Student this assignment belongs to</param>
        /// <param name="d">An XElement that represents a Assignment</param>
        public Assignment(MMControl mmControl, Student s, XElement d)
        {
            ID           = d.Element("ID").Value;
            ProblemSet   = mmControl.FileHandler.GetProblemSetByID(d.Element("ProblemSetID").Value);
            DateAssigned = DateTime.Parse(d.Element("DateAssigned").Value);
            IsCompleted  = bool.Parse(d.Element("Completed").Value);

            if (d.Element("DateCompleted") != null)
            {
                DateCompleted = DateTime.Parse(d.Element("DateCompleted").Value);
            }

            Student = s;
            GetAssignmentAttempts(mmControl);
        }
        /// <summary>
        /// Jonathan Sanborn
        /// Constructor
        /// 
        /// </summary>
        /// <param name="mmControl">The controller Object</param>
        public frmLogin(MMControl mmControl)
        {
            InitializeComponent();
            MMControl = mmControl;
            
            this.ddlUserName.SelectedIndexChanged += new EventHandler(MMControl.LoginSelectionChanged);

           userBindingSource.DataSource = MMControl.AllUserList;

            //done so that the selected index changed event fires
            //needs more elegent solution
           ddlUserName.SelectedIndex = -1;
           ddlUserName.SelectedIndex = 0;
           ddlUserName.Focus();
            
        }
Exemple #12
0
        /// <summary>
        /// 31 March 2014
        /// Jonathan Sanborn
        ///
        /// Constructor takes a user XML node and creates a user object
        /// </summary>
        /// <param name="mmControl">The Controller Object</param>
        /// <param name="d">An XElement Containing the Student data</param>
        public Student(MMControl mmControl, XElement d)
            : base(d)
        {
            init();

            if (d.Element("DOB") != null)
            {
                DOB = DateTime.Parse(d.Element("DOB").Value);
            }

            if (d.Element("Grade") != null)
            {
                Grade = d.Element("Grade").Value;
            }

            getAssignments(mmControl);
        }
Exemple #13
0
        /*
         * Time to ask users some Math Questions
         *
         * */


        /// <summary>
        /// Jonathan Sanborn
        ///
        /// Constructor
        /// </summary>
        /// <param name="mmControl">Controller Object</param>
        public frmStudentDrill(MMControl mmControl)
        {
            InitializeComponent();

            MMControl = mmControl;

            lblUsername.Text = MMControl.CurrentStudent.GetFullName;
            Assignment assign = MMControl.CurrentStudent.Assignments.Where(w => !w.IsCompleted).First();

            MMControl.AssignmentSession = new AssignmentSession(MMControl, ref assign);
            MMControl.AssignmentSession.StartSession();

            lblCurrentProblem.Text = MMControl.AssignmentSession.ProblemNumber.ToString();
            lblTotalProblems.Text  = MMControl.AssignmentSession.TotalProblems.ToString();

            MMControl.AssignmentSession.Correct   += new AssignmentSession.ProblemGradedEventHandler(AssignmentSession_Correct);
            MMControl.AssignmentSession.Incorrect += new AssignmentSession.ProblemGradedEventHandler(AssignmentSession_Incorrect);
            MMControl.AssignmentSession.IncorrectAttemptsRemaining += new AssignmentSession.ProblemGradedEventHandler(AssignmentSession_IncorrectAttemptsRemaining);

            DisplayProblem();
        }
        /// <summary>
        /// Jonathan Sanborn
        /// 
        /// Constructor
        /// </summary>
        /// <param name="mmControl">The controller object</param>
        public frmAdminControl(MMControl mmControl)
        {
            InitializeComponent();
            MMControl = mmControl;

            AddUserForm = new frmAddUser(mmControl);
            ModifyUserForm = new frmModifyUser ( mmControl );
            RemoveUsersForm = new frmRemoveUsers ( mmControl );


            //AG-JB
            //lblCurrentTime.Text = DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToShortTimeString();
            //tmrClock.Start();

            /////Set the bindings
            //studentBindingSource.DataSource = MMControl.StudentList;
            //problemSetBindingSource.DataSource = MMControl.ProblemSetList;
            //assignmentsBindingSource.DataSource = studentBindingSource;
            //incompletedAssignmentsBindingSource.DataSource = studentBindingSource;
            //ddlNewProblemSetAttempts.DataSource = MMControl.NumberOfAttempts;
            //ddlDefaultsAttempts.DataSource = MMControl.NumberOfAttemptsDefault;

            //UpdateBindings();

            //loadProblemSetDefaults();

            //tbcAdmin.SelectedIndexChanged += new EventHandler(tbcAdmin_SelectedIndexChanged);

            ///// Set the initial valid date ranges for repots tab
            //dtpStartDate.MinDate = DateTime.Now.AddYears(-120);
            //dtpStartDate.Value = DateTime.Now.AddYears(-5);
            //dtpStartDate.MaxDate = DateTime.Now;
            //dtpEndDate.MinDate = DateTime.Now.AddYears(-120);
            //dtpEndDate.Value = DateTime.Now;
            //dtpEndDate.MaxDate = DateTime.Now;

            //lblAdminName.Text = MMControl.CurrentUser.GetFullName;
            //lblLoginDate.Text = MMControl.CurrentUser.LastLogin().Date.ToString();

        }
        /*
         * Time to ask users some Math Questions
         * 
         * */


        /// <summary>
        /// Jonathan Sanborn
        /// 
        /// Constructor
        /// </summary>
        /// <param name="mmControl">Controller Object</param>
        public frmStudentDrill(MMControl mmControl)
        {
            
            InitializeComponent();

            MMControl = mmControl;
           
            lblUsername.Text = MMControl.CurrentStudent.GetFullName;
            Assignment assign = MMControl.CurrentStudent.Assignments.Where(w => !w.IsCompleted).First();
            MMControl.AssignmentSession = new AssignmentSession(MMControl, ref assign);
            MMControl.AssignmentSession.StartSession();

            lblCurrentProblem.Text = MMControl.AssignmentSession.ProblemNumber.ToString();
            lblTotalProblems.Text = MMControl.AssignmentSession.TotalProblems.ToString();

           MMControl.AssignmentSession.Correct += new AssignmentSession.ProblemGradedEventHandler(AssignmentSession_Correct);
           MMControl.AssignmentSession.Incorrect += new AssignmentSession.ProblemGradedEventHandler(AssignmentSession_Incorrect);
           MMControl.AssignmentSession.IncorrectAttemptsRemaining += new AssignmentSession.ProblemGradedEventHandler(AssignmentSession_IncorrectAttemptsRemaining);

            DisplayProblem();

        }
 /// <summary>
 /// Jonathan Sanborn
 ///
 /// Default Constructor for file handler
 /// </summary>
 /// <param name="mmControl">The Control Object</param>
 public FileHandler(MMControl mmControl)
 {
     init();
     MMControl = mmControl;
 }
        /// <summary>
        /// 9 April 2014
        /// Jonathan Sanborn
        /// 
        /// XML Constructor
        /// </summary>
        /// <param name="mmControl">The Control Object</param>
        /// <param name="s">The Student this assignment belongs to</param>
        /// <param name="d">An XElement that represents a Assignment</param>
        public Assignment(MMControl mmControl, Student s, XElement d)
        {
             ID = d.Element("ID").Value;
             ProblemSet = mmControl.FileHandler.GetProblemSetByID(d.Element("ProblemSetID").Value);
             DateAssigned = DateTime.Parse( d.Element("DateAssigned").Value);
             IsCompleted = bool.Parse(d.Element("Completed").Value);

             if (d.Element("DateCompleted") != null)
             { DateCompleted = DateTime.Parse(d.Element("DateCompleted").Value); }

             Student = s;
             GetAssignmentAttempts(mmControl);
        }
        /// <summary>
        /// 22 March 2014 Jonathan Sanborn & Harvey Mercado
        /// Parameterized constructor for Assignment
        /// </summary>
        /// <param name="mmControl">The Control Object</param>
        /// <param name="id">A unique ID for the Assignment</param>
        /// <param name="student">The student that this assignment belongs to.</param>
        /// <param name="problemSet">the problem set the assignment is built on</param>
        /// <param name="isCompleted">a boolean indicating that the assignment has been Completed</param>
        public Assignment(MMControl mmControl, string id, Student student, ProblemSet problemSet, bool isCompleted)
        {
            init();

            this.ID = id;
            this.Student = student;
            this.ProblemSet = problemSet;
            this.IsCompleted = isCompleted;
            this.DateAssigned = DateTime.Now;

            GetAssignmentAttempts(mmControl);
        }
        /// <summary>
        /// 9 April 2014
        /// Jonathan Sanborn
        /// 
        /// Gets all the assignment attempts for this assignment that are stored in the XML
        /// </summary>
        /// <param name="mmControl">The Control object</param>
        private void GetAssignmentAttempts(MMControl mmControl)
        {
            
            assignmentAttempts = mmControl.FileHandler.GetAssignmentAttemptsByAssignment(this);

            foreach (AssignmentAttempt aa in assignmentAttempts)
            {
                aa.Assignment = this;
            }
        }
        /// <summary>
        /// 9 April 2014
        /// Jonathan Sanborn
        /// 
        /// Constructor for an Assignment Session
        /// </summary>
        /// <param name="mmControl">The Control Object</param>
        /// <param name="assign">The Assignment for this session</param>
        public AssignmentSession(MMControl mmControl, ref Assignment assign)
        {
            init();
            MMControl = mmControl;
            assignment = assign;
            problemSetGenerator = new ProblemSetGenerator(assignment.ProblemSet);
            assignmentAttempt = new AssignmentAttempt();
            problemList = problemSetGenerator.GetProblemList;

            attemptsRemaining = (int)Assignment.ProblemSet.NumberOfAttempts;
            currentProblem = problemList.First();
            problemList.Remove(CurrentProblem);
        }
Exemple #21
0
        /// <summary>
        /// Jonathan Sanborn
        /// Called when a user logs out of the system
        /// </summary>
        public void Logout(MMControl mmControl)
        {
            currentSession.Duration = DateTime.Now - currentSession.Date;
            LoginRecords.Add(currentSession);

            mmControl.FileHandler.UpdateUser((IXMLnode)this);
        }
Exemple #22
0
         /// <summary>
        /// 31 March 2014
        /// Jonathan Sanborn
        /// 
        /// Constructor takes a user XML node and creates a user object
        /// </summary>
        /// <param name="mmControl">The Controller Object</param>
        /// <param name="d">An XElement Containing the Student data</param>
        public Student(MMControl mmControl, XElement d)
            : base(d)
        {
            init();

            if(d.Element("DOB") !=  null)
            {DOB = DateTime.Parse(d.Element("DOB").Value);}

            if(d.Element("Grade") != null)
            {Grade = d.Element("Grade").Value;}

            getAssignments(mmControl);

        }
Exemple #23
0
        /// <summary>
        /// Jonathan Sanborn
        /// 
        /// Copy construct from a User object
        /// </summary>
        /// <param name="mmControl">The Controller Object</param>
        /// <param name="user">The User to copy</param>
        public Student(MMControl mmControl, User user)
            : base()
        {
            init();
            this.ID = user.ID;
            this.UserType = user.UserType;
            this.FirstName = user.FirstName;
            this.LastName = user.LastName;
            this.ScreenName = user.ScreenName;
            this.LoginRecords = user.LoginRecords;
            this.Password = user.Password;

            getAssignments(mmControl);
        }
Exemple #24
0
        /// <summary>
        /// 29 March 2014
        /// Jonathan Sanborn
        /// 
        /// Parameterized constructor for A Student user
        /// </summary>
        /// <param name="mmControl">The Controller Object</param>
        /// <param name="id">Unique ID for the student in the system</param>
        /// <param name="fistName">The first Name of the student</param>
        /// <param name="lastName">The last name of the student</param>
        /// <param name="screenName">A unique screen name for the student</param>
        /// <param name="password">The password for the student</param>
        /// <param name="dob">The date of birth for the student</param>
        /// <param name="grade">The grade or group the student is in.</param>
        public Student(MMControl mmControl, string id,string fistName, string lastName, string screenName, string password, DateTime? dob, string grade)
            : base(id, UserType.Student, fistName, lastName, screenName, password)
        {
            init();

            this.DOB = dob;
            this.grade = grade;

            getAssignments(mmControl);
   
        }
Exemple #25
0
 /// <summary>
 /// Jonathan Sanborn
 /// 
 /// Get the assignments for this student from the XML 
 /// </summary>
 /// <param name="mmControl"></param>
 private void getAssignments(MMControl mmControl)
 {
     Assignments = mmControl.FileHandler.GetAssignmentsByStudent(this);
 }
 /// <summary>
 /// Jonathan Sanborn
 /// 
 /// Default Constructor for file handler
 /// </summary>
 /// <param name="mmControl">The Control Object</param>
 public FileHandler(MMControl mmControl)
 {
     init();
     MMControl = mmControl;
 }
Exemple #27
0
 /// <summary>
 /// Jonathan Sanborn
 ///
 /// Get the assignments for this student from the XML
 /// </summary>
 /// <param name="mmControl"></param>
 private void getAssignments(MMControl mmControl)
 {
     Assignments = mmControl.FileHandler.GetAssignmentsByStudent(this);
 }