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 }
/// <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 }
/// <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); }
/// <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); }
/// <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(); }
/// <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> /// 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); }
/* * 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(); }
/// <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> /// 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); }
/// <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); }
/// <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); }