Esempio n. 1
0
Program::Program(bool isadmin, int userid,int _id, QWidget *parent)
    : QWidget(parent)
{

    QString tempTeacherName;
    QString tempStudentName;

    this->is_admin = isadmin;
    this->user_id = userid;
    this->ID = _id;
    //setting program options
    if (this->is_admin)
        this->setFixedSize(480, 275);
    else
        this->setFixedSize(240, 245);
    this->setWindowTitle("IUST School!");
    std::vector<QString> names;
    if (is_admin)
    {
        grpTeachers = new QGroupBox(this);
        grpTeachers->setGeometry(245, 3, 233,100);

        teachersCombo = new QComboBox();

        names = sql.getTeacherNames();
        int numTeachers = names.size();
        for (int i = 0; i < numTeachers; ++i)
        {
            teachersCombo->addItem(names[i],i);
        }
        teachersCombo->setParent(grpTeachers);
        teachersCombo->setGeometry(10,2,140,20);

        tempTeacherName = teachersCombo->itemText(teachersCombo->currentIndex());

        connect(teachersCombo,SIGNAL(currentIndexChanged(int)),this,SLOT(UpdateTeacherData()));

        label1 = new QLabel("معلم");
        label1->setGeometry(158, 2, 60, 20);
        label1->setParent(grpTeachers);

        label2 = new QLabel("نام:");
        label2->setGeometry(158, 24, 60, 20);
        label2->setParent(grpTeachers);

        label3 = new QLabel();
        label3->setGeometry(10, 24, 140, 20);
        label3->setAlignment(Qt::AlignLeft | Qt::AlignCenter);
        label3->setText(tempTeacherName);
        label3->setParent(grpTeachers);

        label4 = new QLabel("کلاس فعلی:");
        label4->setGeometry(158, 48, 60, 20);
        label4->setParent(grpTeachers);

        label5 = new QLabel();
        label5->setGeometry(10, 48, 140, 20);
        label5->setAlignment(Qt::AlignHCenter | Qt::AlignCenter);
        label5->setText(getClassName(sql.getTeacherClass(tempTeacherName)));
        label5->setParent(grpTeachers);

        classCombo = new QComboBox();
        classCombo->addItem("1/1");
        classCombo->addItem("1/2");
        classCombo->addItem("2/1");
        classCombo->addItem("2/2");
        classCombo->addItem("3/1");
        classCombo->addItem("3/2");
        classCombo->addItem("4/1");
        classCombo->addItem("4/2");
        classCombo->addItem("5/1");
        classCombo->addItem("5/2");
        classCombo->addItem("6/1");
        classCombo->addItem("6/2");
        classCombo->setParent(grpTeachers);
        classCombo->setGeometry(10,72,140,20);

        btnAddTeacherToClass = new QPushButton("تخصیص");
        btnAddTeacherToClass->setGeometry(160, 71, 60, 22);
        btnAddTeacherToClass->setParent(grpTeachers);

        connect(btnAddTeacherToClass, SIGNAL(clicked()), this, SLOT(bindTeacher()));

        grpDelays = new QGroupBox(this);
        grpDelays->setGeometry(245, 107, 233,100);

        btnFileDelayForStudent = new QPushButton("ثبت تاخیر برای دانش آموز", grpDelays);
        btnFileDelayForStudent->setGeometry(10, 5, 220, 24);

        connect(btnFileDelayForStudent, SIGNAL(clicked()), this, SLOT(addDelay()));

        delaysList = new QListWidget(grpDelays);
        delaysList->setGeometry(10, 35, 220, 60);

        grpAdminPanel = new QGroupBox(this);
        grpAdminPanel->setGeometry(245, 210, 233,54);

        btnAdminChangePassword = new QPushButton("تغییر رمز", grpAdminPanel);
        btnAdminChangePassword->setGeometry(10,1,213,22);

        connect(btnAdminChangePassword, SIGNAL(clicked()), this, SLOT(adminChangePassword()));

        btnAddTeacher = new QPushButton("اضافه کردن معلم", grpAdminPanel);
        btnAddTeacher->setGeometry(10,27,213,22);

        connect(btnAddTeacher, SIGNAL(clicked()), this, SLOT(addTeacher()));
    }

    grpStudents = new QGroupBox(this);
    if (is_admin)
        grpStudents->setGeometry(5, 3, 233,260);
    else
        grpStudents->setGeometry(5, 3, 233,230);
    studentsCombo = new QComboBox();

    std::vector<int> ids = sql.getStudentIDs(this->user_id);
    names = sql.getStudentNames(this->user_id);
    int numStudents = names.size();
    for (int i = 0; i < numStudents; ++i)
    {
        studentsCombo->addItem(names[i],ids[i]);
    }
    studentsCombo->setParent(grpStudents);
    studentsCombo->setGeometry(10,2,140,20);

    tempStudentName = studentsCombo->itemText(studentsCombo->currentIndex());

    connect(studentsCombo,SIGNAL(currentIndexChanged(int)),this,SLOT(UpdateStudentData()));

    label1s = new QLabel("دانش آموز");
    label1s->setGeometry(158, 2, 60, 20);
    label1s->setParent(grpStudents);

    label2s = new QLabel("نام:");
    label2s->setGeometry(188, 22, 30, 18);
    label2s->setParent(grpStudents);

    label3s = new QLabel();
    label3s->setGeometry(10, 22, 190, 18);
    label3s->setAlignment(Qt::AlignLeft | Qt::AlignCenter);
    label3s->setText(studentsCombo->itemText(studentsCombo->currentIndex()));
    label3s->setParent(grpStudents);

    label4s = new QLabel("کلاس فعلی:");
    label4s->setGeometry(158, 40, 60, 18);
    label4s->setParent(grpStudents);

    label5s = new QLabel();
    label5s->setGeometry(80, 40, 70, 18);
    label5s->setAlignment(Qt::AlignHCenter | Qt::AlignCenter);
    label5s->setText(getClassName(sql.getStudentClass(tempStudentName)));
    label5s->setParent(grpStudents);

    label6s = new QLabel("ریاضی:");
    label6s->setGeometry(180, 58, 40, 18);
    label6s->setParent(grpStudents);

    label7s = new QLabel();
    label7s->setGeometry(110, 58, 50, 18);
    label7s->setAlignment(Qt::AlignHCenter | Qt::AlignCenter);
    label7s->setParent(grpStudents);

    label8s = new QLabel("فیزیک:");
    label8s->setGeometry(70, 58, 40, 18);
    label8s->setParent(grpStudents);

    label9s = new QLabel();
    label9s->setGeometry(10, 58, 50, 18);
    label9s->setAlignment(Qt::AlignHCenter | Qt::AlignCenter);
    label9s->setParent(grpStudents);

    label10s = new QLabel("فارسی:");
    label10s->setGeometry(180, 76, 40, 18);
    label10s->setParent(grpStudents);

    label11s = new QLabel();
    label11s->setGeometry(110, 76, 50, 18);
    label11s->setAlignment(Qt::AlignHCenter | Qt::AlignCenter);
    label11s->setParent(grpStudents);

    label12s = new QLabel("دینی:");
    label12s->setGeometry(70, 76, 40, 18);
    label12s->setParent(grpStudents);

    label13s = new QLabel();
    label13s->setGeometry(10, 76, 50, 18);
    label13s->setAlignment(Qt::AlignHCenter | Qt::AlignCenter);
    label13s->setParent(grpStudents);

    label14s = new QLabel("جغرافی:");
    label14s->setGeometry(180, 94, 40, 18);
    label14s->setParent(grpStudents);

    label15s = new QLabel();
    label15s->setGeometry(110, 94, 50, 18);
    label15s->setAlignment(Qt::AlignHCenter | Qt::AlignCenter);
    label15s->setParent(grpStudents);

    label16s = new QLabel("شیمی:");
    label16s->setGeometry(70, 94, 40, 18);
    label16s->setParent(grpStudents);

    label17s = new QLabel();
    label17s->setGeometry(10, 94, 50, 18);
    label17s->setAlignment(Qt::AlignHCenter | Qt::AlignCenter);
    label17s->setParent(grpStudents);

    label18s = new QLabel("انظباط:");
    label18s->setGeometry(180, 112, 40, 18);
    label18s->setParent(grpStudents);

    label19s = new QLabel();
    label19s->setGeometry(110, 112, 50, 18);
    label19s->setAlignment(Qt::AlignHCenter | Qt::AlignCenter);
    label19s->setParent(grpStudents);

    label20s = new QLabel("معدل:");
    label20s->setGeometry(70, 112, 40, 18);
    label20s->setParent(grpStudents);

    label21s = new QLabel();
    label21s->setGeometry(10, 112, 50, 18);
    label21s->setAlignment(Qt::AlignHCenter | Qt::AlignCenter);
    label21s->setParent(grpStudents);

    update_student_scores();

    if (is_admin)
    {

        classSCombo = new QComboBox();
        classSCombo->addItem("1/1");
        classSCombo->addItem("1/2");
        classSCombo->addItem("2/1");
        classSCombo->addItem("2/2");
        classSCombo->addItem("3/1");
        classSCombo->addItem("3/2");
        classSCombo->addItem("4/1");
        classSCombo->addItem("4/2");
        classSCombo->addItem("5/1");
        classSCombo->addItem("5/2");
        classSCombo->addItem("6/1");
        classSCombo->addItem("6/2");
        classSCombo->setParent(grpStudents);
        classSCombo->setGeometry(10,140,140,24);

        btnAddStudentToClass = new QPushButton("تخصیص");
        btnAddStudentToClass->setGeometry(160, 140, 60, 24);
        btnAddStudentToClass->setParent(grpStudents);

        connect(btnAddStudentToClass, SIGNAL(clicked()), this, SLOT(bindStudent()));

        btnAddStudent = new QPushButton("اضافه کردن دانش آموز جدید");
        btnAddStudent->setGeometry(70, 170, 150, 24);
        btnAddStudent->setParent(grpStudents);

        connect(btnAddStudent, SIGNAL(clicked()), this, SLOT(addNewStudent()));

        btnRemoveStudent = new QPushButton("حذف کردن دانش آموز کنونی");
        btnRemoveStudent->setGeometry(70, 200, 150, 24);
        btnRemoveStudent->setParent(grpStudents);

        connect(btnRemoveStudent, SIGNAL(clicked()), this, SLOT(removeCurrentStudent()));

        btnScoring = new QPushButton("نمره دهی");
        btnScoring->setGeometry(140, 230, 80, 24);
        btnScoring->setParent(grpStudents);

        connect(btnScoring, SIGNAL(clicked()), this, SLOT(setStudentScore()));

        coursesCombo = new QComboBox();

        coursesCombo->addItem("انظباط", 6);

        coursesCombo->setParent(grpStudents);
        coursesCombo->setGeometry(10,230,120,24);

        update_delays();
    }
    else
    {

        btnRemoveStudent = new QPushButton("اخراج دانش آموز کنونی");
        btnRemoveStudent->setGeometry(70, 140, 150, 24);
        btnRemoveStudent->setParent(grpStudents);

        connect(btnRemoveStudent, SIGNAL(clicked()), this, SLOT(removeCurrentStudent()));

        btnScoring = new QPushButton("نمره دهی");
        btnScoring->setGeometry(140, 170, 80, 24);
        btnScoring->setParent(grpStudents);

        connect(btnScoring, SIGNAL(clicked()), this, SLOT(setStudentScore()));

        coursesCombo = new QComboBox();

        coursesCombo->addItem("ریاضی", 0);
        coursesCombo->addItem("فیزیک", 1);
        coursesCombo->addItem("فارسی", 2);
        coursesCombo->addItem("دینی", 3);
        coursesCombo->addItem("جغرافی", 4);
        coursesCombo->addItem("شیمی", 5);

        coursesCombo->setParent(grpStudents);
        coursesCombo->setGeometry(10,170,120,24);

        btnTeacherChangePassword = new QPushButton("تغییر رمز", grpStudents);
        btnTeacherChangePassword->setGeometry(70, 200, 150, 24);

        connect(btnTeacherChangePassword, SIGNAL(clicked()), this, SLOT(changeTeacherPassword()));
    }
}
Esempio n. 2
0
int main(void)
{
	char buf[256];	
	int lineCount = 0;
	int fileOpenResult = 0;
	FILE *fileRead = NULL, *fileWrite = NULL;
	StudentList studentList;
	studentList.count = 0; studentList.firstStudent = NULL; studentList.lastStudent = NULL;  // student list 초기화

	fileOpenResult = openStudentFile(&fileRead, &fileWrite);
	if (fileOpenResult == -1) return -1;	// data.txt 읽어오기, 없으면 만들기, 만들기 실패하면 종료하기
	
	if (fileOpenResult == 0)
	{
		while (fgets(buf, sizeof(buf), fileRead) != NULL)	// file 읽어서 구조체 할당하고 list에 추가하기
		{
			if (lineCount++ == 0) continue;	// 첫줄 무시		
			Student *s = parseStudentStr(buf);
			addStudentToList(s, &studentList);
		}
	}
	if (fileRead) fclose(fileRead);
	if (fileWrite) fclose(fileWrite);

	// main program loop
	int choice = 0;
	int changeExists = 0;
	while (choice != 9)
	{
		runMainMenu(&choice);
		switch (choice)
		{
			case 1:		printStudentList(&studentList);		
						break;	

			case 2:		addNewStudent(&studentList); 
						changeExists++;	
						break;

			case 3:		modifyStudentInfo(&studentList);
						changeExists++;
						break;

			case 4:		deleteStudentInfo(&studentList);
						changeExists++;
						break;

			case 5:		saveListToFile(&studentList); 
						changeExists = 0;	
						break;

			case 9:		if (onQuit(changeExists)) saveListToFile(&studentList);
						break;

			default:	printf("Invalid choice!\n");		
						break;
		}
	}
		
	cleanupOnExit(&studentList, fileRead, fileWrite);
	return 0;
}