This commit is contained in:
ChuXun
2025-10-19 13:29:40 +08:00
parent 14427c99a8
commit 6e631c8085
21 changed files with 2433 additions and 0 deletions

1
College_number.txt Normal file
View File

@@ -0,0 +1 @@
10

1
Major_number.txt Normal file
View File

@@ -0,0 +1 @@
8

4
Math.txt Normal file
View File

@@ -0,0 +1,4 @@
20245865 76
20246188 98
20245963 32
20243012 77

1
Student_number.txt Normal file
View File

@@ -0,0 +1 @@
7

7
Students_data.txt Normal file
View File

@@ -0,0 +1,7 @@
20245865 <20><>һ <20><> <20><><EFBFBD><EFBFBD>ѧԺ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2405
20246188 <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>ѧԺ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2405
20245963 <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>ѧԺ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2405
20245866 <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>˼<EFBFBD><CBBC><EFBFBD><EFBFBD>ѧԺ <20><><EFBFBD><EFBFBD>˼<EFBFBD><CBBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ 2466
20247777 <20><><EFBFBD><EFBFBD> <20><> δ<><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧԺ <20>˹<EFBFBD><CBB9><EFBFBD><EFBFBD><EFBFBD> 2401
20248888 <20><><EFBFBD><EFBFBD> <20><> δ<><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧԺ <20>˹<EFBFBD><CBB9><EFBFBD><EFBFBD><EFBFBD> 2401
20243012 <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>ѧԺ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2405

0
Teacher_number.txt Normal file
View File

1
Teachers_data.txt Normal file
View File

@@ -0,0 +1 @@
10001 <20><><EFBFBD><EFBFBD> Ů <20><>ѧԺ Math 2405 10001

10
colleges.txt Normal file
View File

@@ -0,0 +1,10 @@
1000 <20><><EFBFBD><EFBFBD>ѧԺ
2000 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧԺ
3000 <20><>ϢѧԺ
4000 <20><>Ժ
5000 <20>ķ<EFBFBD>ѧԺ
6000 δ<><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧԺ
7000 <20><><EFBFBD>̹<EFBFBD><CCB9><EFBFBD>ѧԺ
8000 <20><>ѧԺ
9000 ұ<><D2B1>ѧԺ
10000 <20><><EFBFBD><EFBFBD>ѧԺ

0
hunnan-nanhu.txt Normal file
View File

8
majors.txt Normal file
View File

@@ -0,0 +1,8 @@
1001 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1000
2002 <20>ƿ<EFBFBD> 2000
3003 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3000
4004 <20><><EFBFBD><EFBFBD> 4000
8005 <20><>ѧ 8000
6006 <20>˹<EFBFBD><CBB9><EFBFBD><EFBFBD><EFBFBD> 6000
9007 ұ<><D2B1> 9000
1008 <20><><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD><E5BCBC> 1000

8
money.txt Normal file
View File

@@ -0,0 +1,8 @@
20245865 50.00
20245865 50.00
20245865 0.00
20245865 0.00
20245865 0.00
20245865 0.00
20245865 48.00
20245865 46.00

0
requests.txt Normal file
View File

2
room_change_request.txt Normal file
View File

@@ -0,0 +1,2 @@
20245865 playZZZ IamML

0
student_password.txt Normal file
View File

0
teacher_password.txt Normal file
View File

0
temp.txt Normal file
View File

2386
主函数.cpp Normal file
View File

