录入信息需要先后顺序,不然可能有BUG
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include<conio.h>
#include <windows.h>
struct student
{
char name[16];
char ID[10];
int classes;
char speciality[16];
char phone[16];
int age;
int year;
int month;
int day;
char dormitory[10];
int QQ;
int math[10];
int english[10];
int c[10];
}stu[100];
struct subject
{
char course_number[10];
char course_name[10];
int course_score;
char teacher_name[10];
char time[16];
int class_times;
char class_place[10];
struct student Student;
}sub[100];
int e=0;
int main();
void backup();
void student();
void student_information();
void student_information_enter();
void student_information_search();
void student_information_delete();
void student_information_enter_1();
void student_information_enter_2();
void student_information_search_all();
void student_information_search_ID();
void student_information_search_name();
void student_information_delete_ID();
void student_information_delete_name();
void student_attendance();
void student_attendance_enter();
void student_attendance_search();
void student_attendance_search_name();
void student_attendance_search_ID();
void course();
void course_enter();
void course_search();
void course_search_all();
void course_search_coursename();
void course_search_teachername();
void color(short x);
void color(short x)
{
if(x>=0 && x<=15)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);
else
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
int main()
{
if(e==0)
{
e++;
printf("\n\n\n\n\n\t\t ※欢迎进入学生考勤系统 \n");
color(10);
printf("\n\n\n\t\t\t\t\t\t\t\tby xxxx大学xx级计科x班");color(16);
Sleep(2000);
}
system("cls");
char i;
while(1)
{
color(15);
printf("\n\n\n\n\n");
printf("\t\t丨 丨\n");
printf("\t\t丨 1.学生 丨\n");
printf("\t\t丨 丨\n");
printf("\t\t丨 2.课程 丨\n");
printf("\t\t丨 丨\n");
printf("\t\t丨 3.备份 丨\n");
printf("\t\t丨 丨\n");
printf("\t\t丨 4.退出 丨\n");
printf("\t\t丨 丨\n");
color(16);
i=getch();
switch (i)
{
case '1': student(); break;
case '2': course(); break;
case '3': backup(); break;
case '4': break;
default: printf("\t\t你输入的数字错误, 请重新输入!\n"); break;
}
if (i=='4')
{
system("cls");
color(7);
printf("\n\n\n\n\n\n\n\n\t\t\t即将退出退出系统,欢迎下次使用!\n");
break;
}
}
Sleep(1500);
system("pause");
exit(0);
return 0;
}
void student()
{
system("cls");
char i;
while(1)
{
color(15);
printf("\n\n\n\n\n");
printf("\t\t丨 丨\n");
printf("\t\t丨 1.学生信息 丨\n");
printf("\t\t丨 丨\n");
printf("\t\t丨 2.学生考勤 丨\n");
printf("\t\t丨 丨\n");
printf("\t\t丨 3.主菜单 丨\n");
printf("\t\t丨 丨\n");
color(16);
i=getch();
switch(i)
{
case '1':student_information(); break;
case '2':student_attendance(); break;
case '3': break;
default:printf("\t\t您输入的数字错误,请重新输入!\n"); break;
}
if(i=='3')
break;
}
main();
}
void student_information()
{
system("cls");
char i;
while(1)
{
color(15);
printf("\n\n\n\n\n");
printf("\t\t丨 丨\n");
printf("\t\t丨 1.学生信息录入 丨\n");
printf("\t\t丨 丨\n");
printf("\t\t丨 2.学生信息查询 丨\n");
printf("\t\t丨 丨\n");
printf("\t\t丨 3.学生信息删除 丨\n");
printf("\t\t丨 丨\n");
printf("\t\t丨 4.上一级菜单 丨\n");
printf("\t\t丨 丨\n");
color(16);
i=getch();
switch(i)
{
case '1':student_information_enter(); break;
case '2':student_information_search(); break;
case '3':student_information_delete(); break;
case '4': break;
default:printf("\t\t您输入的数字错误,请重新输入!\n"); break;
}
if(i=='4')
break;
}
student();
}
void student_information_enter()
{
char i;
system("cls");
while(1)
{
color(15);
printf("\n\n\n\n\n");
printf("\t\t丨 丨\n");
printf("\t\t丨 1.学生信息全部清零再录入 丨\n");
printf("\t\t丨 丨\n");
printf("\t\t丨 2.学生信息追加录入 丨\n");
printf("\t\t丨 丨\n");
printf("\t\t丨 3.上一级菜单 丨\n");
printf("\t\t丨 丨\n");
color(16);
i=getch();
switch(i)
{
case '1':student_information_enter_1(); break;
case '2':student_information_enter_2(); break;
case '3': break;
default:printf("\t\t您输入的数字错误,请重新输入!\n"); break;
}
if(i=='3')
break;
}
student_information();
}
void student_information_enter_1()
{
int i;
char k,j;
FILE *fp;
system("cls");
printf("\n\n\n\n\n");
if((fp=fopen("ARecord.txt","w"))==NULL)
{
printf("\t\t文件打开失败!\n");
system("pause");
student_information_enter();
}
for(i=0,k='1';k=='1';i++)
{
color(11);
for(j='0';j=='0';)
{
printf("\t\t请输入第%d个学生的姓名:",i+1);
scanf("%s",&stu[i].name);
printf("\t\t请输入第%d个学生的学号:",i+1);
scanf("%s",&stu[i].ID);
printf("\t\t请输入第%d个学生的班级:",i+1);
scanf("%d",&stu[i].classes);
printf("\t\t请输入第%d个学生的专业:",i+1);
scanf("%s",&stu[i].speciality);
printf("\t\t请输入第%d个学生的电话:",i+1);
scanf("%s",&stu[i].phone);
printf("\t\t请输入第%d个学生的年龄:",i+1);
scanf("%d",&stu[i].age);
printf("\t\t请输入第%d个学生的出生日期(格式:年-月-日例如:2020 2 2):", i + 1);
scanf("%d%d%d", &stu[i].year, &stu[i].month, &stu[i].day);
printf("\t\t请输入第%d个学生的宿舍:",i+1);
scanf("%s",&stu[i].dormitory);
printf("\t\t请输入第%d个学生的QQ:",i+1);
scanf("%d",&stu[i].QQ);
color(14);
printf("\t\t请确定信息 (重输-0 确定-1):\n");
color(16);
j=getch();
}
if(fwrite(&stu[i], sizeof(struct student),1,fp)!=1)
{
printf("文件写入错误\n");
system("pause");
student_information_enter();
}
color(14);
printf("\t\t是否继续输入下一个学生的信息 终止-0 继续-1:\n\n");
color(16);
k=getch();
}
color(16);
fclose(fp);
color(4);
printf("\n\t\t保存成功\n");
color(16);
Sleep(1000);
student_information_enter();
}
void student_information_enter_2()
{
int i,t,x,m,f;
char j,k;
char student_name[16];
FILE *fp;
system("cls");
printf("\n\n\n\n\n");
if((fp=fopen("ARecord.txt","r"))==NULL)
{
printf("\t\t文件打开失败!\n");
system("pause");
student_information_enter();
}
for (m=0;feof(fp)==0;m++)
{
fread(&stu[m], sizeof(struct student), 1, fp);
}
color(11);
for(i=m-1,k='1';k=='1';i++)
{
for(j='0',t=1;j=='0';)
{
printf("\t\t请输入第%d个学生的姓名:",i+1);
scanf("%s",&student_name);
for(x=0;x<m;x++)
{
t=strcmp(stu[x].name,student_name);
if(t==0)
{
printf("该生已存在!\n");
break;
}
}
strcpy(stu[i].name,student_name);
printf("\t\t请输入第%d个学生的学号:",i+1);
scanf("%s",&stu[i].ID);
printf("\t\t请输入第%d个学生的班级:",i+1);
scanf("%d",&stu[i].classes);
printf("\t\t请输入第%d个学生的专业:",i+1);
scanf("%s",&stu[i].speciality);
printf("\t\t请输入第%d个学生的电话:",i+1);
scanf("%s",&stu[i].phone);
printf("\t\t请输入第%d个学生的年龄:",i+1);
scanf("%d",&stu[i].age);
printf("\t\t请输入第%d个学生的出生日期(格式:年-月-日例如:2020 2 2):", i + 1);
scanf("%d%d%d", &stu[i].year, &stu[i].month, &stu[i].day);
printf("\t\t请输入第%d个学生的宿舍:",i+1);
scanf("%s",&stu[i].dormitory);
printf("\t\t请输入第%d个学生的QQ:",i+1);
scanf("%d",&stu[i].QQ);
color(14);
printf("\t\t请确定信息 (重输-0 确定-1):\n");
color(16);
j=getch();
}
if(t!=0)
{
if((fp=fopen("ARecord.txt","w"))==NULL)
{
printf("\t\t文件打开失败!\n");
system("pause");
student_information_enter();
}
for(f=0;f<i;f++)
{
if(fwrite(&stu[f], sizeof(struct student),1,fp)!=1)
{
printf("\t\t文件写入错误\n");
system("pause");
student_information_enter();
}
}
}
color(14);
printf("\t\t是否继续输入下一个学生的信息 终止-0 继续-1:\n\n");
k=getch();
color(16);
}
color(16);
fclose(fp);
color(4);
printf("\n\t\t保存成功\n");
color(16);
Sleep(1000);
student_information_enter();
}
void student_information_search()
{
char i;
system("cls");
while(1)
{
color(15);
printf("\n\n\n\n\n");
printf("\t\t丨 丨\n");
printf("\t\t丨 1.按学号查询 丨\n");
printf("\t\t丨 丨\n");
printf("\t\t丨 2.按姓名查询 丨\n");
printf("\t\t丨 丨\n");
printf("\t\t丨 3.查询所有人 丨\n");
printf("\t\t丨 丨\n");
printf("\t\t丨 4.上一级菜单 丨\n");
printf("\t\t丨 丨\n");
color(16);
i=getch();
switch(i)
{
case '1':student_information_search_ID(); break;
case '2':student_information_search_name(); break;
case '3':student_information_search_all(); break;
case '4': break;
default:printf("\t\t您输入的数字错误,请重新输入!\n"); break;
}
if(i=='4')
break;
}
student_information();
}
void student_information_search_name()
{
system("cls");
printf("\n\n\n\n\n");
int i=0,j=0,t=1,k;
char x='1';
FILE *fp;
char student_name[16] = {
0 };
if ((fp = fopen("ARecord.txt", "r")) == NULL)
{
printf("\t\t文件打开失败!\n");
system("pause");
student_information_search();
}
for (i=0;feof(fp)==0;i++)
{
fread(&stu[i], sizeof(struct student), 1, fp);
}
while(x!='0')
{
color(6);
printf("\t\t请输入需要查询学生的姓名:");
scanf("%s", &student_name);
for (j=0,t=1;j<i;j++)
{
t=strcmp(stu[j].name,student_name);
if(t==0)
{
break;
}
}
if (t==0)
{
printf("姓名\t\t学号\t\t班级\t\t专业\t\t电话\t\t年龄\t\t生日\t\t宿舍\t\tQQ\n");
printf("%s \t%s \t%d \t\t%s \t\t%s \t%d \t\t%d.%d.%d \t%s \t%d\n",stu[j].name,stu[j].ID,stu[j].classes,stu[j].speciality,stu[j].phone,stu[j].age,stu[j].year,stu[j].month,stu[j].day,stu[j].dormitory,stu[j].QQ);
}
else
{
color(12);
printf("\t\t未找到该学生信息!\n");
color(16);
}
color(14);
printf("\t\t继续-1,退出-0\n");
color(16);
x=getch();
}
color(16);
fclose(fp);
student_information_search();
}
void student_information_search_ID()
{
system("cls");
printf("\n\n\n\n\n");
int i=0,j=0,t=1;
char x='1';
FILE *fp;
char student_ID[10] = {
0 };
if ((fp = fopen("ARecord.txt", "r")) == NULL)
{
printf("\t\t文件打开失败!\n");
system("pause");
<