@@ -0,0 +1,2386 @@
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>
#include<windows.h>
#include<ctype.h>
#define COLLEGE_URL "colleges.txt"
#define COLLEGE_NUMBER_URL "College_number.txt"
#define MAJOR_URL "majors.txt"
#define MAJOR_NUMBER_URL "Major_number.txt"
#define ROOM_CHANGE_REQUESTS_URL "room_change_request.txt"
#define ROOM_LEAVE_REQUESTS_URL "room_leave_request.txt"
#define STUDENT_DATA_URL "Students_data.txt"
#define STUDENT_NUMBER_URL "Student_number.txt"
#define TEACHER_DATA_URL "Teachers_data.txt"
#define TEACHER_NUMBER_URL "Teacher_number.txt"
#define COURSE_NUMBER 4
#define INIT_CLASS_NUMBER 10
#define DIRECT_ID 114514
#define DIRECT_PASSWORD 1919810
#define REQUEST_URL "requests.txt"
#define STUDENT_URL "students.txt"
#define STUDENT_PASSWORD_URL "student_password.txt"
#define TEACHER_PASSWORD_URL "teacher_password.txt"
#define MONEY_URL "money.txt"
#define BUS_RESERVE_COST 2
#define FACILITY_RESERVE_COST 5
#define P 10007
#define Q 10009//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define E 65537 //<2F><>Կ <20><>PHI(N)<29><><EFBFBD><EFBFBD>
#define N (P * Q)
#define PHI ((P - 1) * (Q - 1))
#define D 35910881//Dʹ<44><CAB9>(E * D) % PHI = 1
#define BUS_ROUTE_ONE "<22>Ϻ<EFBFBD>-<2D><><EFBFBD><EFBFBD>.txt"
#define BUS_ROUTE_TWO "<22><><EFBFBD><EFBFBD>-<2D>Ϻ<EFBFBD>.txt"
#define TABLE_SIZE 10003
int INDEX = 1;
typedef struct _Courses{
float credit; // ѧ<><D1A7>
char name[20]; // <20>γ<EFBFBD><CEB3><EFBFBD>
}Course;
typedef struct _Scores{
int Math;
int English;
int Computer;
int Politics;
}Scores;
typedef struct _Student {
int Class; // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
char gender[3];
int id;
int dorm_index; // (6λ<36><CEBB><EFBFBD><EFBFBD><><C2A5>+AB+<2B><><EFBFBD>Һ<EFBFBD>+<2B><>λ<EFBFBD><CEBB>)
double money;
double GPA;
long long password;
char name[10];
char major[20];
char college[23];
Scores scores;
struct _Student *next;
}Student;
typedef struct _Teacher {
char gender[3];
int id;
int teaching_class; // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
long long password;
char name[10];
char course[20];
char college[23];
struct _Teacher *next;
}Teacher;
typedef struct _Colleges{
int id;
char college_name[23];
}Colleges;
typedef struct _Major{
int college_id; // <20><EFBFBD><E6B4A2>רҵ<D7A8><D2B5><EFBFBD><EFBFBD>ѧԺ<D1A7>ı<EFBFBD><C4B1><EFBFBD>
int id;//:1001/1000*1000
char name[23];
}Major;
typedef struct TreeNode{
Student* student;
struct TreeNode* left;
struct TreeNode* right;
}TreeNode;
typedef struct _BusSchedule{
int index;
char date[40]; // <20><EFBFBD><E0B3B5><EFBFBD><EFBFBD>
char time[40]; // <20>೵ʱ<E0B3B5><CAB1>
}BusSchedule;
typedef struct _siteSchedule{
char siteType[100]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
char date[100]; // <20><><EFBFBD>ؿ<EFBFBD>ԤԼ<D4A4><D4BC><EFBFBD><EFBFBD>
char time[100]; // <20><><EFBFBD>ؿ<EFBFBD>ԤԼʱ<D4BC><CAB1>
}siteSchedule;
typedef struct _HashTable {
Student* students[TABLE_SIZE];
}HashTable;
//<2F><>ϣ<EFBFBD><CFA3>
int hashFunction(int id);
HashTable* createHashTable(void);
bool insertStudent(HashTable* table, Student* student);
Student* findStudent(HashTable* table, int id);
bool deleteStudent(HashTable* table, int id);
bool freeHashTable(HashTable* table);
//<2F><><EFBFBD><EFBFBD>ѧԺ
void Admin_College(int* number);
void Write_File_College_Number(int number);
void Read_File_College_Number(int*number);
Colleges* Read_College(int college_number);
void Print_College(Colleges* colleges, int college_number);
//<2F><><EFBFBD><EFBFBD>רҵ
void Read_File_Major_Number(int *major_number);
void Admin_Major(Colleges* colleges, int college_number,int* major_number);
void Write_File_Major_Number(int number);
Major* Read_Major(int major_number);
//<2F><EFBFBD><E9B2A2><EFBFBD><EFBFBD>
int getCourseScore(Scores* scores, const char* courseName);// <20><><EFBFBD>ݿγ<DDBF><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD>Ӧ<EFBFBD>ijɼ<C4B3>
int compareStudents(Student* s1, Student* s2, const char* courseName);// <20>ȽϺ<C8BD><CFBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿγ<DDBF><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void merge(Student* array, int left, int mid, int right, const char* courseName);// <20><EFBFBD><E9B2A2><EFBFBD>򣺺ϲ<F2A3BABA><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void mergeSort(Student* array, int left, int right, const char* courseName);// <20><EFBFBD><E9B2A2><EFBFBD><EFBFBD><EFBFBD>ݹ麯<DDB9><E9BAAF>
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2>洢ѧ<E6B4A2><D1A7><EFBFBD><EFBFBD>Ϣ
TreeNode* insert(TreeNode* root, Student* student);//<2F><><EFBFBD><EFBFBD><EFBFBD>ڵ㵽<DAB5><E3B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TreeNode* createBinaryTree(Student* students, int size);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void printInOrder(TreeNode* node);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void freeTree(TreeNode* node);// <20>ͷŶ<CDB7><C5B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
TreeNode* find(TreeNode* root, int id);// <20><><EFBFBD>ҽڵ<D2BD>
void sortByCourseScore(Student* students, int size, const char* courseName);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Ŀ<EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><D1A7><EFBFBD><EFBFBD>Ϣ
bool select_college(Colleges* colleges,int college_number,char* college);//<2F>ڸ<EFBFBD><DAB8><EFBFBD>ѧԺ<D1A7><D4BA>ѡ<EFBFBD><D1A1>ѧԺ<D1A7><D4BA>רҵ
bool select_major(Colleges* colleges,int college_number,Major* majors,int major_number,char* college,char* major);
void Read_File_Student_Number(int* student_number);//<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0>ѧ<EFBFBD><D1A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><>ʼ<EFBFBD><CABC>ѧ<EFBFBD><D1A7>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
void inputStudentInfo(Colleges* colleges,int college_number,Major* majors,int major_number,int* student_number);
void Write_File_Student_Number(int student_number);//<2F><><EFBFBD><EFBFBD>ѧ<EFBFBD><D1A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Student* Read_Students(int student_number);//<2F><><EFBFBD>ļ<EFBFBD><C4BC>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>Students<74><73><EFBFBD><EFBFBD>
void Undefined_Inital_Stu(Student* students,int student_number);
void Read_File_Teacher_Number(int* teacher_number);//<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD>Ľ<EFBFBD>ʦ<EFBFBD><CAA6><EFBFBD><EFBFBD>
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʦ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
void inputTeacherInfo(Colleges* colleges,Course courses[],int college_number,int* teacher_number);
void Write_File_Teacher_Number(int teacher_number);//<2F><><EFBFBD>½<EFBFBD>ʦ<EFBFBD><CAA6><EFBFBD><EFBFBD>
Teacher* Read_Teachers(int teacher_number);//<2F><><EFBFBD>ļ<EFBFBD><C4BC>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>Teachers<72><73><EFBFBD><EFBFBD>
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void Inital_password(Student* students,int student_number,Teacher* teachers,int teacher_number);
//<2F><>ʦ<EFBFBD><CAA6>¼
bool Teacher_Login(Teacher* teachers,Teacher *target_teacher,int teacher_number);
//<2F><>ʦ¼<CAA6><C2BC><EFBFBD>ɼ<EFBFBD>
void Teacher_Import_Grade(Student*students,int student_number,Teacher *teacher,int teacher_number,Course courses[]);
//<2F><><EFBFBD><EFBFBD>ij<EFBFBD><C4B3>ѧ<EFBFBD><D1A7><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>GPA
double Total_GPA_Calculation(Student* student,Course courses[],int student_number);
//<2F><><EFBFBD><EFBFBD>ij<EFBFBD><C4B3>ѧ<EFBFBD><D1A7><EFBFBD><EFBFBD>GPA
void Update_GPA(Student* student,Course courses[], int student_number);
//ѧ<><D1A7><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>GPA
void Student_Watch_Grade(Student* student);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD>
void assignDormitory(Student* students, int numStudents);
bool Student_Login(Student* students,Student *target_student,int student_number);
//<2F><>ȡѧ<C8A1><D1A7><EFBFBD>ɼ<EFBFBD><C9BC>ļ<EFBFBD>
void Students_Read_Grade_File(TreeNode* root,int student_number);
//ȡģ<C8A1><C4A3><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ģ
// <20>ȶԵ<C8B6><D4B5><EFBFBD>ȡģ<C8A1><C4A3>С <20>ٶ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>С ֱ<><D6B1>ָ<EFBFBD><D6B8>Ϊ0
long long quick_pow(long long base, long long power, long long mod);
// <20><><EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD>
long long encrypt(long long original_password);
// <20><><EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD>
long long decrypt(long long ciphertext);
void Read_Password(Student*students,int student_number,Teacher*teachers,int teacher_number,TreeNode* root);
//<2F><><EFBFBD><EFBFBD>ϵͳ
void Read_Money(Student*students,int student_number,Teacher*teachers,int teacher_number,TreeNode* root);
void Moneys_System(Student* student,int student_number,BusSchedule*b1,BusSchedule*b2,int bn1,int bn2);
//<2F><EFBFBD><E0B3B5><EFBFBD><EFBFBD>
void inputBusSchedule(BusSchedule *schedule);
void saveBusScheduleToFile(const BusSchedule *schedule,const char *filename,int counter);
int Counter(const char *filename);
BusSchedule* Print_Bus_Conditions(const char *filename);
//<2F><><EFBFBD>ع<EFBFBD><D8B9><EFBFBD>
void inputSiteSchedule(siteSchedule *schedule);
void saveSiteScheduleToFile(const siteSchedule *schedule,const char *filename,int counter);
int main()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int college_number = 0;
bool first=false;
int major_number = 0;
Colleges* colleges;
Major* majors;
BusSchedule *bus_schedule1;
BusSchedule *bus_schedule2;
BusSchedule schedule;
int student_number=0;
Student* students;
int teacher_number=0;
Teacher* teachers;
TreeNode* root;
Student target_student;
target_student.money=48.0;
//<2F>ٶ<EFBFBD>ֻ<EFBFBD><D6BB>4<EFBFBD>ſγ̣<CEB3><CCA3>ֱ<EFBFBD>Ϊ<EFBFBD><CEAA>Math, English, Computer,Politics
Course courses[]={{5,"Math"}, {3.5,"English"},{3,"Computer"},{3,"Politics"}};
//<2F><>¼ϵͳ
printf("<EFBFBD><EFBFBD>ӭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
Sleep(2000);
system("cls");
start:
printf("<EFBFBD>״<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>˵<EFBFBD>½ϵͳ:\n1.<2E><><EFBFBD><EFBFBD>ѧԺ<D1A7><D4BA>רҵģ<D2B5><C4A3>\n2.<2E><><EFBFBD><EFBFBD>ѧ<EFBFBD><D1A7><EFBFBD>ͽ<EFBFBD>ʦ<EFBFBD><CAA6>Ϣ\n3.<2E><><EFBFBD>ð೵<C3B0><E0B3B5><EFBFBD><EFBFBD>\n\n"
"<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʦ<EFBFBD>˵<EFBFBD>¼ϵͳ:\n1.¼<><C2BC><EFBFBD>ɼ<EFBFBD>\n2.<2E><>ѯ<EFBFBD>ɼ<EFBFBD>\n3.<2E>޸ijɼ<C4B3>\n4.<2E>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>\n5.չʾ<D5B9>ɼ<EFBFBD>\n6.<2E>˳<EFBFBD><CBB3><EFBFBD>¼\n\n"
"<EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>¼ϵͳ:\n1.<2E>γ̳ɼ<CCB3>\n2.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n3.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԤԼϵͳ\n4.<2E>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>\n5.<2E>˳<EFBFBD>ϵͳ\n\n"
"<EFBFBD><EFBFBD>3<EFBFBD><EFBFBD><EFBFBD>뵼Ա<EFBFBD>˵<EFBFBD>½ϵͳ\n1.<2E><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>ס<EFBFBD><D7A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n\n<EFBFBD><EFBFBD>4<EFBFBD>˳<EFBFBD>ϵͳ\n\n");
www:
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD>01234<EFBFBD><EFBFBD><EFBFBD>״<EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
int login_choice;
if(!first)
{
system("pause");
system("cls");
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>˵<EFBFBD>½ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>Ĵ˴<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
printf(("1.<2E><><EFBFBD><EFBFBD>ѧԺ<D1A7><D4BA>רҵģ<D2B5><C4A3>\n2.<2E><><EFBFBD><EFBFBD>ѧ<EFBFBD><D1A7><EFBFBD>ͽ<EFBFBD>ʦ<EFBFBD><CAA6>Ϣ\n3.<2E><><EFBFBD>ð೵<C3B0><E0B3B5><EFBFBD><EFBFBD>\n"));
printf("<EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><EFBFBD><EFBFBD>Աϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ζ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>ʼ<EFBFBD><EFBFBD>\n");
//<2F><><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><D1A7><EFBFBD><EFBFBD>ѧԺ<D1A7><D4BA>רҵģ<D2B5><C4A3>
//<2F>ȶ<EFBFBD>ȡ<EFBFBD>Ѵ<EFBFBD><D1B4><EFBFBD>ѧԺ<D1A7><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧԺ
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>ѧԺ<D1A7><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>ѧԺ<D1A7><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3>õ<EFBFBD>ѧԺ<D1A7><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧԺ<EFBFBD><EFBFBD>רҵģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
system("pause");
system("cls");
printf("1.<2E><><EFBFBD><EFBFBD>ѧԺ<D1A7><D4BA>\n");
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧԺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ѧԺ<EFBFBD><EFBFBD>һ<EFBFBD>λس<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ctrl+Zֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EBA3A9>\n");
Read_File_College_Number(&college_number);
Admin_College(&college_number);
Write_File_College_Number(college_number);
//<2F><>ѧԺ<D1A7><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A3AC><EFBFBD>պ<EFBFBD>ѧ<EFBFBD><D1A7><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>
colleges = Read_College(college_number);
printf("ѧԺ<EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD>\n");
Sleep(500);
system("cls");
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Աϵͳ<EFBFBD><EFBFBD>2.<2E><><EFBFBD><EFBFBD>רҵ<D7A8><D2B5>\n");
Print_College(colleges,college_number);
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧԺid<EFBFBD><EFBFBD>רҵ<EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>س<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ctrl+Zֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EBA3A9>\n");
Read_File_Major_Number(&major_number);
Admin_Major(colleges,college_number,&major_number);
Write_File_Major_Number(major_number);
//<2F><>רҵ<D7A8><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A3AC><EFBFBD>պ<EFBFBD>ѧ<EFBFBD><D1A7><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>
majors = Read_Major(major_number);
printf("רҵ<EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD>\n");
Sleep(500);
system("cls");
Sleep(500);
printf("<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
Sleep(1000);
system("cls");
//ѧ<><D1A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
Read_File_Student_Number(&student_number);
inputStudentInfo(colleges,college_number,majors,major_number,&student_number);
Write_File_Student_Number(student_number);
Sleep(500);
system("cls");
Sleep(500);
//<2F><>ʦ<EFBFBD><CAA6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
Read_File_Teacher_Number(&teacher_number);
inputTeacherInfo(colleges,courses,college_number,&teacher_number);
Write_File_Teacher_Number(teacher_number);
students = Read_Students(student_number);
Undefined_Inital_Stu(students,student_number);
assignDormitory(students,student_number);
teachers = Read_Teachers(teacher_number);
//<2F><>ʼ<EFBFBD><CABC>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Inital_password(students,student_number,teachers,teacher_number);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ý<EFBFBD><C3BD><EFBFBD>
Sleep(500);
system("cls");
Sleep(500);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
root = createBinaryTree(students,student_number);
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Read_Password(students,student_number,teachers,teacher_number,root);
//<2F><>ȡ<EFBFBD>ɼ<EFBFBD><C9BC>ļ<EFBFBD><C4BC><EFBFBD>Ϣ
Students_Read_Grade_File(root,student_number);
Read_Money(students,student_number,teachers,teacher_number,root);
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
//<2F><EFBFBD><E0B3B5><EFBFBD><EFBFBD>
int choice_buses;
printf("<EFBFBD>Ϻ<EFBFBD> --> <20><><EFBFBD>ϣ<EFBFBD>\n");
bus_schedule1=Print_Bus_Conditions(BUS_ROUTE_ONE);
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> --> <20>Ϻ<EFBFBD><CFBA><EFBFBD>\n");
bus_schedule2=Print_Bus_Conditions(BUS_ROUTE_TWO);
while (true)
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>\n");
printf("1. <20>Ϻ<EFBFBD> --> <20><><EFBFBD><EFBFBD>\n");
printf("2. <20><><EFBFBD><EFBFBD> --> <20>Ϻ<EFBFBD>\n");
printf("3. <20>˳<EFBFBD>\n");
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>");
scanf("%d",&choice_buses);
if (choice_buses==3)
{
break;
}
if(choice_buses==1)
{
inputBusSchedule(&schedule);
int NanhuCounter=Counter(BUS_ROUTE_ONE)+1;
saveBusScheduleToFile(&schedule,BUS_ROUTE_ONE,NanhuCounter);
Sleep(1000);
system("cls");
}
else if(choice_buses==2)
{
inputBusSchedule(&schedule);
int HunnanCounter=Counter(BUS_ROUTE_TWO)+1;
saveBusScheduleToFile(&schedule,BUS_ROUTE_TWO,HunnanCounter);
Sleep(1000);
system("cls");
}
else
{
printf("<EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
Sleep(1000);
system("cls");
}
}
first=true;
Sleep(1000);
system("cls");
goto start;
}
scanf("%d",&login_choice);
system("cls");
switch(login_choice)
{
case 1:
//<2F><>ʦ<EFBFBD><CAA6>¼
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʦ<EFBFBD>˵<EFBFBD>¼ϵͳ\n");
Teacher target_teacher;
if(Teacher_Login(teachers,&target_teacher,teacher_number))
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʦ<EFBFBD><CAA6>Ϣ
printf("<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>%08d\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%s\n<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>%s\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧԺ<EFBFBD><EFBFBD>%s\n<EFBFBD><EFBFBD>ѧ<EFBFBD>γ̣<EFBFBD>%s\n<EFBFBD>ڿΰ༶<EFBFBD><EFBFBD>%d\n",
target_teacher.id,target_teacher.name,target_teacher.gender,
target_teacher.college,target_teacher.course,target_teacher.teaching_class);
system("pause");
system("cls");
asd:
printf("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n1.¼<><C2BC><EFBFBD>ɼ<EFBFBD>\n2.<2E><>ѯ<EFBFBD>ɼ<EFBFBD>\n3.<2E>޸ijɼ<C4B3>\n4.<2E>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>\n5.չʾ<D5B9>ɼ<EFBFBD>\n6.<2E>˳<EFBFBD><CBB3><EFBFBD>¼\n");
int bb;
scanf("%d",&bb);
if(bb==1)
{
//<2F><>ʦ¼<CAA6><C2BC><EFBFBD>ɼ<EFBFBD>
bool jutice = true;
while(true)
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%d<><64><EFBFBD><EFBFBD>%s<>ɼ<EFBFBD>¼<EFBFBD>루1<EBA3A8><31>0<EFBFBD><30><EFBFBD><EFBFBD>",target_teacher.teaching_class,target_teacher.course);
int choice_grade_enter;
scanf("%d",&choice_grade_enter);
if(choice_grade_enter==0)
{
jutice=false;
break;
}
else if(choice_grade_enter==1)
{
jutice=true;
break;
}
else
{
printf("\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
continue;
}
}
system("cls");
if(jutice)
{
printf("ѧ<EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>......\n");
Sleep(1000);
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̰༶<EFBFBD><EFBFBD>ѧ<EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD>¼<EFBFBD><EFBFBD>......\n");
Sleep(2000);
system("cls");
//<2F><><EFBFBD><EFBFBD><EFBFBD>γ<EFBFBD><CEB3>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ洢ѧ<E6B4A2><D1A7><EFBFBD>ɼ<EFBFBD>
//<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ʽΪ<CABD><CEAA><EFBFBD>γ<EFBFBD><CEB3><EFBFBD><EFBFBD>༶.txt<78><74><EFBFBD><EFBFBD>Math2405.txt<78><74>
//<2F><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ʽΪ<CABD><CEAA>ѧ<EFBFBD><D1A7>ID(<28>ո<EFBFBD>)<29>ɼ<EFBFBD>(<28><><EFBFBD><EFBFBD>)
Teacher_Import_Grade(students,student_number,&target_teacher,teacher_number,courses);
//ֹͣ¼<D6B9><C2BC><EFBFBD>ɼ<EFBFBD>
}
}
else if(bb==2)
{
//<2F><>ʦ<EFBFBD><CAA6>ѯ<EFBFBD>ɼ<EFBFBD>
printf("ѧ<EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>......\n");
Sleep(1000);
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̰༶<EFBFBD><EFBFBD>ѧ<EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>ѯ......\n");
Sleep(2000);
system("cls");
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ѯ<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><EFBFBD>ID<EFBFBD><EFBFBD>");
//<2F><>ȡstudents<74><73><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ӧ<EFBFBD><EFBFBD><E0BCB6>ѧ<EFBFBD><D1A7><EFBFBD>ɼ<EFBFBD>
int to_find_student_id;
scanf("%d",&to_find_student_id);
TreeNode* target_student = find(root,to_find_student_id);
if(target_student!=NULL)
{
Student_Watch_Grade(target_student->student);
}
}
else if(bb==3)
{
//<2F><>ʦ<EFBFBD>޸ijɼ<C4B3>
printf("ѧ<EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>......\n");
Sleep(1000);
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̰༶<EFBFBD><EFBFBD>ѧ<EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD>޸<EFBFBD>......\n");
Sleep(2000);
system("cls");
//<2F><>ȡstudents<74><73><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ӧ<EFBFBD><EFBFBD><E0BCB6>ѧ<EFBFBD><D1A7><EFBFBD>ɼ<EFBFBD>
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>޸ijɼ<EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><EFBFBD>ID<EFBFBD><EFBFBD>");
int to_find_student_id;
scanf("%d",&to_find_student_id);
TreeNode* target_student = find(root,to_find_student_id);
if(target_student!=NULL)
{
char temp_course_url[30];
sprintf(temp_course_url,"%s.txt",target_teacher.course);
//<2F><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ʽΪ<CABD><CEAA><EFBFBD>̹<EFBFBD><CCB9>ſγ<C5BF><CEB3><EFBFBD><EFBFBD><EFBFBD><E0BCB6>.txt<78><74><EFBFBD>磺Math.txt
//<2F><><EFBFBD>ݴ洢<DDB4><E6B4A2>ʽ<EFBFBD><CABD>ѧ<EFBFBD>żӿո<D3BF><D5B8>ӳɼ<D3B3><C9BC><EFBFBD><EFBFBD>磺20245738 90
FILE* fp = fopen(temp_course_url,"a+");
if(fp==NULL)
{
printf("<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>\n");
return 0;
}
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸ĺ<EFBFBD><EFBFBD>ijɼ<EFBFBD><EFBFBD><EFBFBD>");
int grade_to_change;
scanf("%d",&grade_to_change);
//<2F>޸ijɼ<C4B3>
fprintf(fp,"%s %d\n",to_find_student_id,grade_to_change);
fclose(fp);
printf("<EFBFBD>ɼ<EFBFBD><EFBFBD>޸ijɹ<EFBFBD><EFBFBD><EFBFBD>\n");
Sleep(2000);
system("cls");
}
else
{
printf("δ<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
Sleep(2000);
system("cls");
}
}
else if(bb==4)
{
int time_count=0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>޸Ľ<DEB8>ʦ<EFBFBD><CAA6><EFBFBD><EFBFBD>
password_enter:
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
long long former_password;
scanf("%lld",&former_password);
if(former_password==target_teacher.password)
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
long long new_password;
scanf("%lld",&new_password);
target_teacher.password = new_password;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
FILE* fTeacher= fopen(TEACHER_PASSWORD_URL,"a+");
fprintf(fTeacher,"%s %lld\n",target_teacher.id,encrypt(target_teacher.password));
fclose(fTeacher);
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸ijɹ<EFBFBD><EFBFBD><EFBFBD>\n");
Sleep(2000);
system("cls");
}
else
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
time_count++;
//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(time_count>3)
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
Sleep(2000);
system("cls");
goto choice_one;
}
jjj:
int a;
printf("<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
scanf("%d",&a);
if(a==1)
{
goto password_enter;
}
else if(a==0)
{
system("cls");
}
else
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
goto jjj;
}
}
}
else if(bb==5)
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>밴1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>밴0<EFBFBD><EFBFBD>");
int choice_sort;
scanf("%d",&choice_sort);
if(choice_sort==1)
{
// <20><><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Sleep(500);
system("cls");
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD>\nMath\nEnglish\nComputer\nPolitics\n");
printf("GPA\nid\nClass\n<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD>");
char choices[20];
scanf("%s",choices);
while(true)
{
if(strcmp(choices,"Math")!=0&&strcmp(choices,"English")!=0&&strcmp(choices,"Computer")!=0&&strcmp(choices,"Politics")!=0&&strcmp(choices,"GPA")!=0&&strcmp(choices,"id")!=0&&strcmp(choices,"Class")!=0)
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
continue;
}
else
{
break;
}
}
printf("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-1<><31><EFBFBD><EFBFBD>");
while(true)
{
int order;
scanf("%d",&order);
Sleep(500);
system("cls");
if(order==1||order==(-1))
{
INDEX=order;
sortByCourseScore(students,student_number,choices);
INDEX=1; //<2F><>ԭ
break;
}
else
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
continue;
}
}
}
else if(choice_sort==0)
{
printf("<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
Sleep(2000);
system("cls");
}
else
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
Sleep(2000);
system("cls");
goto choice_start;
}
}
else if(bb==6)
{
//<2F>˳<EFBFBD>ϵͳ
printf("<EFBFBD>˳<EFBFBD>ϵͳ<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>\n");
Sleep(2000);
system("cls");
}
else
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
goto asd;
}
int a1;
choice_one:
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
scanf("%d",&a1);
if(a1==1)
{
system("cls");
goto start;
}
else if(a1==0)
{
system("cls");
}
else
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
goto choice_one;
}
break;
case 2:
//ѧ<><D1A7><EFBFBD><EFBFBD>¼
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>¼ϵͳ\n");
if(Student_Login(students,&target_student,student_number))
{
//<2F><><EFBFBD><EFBFBD>ѧ<EFBFBD><D1A7><EFBFBD><EFBFBD>Ϣ
printf("ѧ<EFBFBD>ţ<EFBFBD>%08d\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%s\n<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>%s\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧԺ<EFBFBD><EFBFBD>%s\n<EFBFBD><EFBFBD>ѧרҵ<EFBFBD><EFBFBD>%s\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%d\n",
target_student.id,target_student.name,target_student.gender,
target_student.college,target_student.major,target_student.Class);
system("pause");
system("cls");
ggg:
printf("1.<2E>γ̳ɼ<CCB3>\n2.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n3.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԤԼϵͳ\n4.<2E>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>\n5.<2E>˳<EFBFBD>ϵͳ\n");
printf("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>");
//ѧ<><D1A7><EFBFBD><EFBFBD>ɼ<EFBFBD>
int op;
scanf("%d",&op);
if(op==1)
{
printf("ѧ<EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>......\n");
Sleep(1000);
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޿γ̵ijɼ<EFBFBD><EFBFBD><EFBFBD>ѯ......\n");
Sleep(2000);
system("cls");
//<2F><>ȡ<EFBFBD>γ<EFBFBD><CEB3>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD>
Student_Watch_Grade(&target_student);
system("pause");
}
else if(op==2)
{
//a*100000+ b*10000+c*1000+d*10+e
// 21
int location = target_student.dorm_index;
int bed = location%10;
location/=10;
int area = location%1000;
location/=1000;
int AB = location%10;
char ab;
if(AB==1)
ab='A';
else if(AB==2)
ab='B';
int buliding = location/10;
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ã<EFBFBD>%d<><64> %c%d %d<>Ŵ<EFBFBD>\n",buliding,ab,area,bed);
ops:
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>ס<EFBFBD>ޣ<EFBFBD><EFBFBD><EFBFBD>1.<2E><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD> 2.<2E><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>룩:");
int opt;
scanf("%d",&opt);
if(opt==1)
{
FILE* Out_live=fopen(ROOM_CHANGE_REQUESTS_URL,"a+");
rewind(Out_live);
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><E1BDBB>,<2C>ظ<EFBFBD><D8B8><EFBFBD>
int stud_id;
char reason[50];
char answer[10];
int result;
bool whether_find=false;
bool whether_reply=false;
while ((result = fscanf(Out_live,"%d %s %s",&stud_id,reason,answer))==3)
{
if(stud_id==target_student.id)
{
whether_find=true;
size_t len=strcspn(answer, "\n"); // <20>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD>λ<EFBFBD><CEBB>
answer[len]='\0'; // <20>ڻ<EFBFBD><DABB>з<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>ֹ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
if (strcmp(answer,"IamML")!=0)
{
// <20><><EFBFBD><EFBFBD><E1BDBB><EFBFBD>ѻظ<D1BB>
whether_reply = true;
}
break;
}
}
if (whether_find)
{
if (whether_reply)
{
printf("Has been replied, please check\n");
} else
{
printf("Has been submitted, but no answer yet, please wait\n");
}
}
else
{
printf("Hasn't submit\n");
char reasons[50];
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>20<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD>");
scanf("%s", reasons);
fprintf(Out_live, "%d %s IamML\n", target_student.id, reasons);
printf("<EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
}
fclose(Out_live);
}
else if(opt==2)
{
printf("<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
}
else if(opt!=1&&opt!=2)
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
goto ops;
}
}
else if(op==3)
{
//<2F><><EFBFBD><EFBFBD>ϵͳ
printf("ѧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>......\n");
Sleep(1000);
system("pause");
system("cls");
int bn1 = Counter(BUS_ROUTE_ONE);
int bn2 = Counter(BUS_ROUTE_TWO);
Moneys_System(&target_student,student_number,bus_schedule1,bus_schedule2,bn1,bn2);
}
else if(op==4)
{
int time_count=0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>޸<EFBFBD>ѧ<EFBFBD><D1A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
password_enter1:
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
long long former_password;
scanf("%lld",&former_password);
if(former_password==target_student.password)
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
long long new_password;
scanf("%lld",&new_password);
target_student.password = new_password;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
FILE* fStudent= fopen(STUDENT_PASSWORD_URL,"a+");
fprintf(fStudent,"%s %lld\n",target_student.id,encrypt(target_student.password));
fclose(fStudent);
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸ijɹ<EFBFBD><EFBFBD><EFBFBD>\n");
Sleep(2000);
system("cls");
}
else
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
time_count++;
//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(time_count>3)
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
Sleep(2000);
system("cls");
goto choice_two;
}
jjj1:
int b;
printf("<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
scanf("%d",&b);
if(b==1)
{
goto password_enter1;
}
else if(b==0)
{
system("cls");
}
else
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
goto jjj1;
}
}
}
else if(op==5)
{
printf("<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD>\n");
Sleep(2000);
system("cls");
}
else
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
goto ggg;
}
}
choice_two:
int a2;
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
scanf("%d",&a2);
if(a2==1)
{
system("cls");
goto start;
}
else if(a2==0)
{
system("cls");
}
else
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
goto choice_two;
}
break;
case 3:
//<2F><>Ա<EFBFBD><D4B1>¼
printf("<EFBFBD><EFBFBD><EFBFBD>뵼Ա<EFBFBD>˵<EFBFBD>¼ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD>ֱ<EFBFBD>Ӹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>114514<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
int Direct_id;
long long Direct_password;
scanf("%d",&Direct_id);
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>루1919810<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
scanf("%lld",&Direct_password);
if(Direct_id==DIRECT_ID&&Direct_password==DIRECT_PASSWORD)
{
printf("<EFBFBD><EFBFBD>¼<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>\n");
Sleep(2000);
system("cls");
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...");
Sleep(2000);
system("cls");
printf("1.У<><D0A3>ס<EFBFBD>޴<EFBFBD><DEB4><EFBFBD> 2.<2E>˳<EFBFBD>ҳ<EFBFBD><D2B3>\n");
printf("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>");
int op3;
tar:
scanf("%d",&op3);
if(op3==1)
{
int student_id;
char reason[50];
char reply[50];
int result;
int choice1;
FILE* fp = fopen(ROOM_CHANGE_REQUESTS_URL,"r+");
FILE *temp_fp = fopen("temp.txt","a+");
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊδ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
while(fscanf(fp,"%d %s %s",&student_id,reason,reply)==3)//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>β
{
if(strcmp(reply,"IamML")!=0)
{
continue;
}
else
{
//<2F><>Ա<EFBFBD><D4B1>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>
printf("ѧ<EFBFBD><EFBFBD>:%d ԭ<><D4AD>:%s\n",student_id,reason);
do{
printf("<EFBFBD>Ƿ<EFBFBD>ͬ<EFBFBD><EFBFBD>ta<EFBFBD>߶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD>1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>");
scanf("%d",&choice1);
if(!(choice1==0 || choice1==1))
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
}
else if(choice1==1)
{
strcpy(reply,"ͬ<EFBFBD><EFBFBD>");
fprintf(temp_fp,"%d %s %s\n",student_id,reason,reply);
}
else
{
strcpy(reply,"<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>");
fprintf(temp_fp,"%d %s %s\n",student_id,reason,reply);
}
}while(choice1!=0 && choice1!=1);
}
}
fclose(fp);
fclose(temp_fp);
remove(ROOM_CHANGE_REQUESTS_URL);
rename("temp.txt",ROOM_CHANGE_REQUESTS_URL);
}
else if (op3==2)
{
printf("<EFBFBD>˳<EFBFBD>ϵͳ\n");
}
else
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
goto tar;
}
}
choice_three:
int a3;
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
scanf("%d",&a3);
if(a3==1)
{
system("cls");
goto start;
}
else if(a3==0)
{
system("cls");
}
else
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
goto choice_three;
}
case 4:
printf("<EFBFBD>˳<EFBFBD>ϵͳ\n");
break;
}
}
choice_start:
printf("Ϊ<EFBFBD><EFBFBD>չʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չʾ\n");
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>밴1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>밴0<EFBFBD><EFBFBD>");
int choice_sort;
scanf("%d",&choice_sort);
if(choice_sort==1)
{
// <20><><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Sleep(500);
system("cls");
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD>\nMath\nEnglish\nComputer\nPolitics\n");
printf("GPA\nid\nClass\n<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD>");
char choices[20];
scanf("%s",choices);
while(true)
{
if(strcmp(choices,"Math")!=0&&strcmp(choices,"English")!=0&&strcmp(choices,"Computer")!=0&&strcmp(choices,"Politics")!=0&&strcmp(choices,"GPA")!=0&&strcmp(choices,"id")!=0&&strcmp(choices,"Class")!=0)
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
continue;
}
else
{
break;
}
}
printf("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-1<><31><EFBFBD><EFBFBD>");
while(true)
{
int order;
scanf("%d",&order);
Sleep(500);
system("cls");
if(order==1||order==(-1))
{
INDEX=order;
sortByCourseScore(students,student_number,choices);
INDEX=1; //<2F><>ԭ
break;
}
else
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
continue;
}
}
}
else if(choice_sort==0)
{
printf("<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
Sleep(2000);
system("cls");
}
else
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
Sleep(2000);
system("cls");
goto choice_start;
}
// <20><><EFBFBD>ҽڵ<D2BD>
// int searchId = 1002;
// TreeNode* result = find(root, searchId);
// if (result!=NULL)
// {
// printf("\n<>ҵ<EFBFBD>IDΪ%d<><64>ѧ<EFBFBD><D1A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>%s\n", searchId, result->student->name);
// }
// else
// {
// printf("\nδ<6E>ҵ<EFBFBD>IDΪ%d<><64>ѧ<EFBFBD><D1A7>\n", searchId);
// }
// <20>ͷŶ<CDB7><C5B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
freeTree(root);
free(students);
free(teachers);
free(colleges);
free(majors);
system("pause");
return 0;
}
//<2F>Ӻ<EFBFBD><D3BA><EFBFBD>
//<2F><><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>ѧԺ<D1A7><D4BA><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD><D3B1>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><E6B4A2> "colleges.txt",<2C><><EFBFBD><EFBFBD>, <20>򴴽<EFBFBD><F2B4B4BD>ļ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>-><3E>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7>Ǵ<EFBFBD><C7B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-><3E><>"%d %s\n"<22><>ʽд<CABD><D0B4>COLLEGE_URL<52>ļ<EFBFBD>-><3E><><EFBFBD><EFBFBD>college_number
//<2F><><EFBFBD><EFBFBD>number<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޷<EFBFBD><DEB7><EFBFBD>ֵ
//Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>ʲô<CAB2><C3B4><EFBFBD><EFBFBD>
//Ӧ<><D3A6><EFBFBD>ڿ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>printf(" ");
void Admin_College(int* number)
{
int college_number=*number+1;
FILE *college_file=fopen(COLLEGE_URL,"a+");
char college_name[25];
while (scanf("%s",college_name)==1)
{
int has_digit=0;
for (int i=0;i<strlen(college_name);i++)
{
if(isdigit(college_name[i]))
{
has_digit=1;
break;
}
}
if (!has_digit)
{
fprintf(college_file,"%d %s\n",college_number*1000,college_name);
college_number++;
}
}
fclose(college_file);
college_number-=1;
(*number)=college_number;
}
//<2F><>ȡ<EFBFBD>洢ѧԺ<D1A7><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void Write_File_College_Number(int number)
{
FILE* fp = fopen(COLLEGE_NUMBER_URL,"w+");
fprintf(fp,"%d",number);
fclose(fp);
}
void Read_File_College_Number(int *number)
{
FILE *fp = fopen(COLLEGE_NUMBER_URL, "r+");
if(fp)
{
int result = fscanf(fp, "%d", number);
if (result == 1)
{
return;
}
else
{
*number = 0;
}
fclose(fp);
}
else
{
*number = 0;
}
}
//<2F><>ȡ<EFBFBD>ļ<EFBFBD>"colleges.txt"<22>е<EFBFBD>ѧԱ<D1A7><D4B1>Ϣ<EFBFBD><CFA2><EFBFBD>洢Ϊ<E6B4A2><EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A3AC><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>
Colleges* Read_College(int college_number)
{
FILE *college_file=fopen(COLLEGE_URL,"r");
if(college_file==NULL)
{
perror("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><EFBFBD>");
return NULL;
}
Colleges* colleges = (Colleges*)malloc(sizeof(Colleges) * (college_number));
if(colleges==NULL)
{
perror("<EFBFBD><EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>");
fclose(college_file);
return NULL;
}
for(int i=0;i<college_number;i++)
{
if (fscanf(college_file, "%d %s", &colleges[i].id, colleges[i].college_name) != 2)
{
perror("<EFBFBD><EFBFBD>ȡ<EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><EFBFBD>");
free(colleges);
fclose(college_file);
return NULL;
}
}
fclose(college_file);
return colleges;
}
// <20><>ȡ<EFBFBD>ļ<EFBFBD><C4BC>е<EFBFBD>רҵ<D7A8><D2B5><EFBFBD><EFBFBD>
void Read_File_Major_Number(int *major_number)
{
FILE *fp = fopen(MAJOR_NUMBER_URL, "r");
if (fp)
{
if(fscanf(fp, "%d",major_number)!=1)
{
*major_number=0;
}
}
else
{
*major_number = 0; // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>Ϊ0
}
fclose(fp);
}
// <20><><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>רҵ<D7A8><D2B5>Ϣ
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>--ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧԺid<69><64>רҵ<D7A8><D2B5><EFBFBD><EFBFBD>--<2D><><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>Ӧ<EFBFBD><D3A6>ѧԺ<D1A7><D4BA>--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>רҵid
// <20><>"%d %s %d\n",רҵid,רҵ<D7A8><D2B5><EFBFBD><EFBFBD>ѧԺid <20><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD> MAJOR_URL
//<2F><>ͷ<EFBFBD><CDB7>Ҫ<EFBFBD><D2AA>printf("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧԺid<69><64>רҵ<D7A8><D2B5><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD>س<EFBFBD><D8B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ctrl+Zֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EBA3A9>\n");
void Admin_Major(Colleges* colleges, int college_number,int* major_number)
{
FILE *major_file = fopen(MAJOR_URL, "a+");
if(!major_file){
perror("<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>");
return;
}
int major_counter=*major_number;
int college_id;
char major_name[23];
while(scanf("%d %s",&college_id,major_name)==2)
{
int valid_college=0;
for(int i=0;i<college_number;i++)
{
if(college_id==colleges[i].id)
{
valid_college=1;
++major_counter;
fprintf(major_file, "%d %s %d\n",college_id+(major_counter),
major_name,college_id);
break;
}
}
if(!valid_college){
printf("Invalid college ID. Please enter a valid college ID.\n");
}
}
fclose(major_file);
*major_number = major_counter;
}
void Write_File_Major_Number(int number)
{
FILE* fp = fopen(MAJOR_NUMBER_URL, "w");
if (!fp)
{
perror("Failed to open Major_number.txt for writing");
exit(EXIT_FAILURE);
}
fprintf(fp,"%d",number); //д<><D0B4><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>
fclose(fp);
}
// ջ-<2D><>ȡרҵ<D7A8><D2B5>Ϣ
//<2F><>"%d %s %d", &majors[i].id, majors[i].name, &majors[i].college_id д<><D0B4><EFBFBD>ļ<EFBFBD> MAJOR_URL
Major* Read_Major(int major_number)
{
FILE *file = fopen(MAJOR_URL,"r");
if(!file){
perror("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>");
return NULL;
}
Major* majors = (Major*)malloc(sizeof(Major)*major_number);
if (!majors){
perror("<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>");
return NULL;
}
for (int i = 0; i <major_number;i++) {
fscanf(file, "%d %s %d", &majors[i].id, majors[i].name, &majors[i].college_id);
}
fclose(file);
return majors;
}
//<2F><>ӡѧԺ<D1A7><D4BA>Ϣ
void Print_College(Colleges* colleges, int college_number)
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪѧԺ<EFBFBD>б<EFBFBD>\n");
for(int i=0;i<college_number;i++)
{
printf("%05d %s\n",colleges[i].id,colleges[i].college_name);
}
}
///<2F><EFBFBD><E9B2A2><EFBFBD><EFBFBD>
// <20><><EFBFBD>ݿγ<DDBF><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD>Ӧ<EFBFBD>ijɼ<C4B3>
int getCourseScore(Student* student, const char* courseName)
{
if (strcmp(courseName, "Math") == 0)
{
return student->scores.Math;
}
else if (strcmp(courseName, "English") == 0)
{
return student->scores.English;
}
else if (strcmp(courseName, "Computer") == 0)
{
return student->scores.Computer;
}
else if (strcmp(courseName, "Politics") == 0)
{
return student->scores.Politics;
}
else if (strcmp(courseName,"GPA")==0)
{
return student->GPA;
}
else if (strcmp(courseName,"id")==0)
{
return student->id;
}
else if (strcmp(courseName,"Class")==0)
{
return student->Class;
}
return -1; // <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ҵ<EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD>Ŀγ̣<CEB3><CCA3><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Чֵ
}
// <20>ȽϺ<C8BD><CFBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿγ<DDBF><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int compareStudents(Student* student1, Student* student2, const char* courseName) {
// <20><>ȡָ<C8A1><D6B8><EFBFBD>γ̵ijɼ<C4B3>
int score1 = getCourseScore(student1, courseName);
int score2 = getCourseScore(student2, courseName);
// <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ҵ<EFBFBD><D2B5>γ̵ijɼ<C4B3><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸ģ<DEB8>
if (score1 == -1 && score2 == -1)
{
return 0;
}
if (score1 == -1) return INDEX; // student1 <20>ź<EFBFBD>
if (score2 == -1) return -1*INDEX; // student2 <20>ź<EFBFBD>
// <20><><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
if (score1 < score2)
{
return INDEX;
}
else if (score1 > score2)
{
return (-1)*INDEX;
}
return 0; // <20><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD>0
}
// <20><EFBFBD><E9B2A2><EFBFBD>򣺺ϲ<F2A3BABA><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void merge(Student* array, int left, int mid, int right, const char* courseName) {
int n1 = mid - left + 1;
int n2 = right - mid;
// <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
Student* leftArray = (Student*)malloc(n1 * sizeof(Student));
Student* rightArray = (Student*)malloc(n2 * sizeof(Student));
for (int i = 0; i < n1; i++)
{
leftArray[i] = array[left + i];
}
for (int j = 0; j < n2; j++)
{
rightArray[j] = array[mid + 1 + j];
}
int i=0, j=0, k=left;
// <20>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while (i<n1&&j<n2)
{
if(compareStudents(&leftArray[i],&rightArray[j],courseName)<=0)
{
array[k] = leftArray[i];
i++;
}
else
{
array[k]=rightArray[j];
j++;
}
k++;
}
// <20><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3>Ԫ<EFBFBD><D4AA>
while(i<n1)
{
array[k]=leftArray[i];
i++;
k++;
}
while(j<n2)
{
array[k]=rightArray[j];
j++;
k++;
}
// <20>ͷ<EFBFBD><CDB7><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
free(leftArray);
free(rightArray);
}
// <20><EFBFBD><E9B2A2><EFBFBD><EFBFBD><EFBFBD>ݹ麯<DDB9><E9BAAF>
void mergeSort(Student* array, int left, int right,const char* courseName) {
if (left<right)
{
int mid=left+(right-left)/2;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mergeSort(array, left, mid, courseName);
mergeSort(array, mid + 1, right, courseName);
// <20>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
merge(array, left, mid, right, courseName);
}
}
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2>洢ѧ<E6B4A2><D1A7><EFBFBD><EFBFBD>Ϣ
// <20><><EFBFBD><EFBFBD><EFBFBD>ڵ㵽<DAB5><E3B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TreeNode* insert(TreeNode* root, Student* student)
{
if (root == NULL)
{
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
newNode->student = student;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
if (student->id < root->student->id)
{
root->left = insert(root->left, student);
}
else
{
root->right = insert(root->right, student);
}
return root;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TreeNode* createBinaryTree(Student* students, int size) {
TreeNode* root = NULL;
for (int i = 0; i < size; i++)
{
root = insert(root, &students[i]);
}
return root;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void printInOrder(TreeNode* node) {
if (node != NULL) {
printInOrder(node->left);
printf("ID: %d, Name: %s, Money: %.2f\n", node->student->id, node->student->name, node->student->money);
printInOrder(node->right);
}
}
// <20>ͷŶ<CDB7><C5B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
void freeTree(TreeNode* node) {
if (node != NULL) {
freeTree(node->left);
freeTree(node->right);
free(node);
}
}
// <20><><EFBFBD>ҽڵ<D2BD>
TreeNode* find(TreeNode* root, int id) {
if (root == NULL || root->student->id == id) {
return root;
}
if (id < root->student->id) {
return find(root->left, id);
} else {
return find(root->right, id);
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>γ̳ɼ<CCB3><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><D1A7><EFBFBD><EFBFBD>Ϣ
void sortByCourseScore(Student* students, int size, const char* courseName) {
// <20><EFBFBD><E9B2A2><EFBFBD>򣺰<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>γ̳ɼ<CCB3><C9BC><EFBFBD><EFBFBD><EFBFBD>
mergeSort(students,0,size-1,courseName);
// <20><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><D1A7><EFBFBD><EFBFBD>Ϣ
printf("\n<EFBFBD><EFBFBD>%s<>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><D1A7><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>-1<><31>ʾ<EFBFBD><CABE>Ϣδ¼<CEB4><EFBFBD><EBA3A9>\n",courseName);
for (int i=0;i<size;i++)
{
int score = getCourseScore(&students[i],courseName);
if(strcmp(courseName,"id")==0)
{
printf("ID: %08d, Name: %-12s,Class: %08d\n", students[i].id, students[i].name,score);
}
else if(strcmp(courseName,"Math")==0||strcmp(courseName,"English")==0||strcmp(courseName,"Computer")==0)
{
printf("ID: %08d, Name: %-12s, Class: %5d, %s Score: %3d\n", students[i].id, students[i].name, students[i].Class,courseName, score);
}
else if(strcmp(courseName,"Class")==0)
{
printf("ID: %08d, Name: %-12s, Class: %5d\n", students[i].id, students[i].name, students[i].Class);
}
}
}
//<2F>ڸ<EFBFBD><DAB8><EFBFBD>ѧԺ<D1A7><D4BA>ѡ<EFBFBD><D1A1>ѧԺ<D1A7><D4BA>רҵ bool:true/false
bool select_college(Colleges* colleges,int college_number,char* college)
{
Print_College(colleges,college_number);
printf("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ѧԺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧԺ<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>\n");
int choice;
scanf("%d",&choice);
for(int i=0;i<college_number;i++)
{
if(colleges[i].id == choice)
{
strcpy(college,colleges[i].college_name);
return true;
}
}
return false;
}
bool select_major(Colleges* colleges,int college_number,
Major* majors,int major_number,
char* college,char* major)
{
//<2F><><EFBFBD><EFBFBD>college<67><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>רҵ
//<2F>Ȼ<EFBFBD>ȡcollege<67><65>ѧԺid<69><64><EFBFBD>ٸ<EFBFBD><D9B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>id<69>ҵ<EFBFBD>һϵ<D2BB><CFB5>רҵ
int college_index = 0;
for(int j=0;j<college_number;j++)
{
if(strcmp(colleges[j].college_name,college)==0)
{
college_index = colleges[j].id;
}
}
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ѧԺ<EFBFBD>µ<EFBFBD>רҵ<EFBFBD>б<EFBFBD>\n");
for(int i=0;i<major_number;i++)//ȷ<><C8B7><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>רҵ
{
if(majors[i].college_id == college_index)
{
printf("%05d %s : %05d %s\n",colleges[i].id,colleges[i].college_name,
majors[i].id,majors[i].name);
}
}
printf("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>רҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>רҵ<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>\n");
int choice;
scanf("%d",&choice);
for(int i=0;i<major_number;i++)
{
if(majors[i].id == choice)
{
//<2F>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD>רҵ<D7A8>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>ֵ<EFBFBD><D6B5>major
strcpy(major,majors[i].name);
return true;
}
}
return false;
}
//<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0>ѧ<EFBFBD><D1A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void Read_File_Student_Number(int* student_number)
{
FILE *fp = fopen(STUDENT_NUMBER_URL, "r");
if(fp)
{
if(fscanf(fp,"%d",student_number)!=1)
{
*student_number = 0;
}
fclose(fp);
}
else
{
*student_number = 0;
}
}
//<2F><>ʼ<EFBFBD><CABC>ѧ<EFBFBD><D1A7>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
void inputStudentInfo(Colleges* colleges,int college_number,Major* majors,int major_number,
int* student_number)
{
int n;
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ӽ<EFBFBD>ϵͳ<EFBFBD><EFBFBD>ѧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ");
scanf("%d", &n);
Student* students = (Student*)malloc(sizeof(Student) * n);
*student_number += n;
for (int i=0; i<n; i++)
{
printf("\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><EFBFBD> %d <20><><EFBFBD><EFBFBD>Ϣ:\n",i+1);
//ѧ<><D1A7>
printf("ID: ");
scanf("%d", &students[i].id);
//<2F><><EFBFBD><EFBFBD>
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ");
scanf("%s", students[i].name);
//<2F>Ա<EFBFBD>ѡ<EFBFBD><D1A1>
printf("<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>Ů<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
char gender[3];
while(true)
{
scanf("%s", gender);
if(strcmp(gender,"<EFBFBD><EFBFBD>")==0 || strcmp(gender,"Ů")==0)
{
strcpy(students[i].gender,gender);
break;
}
else
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
}
}
//ѧԺѡ<D4BA><D1A1>
select_college(colleges,college_number,students[i].college);
//רҵѡ<D2B5><D1A1>
select_major(colleges,college_number,majors,major_number,
students[i].college,students[i].major);
//<2F><EFBFBD><E0BCB6><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD>λ<EFBFBD><CEBB>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>
printf("<EFBFBD>༶ID:<3A><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Ч<EFBFBD><D0A7><EFBFBD>֣<EFBFBD>");
int class_id;
while(true)
{
scanf("%d", &class_id);
if(class_id>=1000 && class_id<=9999)
{
students[i].Class = class_id;
break;
}
else
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
}
}
//<2F>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
students[i].money = 0;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊѧ<CEAA><D1A7>
students[i].password = students[i].id;
FILE* fp = fopen(STUDENT_DATA_URL,"a+");
if(fp)
{
fprintf(fp,"%d %s %s %s %s %d\n",students[i].id,students[i].name,students[i].gender,
students[i].college,students[i].major,students[i].Class);
}
fclose(fp);
free(students);
}
}
//<2F><><EFBFBD><EFBFBD>ѧ<EFBFBD><D1A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void Write_File_Student_Number(int student_number)
{
FILE *fp = fopen(STUDENT_NUMBER_URL, "w");
if(fp)
{
fprintf(fp,"%d",student_number);
}
fclose(fp);
}
//<2F><><EFBFBD>ļ<EFBFBD><C4BC>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>Students<74><73><EFBFBD><EFBFBD>
Student* Read_Students(int student_number)
{
Student* students = (Student*)malloc(sizeof(Student)*(student_number+1));
FILE* fp = fopen(STUDENT_DATA_URL,"r");
if(fp)
{
for(int i=0;i<student_number;i++)
{
fscanf(fp,"%d %s %s %s %s %d\n",&students[i].id,students[i].name,students[i].gender,
&students[i].college,&students[i].major,&students[i].Class);
}
}
fclose(fp);
return students;
}
//<2F><>ѧ<EFBFBD><D1A7>δ<EFBFBD><CEB4>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void Undefined_Inital_Stu(Student* students,int student_number)
{
for(int i=0;i<student_number;i++)
{
students[i].money=0;
students[i].dorm_index=-1;
students[i].scores.Computer=-1;
students[i].scores.English=-1;
students[i].scores.Math=-1;
students[i].scores.Politics=-1;
students[i].GPA = -1;
}
}
//<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD>Ľ<EFBFBD>ʦ<EFBFBD><CAA6><EFBFBD><EFBFBD>
void Read_File_Teacher_Number(int* teacher_number)
{
FILE *fp = fopen(TEACHER_DATA_URL, "r");
if(fp)
{
if(fscanf(fp,"%d",teacher_number)!=1)
{
*teacher_number = 0;
}
}
else
{
*teacher_number = 0;
}
fclose(fp);
}
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʦ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
void inputTeacherInfo(Colleges* colleges,Course courses[],int college_number,int* teacher_number)
{
int n;
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD>Ľ<EFBFBD>ʦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ");
scanf("%d", &n);
*teacher_number += n;
Teacher* teachers=NULL;
if(n>0)
teachers = (Teacher*)malloc(sizeof(Teacher) * n);
for (int i=0;i<n;i++)
{
printf("\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʦ %d <20><><EFBFBD><EFBFBD>Ϣ:\n",i+1);
//<2F>̹<EFBFBD><CCB9><EFBFBD>
printf("ID: ");
scanf("%d", &teachers[i].id);
//<2F><><EFBFBD><EFBFBD>
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ");
scanf("%s", teachers[i].name);
//<2F>Ա<EFBFBD>ѡ<EFBFBD><D1A1>
printf("<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>Ů<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
char gender[3];
while(true)
{
scanf("%s", gender);
if(strcmp(gender,"<EFBFBD><EFBFBD>")==0 || strcmp(gender,"Ů")==0)
{
strcpy(teachers[i].gender,gender);
break;
}
else
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
}
}
//ѧԺѡ<D4BA><D1A1>
select_college(colleges,college_number,teachers[i].college);
//<2F>γ<EFBFBD>ѡ<EFBFBD><D1A1>
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>пγ<EFBFBD>: \n");
for(int j=0;j<4;j++)
{
printf("%s\n",courses[j].name);
}
while(true)
{
printf("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD>ʦ<EFBFBD><EFBFBD><EFBFBD>ڿγ̣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD>");
char course_name[20];
scanf("%s", course_name);
bool result = false;
for(int j=0;j<4;j++)
{
if(strcmp(course_name,courses[j].name)==0)
{
strcpy(teachers[i].course,courses[j].name);
result = true;
break;
}
}
if(result) break;
}
//<2F>ڿΰ༶ѡ<E0BCB6><D1A1>
while(true)
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿΰ༶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD>");
scanf("%d",&teachers[i].teaching_class);
if(teachers[i].teaching_class>=1000 && teachers[i].teaching_class<=9999)
{
break;
}
else
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>̹<EFBFBD><CCB9><EFBFBD>
teachers[i].password = teachers[i].id;
FILE* fp = fopen(TEACHER_DATA_URL,"a+");
if(fp)
{
fprintf(fp,"%d %s %s %s %s %d\n",teachers[i].id,teachers[i].name,teachers[i].gender,
teachers[i].college,teachers[i].course,teachers[i].teaching_class);
}
fclose(fp);
}
if(teachers!=NULL)
free(teachers);
}
//<2F><><EFBFBD>½<EFBFBD>ʦ<EFBFBD><CAA6><EFBFBD><EFBFBD>
void Write_File_Teacher_Number(int teacher_number)
{
FILE *fp = fopen(TEACHER_NUMBER_URL, "w");
if(fp)
{
fprintf(fp,"%d",teacher_number);
}
}
//<2F><><EFBFBD>ļ<EFBFBD><C4BC>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>Teachers<72><73><EFBFBD><EFBFBD>
Teacher* Read_Teachers(int teacher_number)
{
Teacher* teachers = (Teacher*)malloc(sizeof(Teacher)*(teacher_number+1));
FILE* fp = fopen(TEACHER_DATA_URL,"r");
if(fp)
{
for(int i=0;i<teacher_number;i++)
{
fscanf(fp,"%d %s %s %s %s %d\n",&teachers[i].id,teachers[i].name,teachers[i].gender,
&teachers[i].college,teachers[i].course,&teachers[i].teaching_class);
}
fclose(fp);
return teachers;
}
return NULL;
}
//<2F><>ʦ<EFBFBD><CAA6>¼
bool Teacher_Login(Teacher* teachers,Teacher *target_teacher,int teacher_number)
{
int count = 0;
printf("<EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>ֱ<EFBFBD>Ӹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>00010001<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
while(true)
{
if(count==3)
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD>\n");
return false;
}
int id;
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̹<EFBFBD><EFBFBD>ţ<EFBFBD>");
scanf("%d",&id);
long long password;
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD>");
scanf("%lld",&password);
for(int i=0;i<teacher_number;i++)
{
if(teachers[i].id == id && teachers[i].password == password)
{
printf("<EFBFBD><EFBFBD>¼<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>\n");
*target_teacher = teachers[i];
return true;
}
}
++count;
printf("<EFBFBD>̹<EFBFBD><EFBFBD>Ż<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
}
}
//<2F><>ʦ¼<CAA6><C2BC>ѧ<EFBFBD><D1A7><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
void Teacher_Import_Grade(Student*students,int student_number,
Teacher *teacher,int teacher_number,
Course* courses)
{
char temp_course_url[30];
sprintf(temp_course_url,"%s.txt",teacher->course);
//<2F><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ʽΪ<CABD><CEAA><EFBFBD>̹<EFBFBD><CCB9>ſγ<C5BF><CEB3><EFBFBD><EFBFBD><EFBFBD><E0BCB6>.txt<78><74><EFBFBD>磺Math.txt
//<2F><><EFBFBD>ݴ洢<DDB4><E6B4A2>ʽ<EFBFBD><CABD>ѧ<EFBFBD>żӿո<D3BF><D5B8>ӳɼ<D3B3><C9BC><EFBFBD><EFBFBD>磺20245738 90
FILE* fp = fopen(temp_course_url,"a+");
for(int i=0;i<student_number;i++)
{
if(students[i].Class == teacher->teaching_class)
{
if(strcmp(teacher->course,"Math")==0)
{
if(students[i].scores.Math == (-1))
{
printf("%d %s <20><> <20>ߵ<EFBFBD><DFB5><EFBFBD>ѧ <20>ɼ<EFBFBD>Ϊ<EFBFBD><CEAA>",students[i].id,students[i].name);
scanf("%d",&students[i].scores.Math);
fprintf(fp,"%d %d\n",students[i].id,students[i].scores.Math);
}
else continue;
}
else if(strcmp(teacher->course,"Politics")==0)
{
if(students[i].scores.Politics == (-1))
{
printf("%d %s <20><> ˼<><CBBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB7A8> <20>ɼ<EFBFBD>Ϊ<EFBFBD><CEAA>",students[i].id,students[i].name);
scanf("%d",&students[i].scores.Politics);
fprintf(fp,"%d %d\n",students[i].id,students[i].scores.Politics);
}
else continue;
}
else if(strcmp(teacher->course,"English")==0)
{
if(students[i].scores.English == (-1))
{
printf("%d %s <20><> <20><>ѧӢ<D1A7><D3A2> <20>ɼ<EFBFBD>Ϊ<EFBFBD><CEAA>",students[i].id,students[i].name);
scanf("%d",&students[i].scores.English);
fprintf(fp,"%d %d\n",students[i].id,students[i].scores.English);
}
else continue;
}
else if(strcmp(teacher->course,"Computer")==0)
{
if(students[i].scores.Computer == (-1))
{
printf("%d %s <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD><C6BB><EFBFBD> <20>ɼ<EFBFBD>Ϊ<EFBFBD><CEAA>",students[i].id,students[i].name);
scanf("%d",&students[i].scores.Computer);
fprintf(fp,"%d %d\n",students[i].id,students[i].scores.Computer);
}
else continue;
}
Update_GPA(&students[i],courses,student_number);
}
}
fclose(fp);
printf("<EFBFBD>ɼ<EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>\n");
}
//<2F><><EFBFBD><EFBFBD>ѧ<EFBFBD><D1A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GPA
double Total_GPA_Calculation(Student* student,Course courses[],int student_number)
{
double total_credit = 0; // ѧ<><D1A7><EFBFBD>ܺ<EFBFBD>
//ѧ<>Ƴɼ<C6B3><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ѧ<EFBFBD><D1A7>û<EFBFBD><C3BB>ѡ<EFBFBD>ÿγ̣<CEB3><CCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><D1A7>
total_credit+=(student->scores.Math!=(-1)?courses[0].credit:0);
total_credit+=(student->scores.English!=(-1)?courses[1].credit:0);
total_credit+=(student->scores.Computer!=(-1)?courses[2].credit:0);
total_credit+=(student->scores.Politics!=(-1)?courses[3].credit:0);
if(total_credit==0)
return 0;
double total_grade = 0;// <20>ܳɼ<DCB3>
total_grade+=courses[0].credit*(student->scores.Math>=60?(student->scores.Math/10.0-5):0);
total_grade+=courses[1].credit*(student->scores.English>=60?(student->scores.English/10.0-5):0);
total_grade+=courses[2].credit*(student->scores.Computer>=60?(student->scores.Computer/10.0-5):0);
total_grade+=courses[3].credit*(student->scores.Politics>=60?(student->scores.Politics/10.0-5):0);
if(total_grade==0)
return 0;
return total_grade/total_credit;
}
void Inital_password(Student* students,int student_number,Teacher* teachers,int teacher_number)
{
for(int i=0;i<student_number;i++)
{
students[i].password = students[i].id;
}
for(int i=0;i<teacher_number;i++)
{
teachers[i].password = teachers[i].id;
}
}
//<2F><><EFBFBD><EFBFBD>ij<EFBFBD><C4B3>ѧ<EFBFBD><D1A7><EFBFBD><EFBFBD>GPA
void Update_GPA(Student* student,Course courses[], int student_number)
{
double temp_GPA = Total_GPA_Calculation(student,courses,student_number);
student->GPA = temp_GPA;
}
// forѭ<72><D1AD>-><3E>ԡ<EFBFBD>%d\n<><6E><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>-><3E><EFBFBD><EFBFBD>壨 students.dorm_index<65><78>
//<2F><><EFBFBD><EFBFBD> numStudents<74><73>ѧ<EFBFBD><D1A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//Student<6E><EFBFBD><E1B9B9>
void assignDormitory(Student *students, int numStudents)
{
int index=0;
for(int a=1;a<=6;a++)//¥<><C2A5>
{
for(int b=1;b<=2;b++)//1<><31>A<EFBFBD><41><EFBFBD><EFBFBD>2<EFBFBD><32>B<EFBFBD><42>
{
for(int c=1;c<=6;c++)//¥<><C2A5><EFBFBD><EFBFBD>
{
for(int d=1;d<=35;d++)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
for(int e=1;e<=4;e++)//<2F><>λ
{
if(index>=numStudents)
return;
students[index].dorm_index=a*100000+
b*10000+c*1000+d*10+e; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD>
// printf("%d\n",students[index].dorm_index);
index++;
}
}
}
}
}
}
bool Student_Login(Student* students,Student *target_student,int student_number)
{
int count = 0;
printf("<EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊѧ<EFBFBD>ţ<EFBFBD>(<28><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>ֱ<EFBFBD>Ӹ<EFBFBD><D3B8><EFBFBD><EFBFBD>˺ţ<CBBA>20245865)<29><>\n");
while(true)
{
if(count==3)
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD>\n");
return false;
}
int id;
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8λѧ<EFBFBD>ţ<EFBFBD>");
scanf("%d",&id);
long long password;
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊѧ<EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD>");
scanf("%lld",&password);
for(int i=0;i<student_number;i++)
{
if(students[i].id == id && students[i].password == password)
{
printf("<EFBFBD><EFBFBD>¼<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>\n");
*target_student = students[i];
return true;
}
}
++count;
printf("ѧ<EFBFBD>Ż<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
}
}
//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><D1A7><EFBFBD>ijɼ<C4B3>
void Students_Read_Grade_File(TreeNode* root,int student_number)
{
// <20><>ȡѧ<C8A1><D1A7><EFBFBD>ɼ<EFBFBD><C9BC>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ľṹ<C4BD><E1B9B9><EFBFBD><EFBFBD>
int temp_id;
int temp_score;
FILE* fMath = fopen("Math.txt", "r");
int status;
if(fMath!=NULL)
{
while((status = fscanf(fMath, "%d %d", &temp_id, &temp_score))!=EOF && status==2)
{
TreeNode* result = find(root, temp_id);
if (result!=NULL)
{
result->student->scores.Math = temp_score;
}
}
fclose(fMath);
}
status=0;
FILE* fEnglish = fopen("English.txt", "r");
if(fEnglish!=NULL)
{
while((status = fscanf(fEnglish, "%d %d", &temp_id, &temp_score))!=EOF && status==2)
{
TreeNode* result = find(root, temp_id);
if (result!=NULL)
{
result->student->scores.English = temp_score;
}
}
fclose(fEnglish);
}
status=0;
FILE* fComputer = fopen("Computer.txt", "r");
if(fComputer!=NULL)
{
while((status = fscanf(fComputer, "%d %d", &temp_id, &temp_score))!=EOF && status==2)
{
TreeNode* result = find(root, temp_id);
if (result!=NULL)
{
result->student->scores.Computer = temp_score;
}
}
fclose(fComputer);
}
status=0;
FILE* fPolitics = fopen("Politics.txt", "r");
if(fPolitics!=NULL)
{
while((status = fscanf(fPolitics, "%d %d", &temp_id, &temp_score))!=EOF && status==2)
{
TreeNode* result = find(root, temp_id);
if (result!=NULL)
{
result->student->scores.Politics = temp_score;
}
}
fclose(fPolitics);
}
}
//ѧ<><D1A7><EFBFBD><EFBFBD>ɼ<EFBFBD>
void Student_Watch_Grade(Student* student)
{
printf("<EFBFBD>鿴ѧ<EFBFBD><EFBFBD>%d %s<>ijɼ<C4B3>\n",student->id,student->name);
student->scores.Math!=(-1)?printf("Math : %d\n", student->scores.Math):printf("Math: δ¼<CEB4><C2BC>\n");
student->scores.English!=(-1)?printf("English : %d\n", student->scores.English):printf("English: δ¼<CEB4><C2BC>\n");
student->scores.Computer!=(-1)?printf("Computer: %d\n", student->scores.Computer):printf("Computer: δ¼<CEB4><C2BC>\n");
student->scores.Politics!=(-1)?printf("Politics: %d\n", student->scores.Politics):printf("Politics: δ¼<CEB4><C2BC>\n");
student->GPA!=(-1)?printf("GPA : %.2f\n", student->GPA):printf("GPA: û<><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
}
long long quick_pow(long long base, long long power, long long mod)
{
long long result = 1;
base = base%mod;
while (power>0)
{
if (power%2==1)
{
result=(result * base) % mod;
}
power = power >> 1;
base = (base * base) % mod;
}
return result;
}
// <20><><EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD>
long long encrypt(long long original_password)
{
return quick_pow(original_password, E, N);
}
// <20><><EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD>
long long decrypt(long long ciphertext)
{
return quick_pow(ciphertext, D, N);
}
void Read_Password(Student*students,int student_number,Teacher*teachers,int teacher_number,TreeNode* root)
{
//<2F><><EFBFBD>ļ<EFBFBD><C4BC>ж<EFBFBD>ȡȫ<C8A1><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBA3AC><EFBFBD>
FILE* fStudent = fopen(STUDENT_PASSWORD_URL, "a");
fclose(fStudent);
fStudent = fopen(STUDENT_PASSWORD_URL, "r");
if(fStudent!=NULL)//һ<><D2BB>Ϊ<EFBFBD><CEAA>NULL<4C><4C><EFBFBD><EFBFBD>Ϊ<EFBFBD>ոմ<D5B8><D5B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
{
//<2F><>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ҵ<EFBFBD>ÿһ<C3BF>е<EFBFBD>id<69><64><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD><EFBFBD><EFBFBD>
int id;
long long public_key;
while(fscanf(fStudent,"%d %lld",&id,&public_key)==2)
{
TreeNode* target_stu = find(root,id);
if(target_stu!=NULL)//<2F>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
target_stu->student->password = decrypt(public_key);//<2F><><EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1>ļ<EFBFBD>
fclose(fStudent);
}
//<2F><>ȡ<EFBFBD><C8A1>ʦ<EFBFBD><CAA6><EFBFBD><EFBFBD>
FILE* fTeacher = fopen(TEACHER_PASSWORD_URL, "a");
fclose(fTeacher);
fTeacher = fopen(TEACHER_PASSWORD_URL, "r");
if(fTeacher!=NULL)
{
int id;
long long public_key;
while(fscanf(fTeacher,"%d %lld",&id,&public_key)==2)
{
//<2F><><EFBFBD>ڽ<EFBFBD>ʦ<EFBFBD><CAA6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD><D2BC><EFBFBD>
for(int i=0;i<teacher_number;i++)
{
if(teachers[i].id==id)//<2F>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD>ζ<EFBFBD><CEB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EBA3AC><EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
teachers[i].password = decrypt(public_key);
}
}
}
fclose(fTeacher);
}
}
void Read_Money(Student*students,int student_number,Teacher*teachers,int teacher_number,TreeNode* root)
{
FILE* fMoney = fopen(MONEY_URL,"a");
fclose(fMoney);
fMoney = fopen(MONEY_URL,"r");
if(fMoney!=NULL)
{
int id;
double money;
while(fscanf(fMoney,"%d %lf",&id,&money)==2)
{
TreeNode* target = find(root,id);
if(target!=NULL)
{
target->student->money = money;
}
}
fclose(fMoney);
}
}
void Moneys_System(Student* student,int student_number,BusSchedule *b1,BusSchedule *b2,int bn1,int bn2)
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>%.2lf",student->money);
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>\n");
printf("1.ԤԼ\n");
printf("2.<2E>˳<EFBFBD>\n");
int choice;
scanf("%d",&choice);
switch(choice)
{
// case 1:
// {
// float money;
// printf("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>");
// scanf("%lf",&money);
// student->money+=money;
//
// FILE* fMoney = fopen(MONEY_URL,"a");
// fprintf(fMoney,"%d %.2lf\n",student->id,student->money);
// fclose(fMoney);
// printf("Ŀǰ<C4BF><C7B0><EFBFBD><EFBFBD>Ϊ%.2lf\n",student->money);
// printf("<22><>ֵ<EFBFBD>ɹ<EFBFBD>\n");
// break;
case 1:
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԤԼѡ<EFBFBD>\n");
printf("1.<2E>೵ԤԼ\n2.<2E>˳<EFBFBD>\n");
int choice_buy;
scanf("%d",&choice_buy);
switch(choice_buy)
{
case 1:
{
int abc;
printf("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҪԤԼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
printf("1.<2E>Ϻ<EFBFBD>-<2D><><EFBFBD><EFBFBD>\n2.<2E><><EFBFBD><EFBFBD>-<2D>Ϻ<EFBFBD>\n3.<2E>˳<EFBFBD>\n");
scanf("%d",&abc);
if(abc==1)
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>೵1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>\n");
Print_Bus_Conditions(BUS_ROUTE_ONE);
}
else if(abc==2)
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>೵2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>\n");
Print_Bus_Conditions(BUS_ROUTE_TWO);
}
else
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD>˳<EFBFBD>\n");
break;
}
printf("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԤԼ<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD>೵ʱ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD>\n");
int choice_bus;
scanf("%d",&choice_bus);
printf("ԤԼ<EFBFBD>ɹ<EFBFBD>\n");
//<2F>۷<EFBFBD>
student->money-=BUS_RESERVE_COST;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FILE* fMoney = fopen(MONEY_URL,"a+");
fprintf(fMoney,"%d %.2lf\n",student->id,student->money);
fclose(fMoney);
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>%.2lf",student->money);
break;
}
// case 2:
// {
// printf("<22><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ԤԼ<D4A4><D4BC>Ϣ<EFBFBD><CFA2>\n");
// //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ԤԼ<D4A4><D4BC>Ϣ
// printf("ԤԼ<D4A4>ɹ<EFBFBD>\n");
// //<2F>۷<EFBFBD>
// student->money-=FACILITY_RESERVE_COST;
// //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// FILE* fMoney = fopen(MONEY_URL,"a+");
// fprintf(fMoney,"%d %.2f\n",student->id,student->money);
// fclose(fMoney);
// break;
// }
case 2:
{
printf("<EFBFBD>˳<EFBFBD><EFBFBD>ɹ<EFBFBD>\n");
Sleep(1000);
system("cls");
break;
}
default:
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD>˳<EFBFBD>\n");
break;
}
}
break;
}
case 2:
{
printf("<EFBFBD>˳<EFBFBD><EFBFBD>ɹ<EFBFBD>\n");
Sleep(1000);
system("cls");
}
default:
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD>˳<EFBFBD>\n");
break;
}
}
}
//<2F><EFBFBD><E0B3B5><EFBFBD><EFBFBD>
//<2F><><EFBFBD>ð೵<C3B0><E0B3B5><EFBFBD>ڼ<EFBFBD>ʱ<EFBFBD><CAB1>
void inputBusSchedule(BusSchedule *schedule)
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:");
scanf("%s",schedule->date);
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>೵ʱ<EFBFBD><EFBFBD>:");
scanf("%s",schedule->time);
}
//<2F><><EFBFBD><EFBFBD><E0B3B5><EFBFBD>ڼ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void saveBusScheduleToFile(const BusSchedule *schedule,const char *filename,int counter)
{
FILE *file = fopen(filename,"a+");
fprintf(file,"%d. ",counter);
fprintf(file,"%s ",schedule->date);
fprintf(file,"%s",schedule->time);
fprintf(file,"\n");
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>óɹ<EFBFBD>\n");
fclose(file);
}
int Counter(const char *filename)
{
FILE *file=fopen(filename, "a+");
int maxCounter=0;
int currentCounter;
while(fscanf(file,"%d.",&currentCounter)==1)
{
if(currentCounter>maxCounter)
{
maxCounter=currentCounter;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD>ʱ<EFBFBD>䣬ֱ<E4A3AC><D6B1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
fscanf(file,"%*s %*s\n");
}
fclose(file);
return maxCounter;
}
BusSchedule* Print_Bus_Conditions(const char *filename)
{
FILE*fp = fopen(filename,"a+");
fclose(fp);
fp = fopen(filename,"r");
int maxCount=0;
char Date[30];
char Time[30];
int status;
int Total_Counter = 0;
Total_Counter=Counter(filename);
BusSchedule* busSchedule = (BusSchedule*)malloc(sizeof(BusSchedule)*(Total_Counter+1));
while(fscanf(fp,"%d. %s %s",&maxCount,Date,Time)==3)
{
busSchedule[maxCount-1].index = maxCount;
strcpy(busSchedule[maxCount-1].date,Date);
strcpy(busSchedule[maxCount-1].time,Time);
printf("%d.%s %s\n",maxCount,Date,Time);
}
return busSchedule;
}
int hashFunction(int id)
{
int hashValue = 3;
const int prime = 31;
hashValue = (hashValue ^ (id & 0xffff)) * prime;
hashValue = (hashValue ^ ((id >> 2) & 0xffff)) * prime;
hashValue = (hashValue ^ (id >> 1)) * prime;
// const int prime = 31;
// int hashValue = prime*id;
return hashValue % TABLE_SIZE;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>ʼ<EFBFBD><CABC>
HashTable* createHashTable(void)
{
HashTable* table = (HashTable*)malloc(sizeof(HashTable));
if (table)
{
for(int i=0;i<TABLE_SIZE;i++)
{
table->students[i]=NULL;
}
}
return table;
}
//<2F><><EFBFBD><EFBFBD>
bool insertStudent(HashTable* table, Student* student)
{
if(!table || !student)
return false;
int index = hashFunction(student->id);
if(!table->students[index]) //δ<><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3>ͻ/<2F><>Ӧλ<D3A6><CEBB>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
table->students[index] = student;
student->next = NULL;
}
else
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3>ͻ<EFBFBD><CDBB>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// Student* newStudent = (Student*)malloc(sizeof(Student));
// copyStudent(newStudent,student);
Student* current = table->students[index];
while(current->next!=NULL)
{
current = current->next;
}
current->next = student;
student->next = NULL;
}
return true;
}
//<2F><><EFBFBD><EFBFBD>
Student* findStudent(HashTable* table, int id)
{
if (!table)
return NULL;
int index = hashFunction(id);
Student* current = table->students[index];
if(current==NULL)
return NULL;
while (current!= NULL)
{
if (current->id == id)
{
return current;
}
current = current->next;
}
return NULL;
}
// ɾ<><C9BE>
bool deleteStudent(HashTable* table, int id)
{
if (!table)
return false;
Student* theStudent = findStudent(table,id);
if(theStudent==NULL)
return false;//<2F><><EFBFBD>޴<EFBFBD><DEB4><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD>
int index = hashFunction(id);
if(table->students[index]==theStudent)
{
table->students[index] = theStudent->next;
}
else
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Student* current = table->students[index];
while(current->next != theStudent)
{
current = current->next;
}
current->next = theStudent->next;
}
free(theStudent);
return true;
}
//<2F><><EFBFBD>չ<EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool freeHashTable(HashTable* table)
{
if(!table)
return false;
//<2F>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for(int i=0;i<TABLE_SIZE;i++)
{
Student* current = table->students[i];
current = current->next;
while(current!=NULL)
{
Student* temp = current;
current = current->next;
free(temp);
}
}
free(table);
return true;
}
//<2F><EFBFBD><E0BCAD><EFBFBD><EFBFBD>ԤԼ<D4A4><D4BC><EFBFBD>ڼ<EFBFBD>ʱ<EFBFBD><CAB1>
void inputSiteSchedule(siteSchedule *schedule)
{
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD>ԤԼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:");
scanf("%s",schedule->date);
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD>ԤԼʱ<EFBFBD><EFBFBD>:");
scanf("%s",schedule->time);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD>ԤԼ<D4A4><D4BC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void saveSiteScheduleToFile(const siteSchedule *schedule,const char *filename,int counter)
{
FILE *file = fopen(filename,"a+");
fprintf(file,"%d. ",counter);
fprintf(file,"%s ",schedule->date);
fprintf(file,"%s",schedule->time);
fprintf(file,"\n");
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>óɹ<EFBFBD>\n");
fclose(file);
}

BIN
主函数.exe Normal file

Binary file not shown.

2
南湖-浑南.txt Normal file
View File

@@ -0,0 +1,2 @@
1. 2024:12:11 11:30
2. 2024:12<31><32>22 13:00

2
浑南-南湖.txt Normal file
View File

@@ -0,0 +1,2 @@
1. 2024:12:11 12:00
2. 2024:12:12 13:00