资源描述
C语言教务管理系统
一、程序结构图
二、程序运行截图
1. 个人信息介绍
2. 修改颜色
3. 注册界面
4. 信息保留至文件
5. 登录界面
6. 管理员录入信息
7. 学生信息录入
8. 学生成绩录入
9. 学生课程表录入
10. 学生信息查询界面
11学生信息查询
12. 学生成绩查询
13. 学生课表查询
三、代码(一个cpp)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include <conio.h>
#include"windows.h"
#define student_num 1000 /*定义1000个学生*/
#define teacher_num 5 /*定义5个老师(管理员)*/
int is_my_student(struct student *p,int *size); /*申明 返回第i+1个学生函数*/
int is_my_teacher(struct teacher *p,int *size); /*申明 返回第i+1个老师函数*/
int length_student_name(char *p); /*申明 验证用户名函数*/
int length_student_password(char *p); /*申明 验证密码长度函数*/
int length_teacher_name(char *p); /*申明 验证用户名函数*/
int length_teacher_password(char *p); /*申明 验证密码长度函数*/
int show_menu_login(); /*申明 登录菜单函数*/
int show_menu_register(); /*申明 注册菜单函数*/
int show_teacher_select(); /*申明 老师录入菜单函数*/
int show_student_select(); /*申明 学生查询菜单函数*/
int student_register(struct student *ptr_student,int *size); /*申明 学生注册函数*/
int teacher_register(struct teacher *ptr_teacher,int *size); /*申明 老师注册函数*/
int vaild_student_name(char *p); /*申明 验证用户名函数*/
int vaild_student_password(char *p); /*申明 验证密码函数*/
int vaild_teacher_name(char *p); /*申明 验证用户名函数*/
int vaild_teacher_password(char *p); /*申明 验证密码函数*/
int vaild_two_password(char *p1,char *p2); /*申明 验证两次密码是否相同函数*/
int yes_no_return(); /*申明 选择是否返回上一层函数*/
void load(); /*申明 加载函数*/
void register_(int *count1,int *count2); /*申明 注册函数*/
void display_student(struct student stu); /*申明 显示学生信息函数*/
void display_teacher(struct teacher tea); /*申明 显示老师信息函数*/
void student_file1(); /*将保留学生账号密码存入文件中*/
void student_file2(); /*将保留学生个人信息存入文件中*/
void student_file3(); /*将保留学生成绩存入文件中*/
void teacher_file(); /*将保留老师账号密码存入文件中*/
void input_information(int count); /*申明 输入学生信息函数*/
void input_score_menu(int count); /*申明 输入学生成绩函数*/
void color(); /*申明 选择窗体颜色函数*/
void print_stu_information(int count_stu); /*申明 输出账号为num学生信息函数*/
void print_stu_score(int count_stu); /*申明 输出账号为num学生成绩函数*/
void show_menu(); /*申明 初始化界面函数*/
void input(); /*申明 输入函数*/
void menu1(); /*申明 老师录入课程表主菜单函数*/
void menu2(); /*申明 学生查询课程表主菜单函数*/
void rank(); /*申明 显示时间次序函数*/
void querymenu3(); /*申明 查询函数*/
void looktime(); /*申明 根据时间查询函数*/
void looklessonname(); /*申明 根据课程名查询函数*/
void add(); /*申明 保留函数*/
void amend(); /*申明 修改课程函数*/
void amend1(); /*申明 修改课程子函数*/
void amendnews(int i); /*申明 修改整个课程信息函数*/
void amendtime(int i); /*申明 修改课程时间函数*/
void amendlessonname(int i); /*申明 修改课程课程名函数*/
void amendclassroom(int i); /*申明 修改课程教室函数*/
void deleted(); /*申明 删除函数*/
void add_score(int count); /*申明 添加学生成绩函数*/
void xiugai_score(int count); /*申明 修改学生成绩函数*/
void shanchu_score(int count); /*申明 删除学生成绩函数*/
void chaxun_score(int count); /*申明 按要求查询学生成绩函数*/
void paixu_score(int count); /*申明 学生成绩排序函数*/
void tongji_score(int count); /*申明 学生成绩统计函数*/
float chinese(int count); /*申明 计算语文成绩最大值函数*/
int chr(int count); /*申明 计算语文成绩及格人数函数*/
float english(int count); /*申明 计算英语成绩最大值函数*/
int ehr(int count); /*申明 计算英语成绩及格人数函数*/
float math(int count); /*申明 计算数学成绩最大值函数*/
int mhr(int count); /*申明 计算数学成绩及格人数函数*/
float computer(int count); /*申明 计算计算机成绩最大值函数*/
int thr(int count); /*申明 计算计算机成绩及格人数函数*/
float PE(int count); /*申明 计算体育成绩最大值函数*/
int phr(int count); /*申明 计算体育成绩及格人数函数*/
float sum_score(int count); /*申明 计算总分成绩最大值函数*/
void load_student(int a); /*申明 开启学生函数*/
void load_teacher(int a); /*申明 开启老师函数*/
struct student /*学生结构体*/
{
/*个人信息*/
int student_id; /*账号*/
char student_name[20]; /*姓名*/
char password[16]; /*密码*/
int age; /*年纪*/
char qq[12]; /*QQ号*/
char tel[12]; /*电话*/
int grade; /*年级*/
/*各科成绩*/
float chinese; /*语文分数*/
float english; /*英语分数*/
float math; /*数学分数*/
float computer; /*计算机分数*/
float PE; /*体育分数*/
float sum; /*总分*/
/*课程表*/
char time[10]; /*时间*/
char lessonname[20]; /*课程名*/
char teacher[20]; /*讲课老师*/
char classroom[10]; /*教室*/
char hours[10]; /*第几节课*/
int weeks; /*周时*/
};
struct teacher /*老师结构体*/
{
int teacher_id; /*账号*/
char teacher_name[20]; /*姓名*/
char password[16]; /*密码*/
};
struct student our_student[student_num];
struct teacher our_teacher[teacher_num];
void main() /*主函数*/
{
system("color f0"); /*初始化背景颜色*/
show_menu(); /*制作人信息介绍*/
load();
}
void load() /*开启函数*/
{
int flag=1; /*控制循环结束变量*/
int a=0,b=0; /*统计已注册学生人数 a为学生个数 b为老师个数*/
int *count1=&a,*count2=&b; /*指向学生人数和老师人数指针*/
int correct_student,correct_teacher;
color();
register_(count1,count2); /*注册学生和老师帐号*/
student_file1();
teacher_file();
while(flag)
{
switch(show_menu_login()) /*显示登录菜单*/
{
case 1: /*选择1,进入学生登录*/
if(correct_student=is_my_student(our_student,count1))
{
printf("\n ◆学生登录成功!\n");
display_student(our_student[correct_student-1]);
printf("\n");
printf(" ");
system("pause");
load_student(a);
}
else
printf("\n登录失败!\n");
printf("\n");
printf(" 提醒:按Y退出登录界面,按N返回登录界面!!!\n");
flag=yes_no_return();
system("cls");
break;
case 2: /*选择2,进入老师登录,即管理员登录*/
if(correct_teacher=is_my_teacher(our_teacher,count2))
{
printf("\n ◆管理员登录成功!\n");
display_teacher(our_teacher[correct_teacher-1]);
printf("\n");
printf(" ");
system("pause");
load_teacher(a);
}
else
printf("\n登录失败!\n");
printf("\n");
printf(" 提醒:按Y退出登录界面,按N返回登录界面!!!\n");
flag=yes_no_return();
system("cls");
break;
case 3: /*选择3,退出登录*/
system("cls");
flag=0;
break;
default:
printf("请正确输入1-3:");
system("cls");
}
}
}
void load_student(int a) /*开启学生函数*/
{
int flag=1;
system("cls");
while(flag)
{
switch(show_student_select())
{
case 1: /*选择1,学生信息查询*/
system("cls");
print_stu_information(a);
printf("\n");
printf(" 提醒:按Y退出学生查询界面,按N返回学生查询界面!!!\n");
flag=yes_no_return();
system("cls");
break;
case 2: /*选择2,学生成绩查询*/
system("cls");
print_stu_score(a);
printf("\n");
printf(" 提醒:按Y退出学生查询界面,按N返回学生查询界面!!!\n");
flag=yes_no_return();
system("cls");
break;
case 3: /*选择3,学生课表查询*/
menu2();
printf(" 提醒:按Y退出学生查询界面,按N返回学生查询界面!!!\n");
flag=yes_no_return();
system("cls");
break;
case 4: /*选择4,退出查询界面*/
system("cls");
flag=0;
break;
default:
printf("请正确输入1-4:");
system("cls");
}
}
}
void load_teacher(int a) /*开启老师函数*/
{
int flag=1;
system("cls");
while(flag)
{
switch(show_teacher_select())
{
case 1: /*选择1,学生信息录入*/
input_information(a);
system("cls");
student_file2();
printf("\n 提醒:按Y退出老师录入界面,按N返回老师录入界面!!!\n");
flag=yes_no_return();
system("cls");
break;
case 2: /*选择2,学生成绩录入*/
input_score_menu(a);
system("cls");
student_file3();
printf("\n 提醒:按Y退出老师录入界面,按N返回老师录入界面!!!\n");
flag=yes_no_return();
system("cls");
break;
case 3: /*选择3,学生课表录入*/
menu1();
printf(" 提醒:按Y退出老师录入界面,按N返回老师录入界面!!!\n");
flag=yes_no_return();
system("cls");
break;
case 4: /*选择4,退出管理界面*/
system("cls");
flag=0;
break;
default:
printf("请正确输入1-4:");
system("cls");
}
}
}
int length_student_name(char *p) /*验证用户名是否正当*/
{
int l;
l=strlen(p);
if(l>20||l<1)
return 0;
else
return 1;
}
int vaild_student_name(char *p) /*判定用户名是否有效*/
{
int i=0;
int len=strlen(p);
if((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')) /*判定首字母是不是字母*/
{
for(i=0;i<len;i++)
{
if(!(p[i]='_'||(p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z')||(p[i]>='0'&&p[i]<='9'))) /*判定后面字符是否有效*/
return 0;
}
return 1;
}
else
return 0;
}
int length_student_password(char *p) /*密码长度有效性验证*/
{
int len;
len=strlen(p);
if(len<6||len>16)
return 0;
else
return 1;
}
int vaild_student_password(char *p) /*密码有效性验证*/
{
int i=0;
for(;*p!='\0';p++)
{
if(!((*p>='a'&&*p<='z')||(*p>'A'&&*p<'Z')||(*p>='0'&&*p<='9')))
return 0;
}
return 1;
}
int vaild_two_password(char *p1,char *p2) /*验证两次密码是否相同*/
{
if(strcmp(p1,p2)==0)
return 1;
else
return 0;
}
int student_register(struct student *ptr_student,int *size) /*完成注册功效*/
{
char password[16];
char repassword[16];
if(*size==student_num)
{
puts(" ◆注册人数已满!");
printf("\n");
return 0;
}
system("cls");
printf("\n\n");
printf(" ★请输入注册学生姓名:");
fflush(stdin);
gets(ptr_student[*size].student_name);
if(!(length_student_name(ptr_student[*size].student_name)&&vaild_student_name(ptr_student[*size].student_name)))
{
printf(" ◆您输入姓名无效,学生姓名在1-20之间,首字符为字母,后面必需为字母、数字或下划线!!!");
return 0;
}
printf("\n");
printf(" ★请输入注册密码:");
fflush(stdin);
gets(password);
printf("\n");
printf(" ★请再次输入注册密码:");
fflush(stdin);
gets(repassword);
printf("\n");
if(!vaild_two_password(password,repassword))
{
printf("\n №:两次输入密码不一致!!!");
printf("\n");
return 0;
}
else
strcpy(ptr_student[*size].password,password);
if(!(length_student_password(ptr_student[*size].password)&&vaild_student_password(ptr_student[*size].password)))
{
printf(" ◆您输入密码无效,密码应在6-16位之间,密码只能包含字母和数字!!!");
printf("\n");
return 0;
}
printf(" ★您编号为:%d,这将是您登录账号!!!",ptr_student[*size].student_id=0000+*size);
return 1;
}
int is_my_student(struct student *p,int *size) /*假如登录成功则返回第i+1个学生信息,不然返回0*/
{
int i;
int zhanghao;
char mima[18];
system("cls");
printf("\n\n");
printf(" ★请输入您账号:");
scanf("%d",&zhanghao);
fflush(stdin);
printf("\n");
printf(" ★请输入您密码:");
gets(mima);
for(i=0;i<*size;i++)
{
if((zhanghao==p[i].student_id)&&(strcmp(mima,p[i].password)==0))
return i+1;
}
return 0;
}
void display_student(struct student stu) /*显示学生信息*/
{
printf("\n ★您账号是:%d\n",stu.student_id);
}
int length_teacher_name(char *p) /*验证用户名是否正当*/
{
int l;
l=strlen(p);
if(l>20||l<1)
return 0;
else
return 1;
}
int vaild_teacher_name(char *p) /*判定用户名是否有效*/
{
int i=0;
int len=strlen(p);
if((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')) /*判定首字母是不是字母*/
{
for(i=0;i<len;i++)
{
if(!(p[i]='_'||(p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z')||(p[i]>='0'&&p[i]<='9'))) /*判定后面字符是否有效*/
return 0;
}
return 1;
}
else
return 0;
}
int length_teacher_password(char *p) /*密码长度有效性验证*/
{
int len;
len=strlen(p);
if(len<6||len>16)
return 0;
else
return 1;
}
int vaild_teacher_password(char *p) /*密码有效性验证*/
{
int i=0;
for(;*p!='\0';p++)
{
if(!((*p>='a'&&*p<='z')||(*p>'A'&&*p<'Z')||(*p>='0'&&*p<='9')))
return 0;
}
return 1;
}
int teacher_register(struct teacher *ptr_teacher,int *size) /*完成注册功效*/
{
char password[16];
char repassword[16];
if(*size==teacher_num)
{
puts(" ◆注册人数已满!");
printf("\n");
return 0;
}
system("cls");
printf("\n\n");
printf(" ★请输入注册老师姓名:");
fflush(stdin);
gets(ptr_teacher[*size].teacher_name);
if(!(length_teacher_name(ptr_teacher[*size].teacher_name)&&vaild_teacher_name(ptr_teacher[*size].teacher_name)))
{
printf(" ◆您输入姓名无效,老师姓名在1-20之间,首字符为字母,后面必需为字母、数字或下划线!!!");
printf("\n");
return 0;
}
printf("\n");
printf(" ★请输入注册密码:");
fflush(stdin);
gets(password);
printf("\n");
printf(" ★请再次输入注册密码:");
fflush(stdin);
gets(repassword);
printf("\n");
if(!vaild_two_password(password,repassword))
{
printf("\n №:两次输入密码不一致!!!");
printf("\n");
return 0;
}
else
strcpy(ptr_teacher[*size].password,password);
if(!(length_teacher_password(ptr_teacher[*size].password)&&vaild_teacher_password(ptr_teacher[*size].password)))
{
printf(" ◆您输入密码无效,密码应在6-16位之间,密码只能包含字母和数字!!!");
printf("\n");
return 0;
}
printf(" ★您编号为:%d,这将是您登录账号。",ptr_teacher[*size].teacher_id=0+*size);
return 1;
}
int is_my_teacher(struct teacher *p,int *size) /*假如登录成功则返回第i+1个老师信息,不然返回0*/
{
int i;
int zhanghao;
char mima[18];
system("cls");
printf("\n\n");
printf(" ★请输入您账号:");
scanf("%d",&zhanghao);
fflush(stdin);
printf("\n");
printf(" ★请输入您密码:");
gets(mima);
for(i=0;i<*size;i++)
{
if((zhanghao==p[i].teacher_id)&&(strcmp(mima,p[i].password)==0))
return i+1;
}
return 0;
}
void display_teacher(struct teacher tea) /*显示老师信息*/
{
printf("\n ★您账号是:%d\n",tea.teacher_id);
}
void register_(int *count1,int *count2) /*注册函数*/
{
int i=1;
while(i)
{
switch(show_menu_register())
{
case 1:
if(student_register(our_student,count1))
{
(*count1)++;
printf("\n");
printf("\n ★注册成功!\n");
printf(" ");
system("pause");
system("cls");
}
break;
case 2:
if(teacher_register(our_teacher,count2))
{
(*count2)++;
printf("\n");
printf("\n ★注册成功!\n");
printf(" ");
system("pause");
system("cls");
}
break;
case 3:
i=0;
system("cls");
break;
default:
printf("请正确输入:\n");
printf(" ");
system("pause");
system("cls");
}
}
}
void input_information(int count)
{
int k;
system("cls");
for(k=0;k<count;k++)
{
printf("\n\n");
printf("\t请输入第%d位同学信息\n",k+1);
printf("\t\t请录入学号为%d学生年纪:",our_student[k].student_id);
scanf("%d",&our_student[k].age);
printf("\n");
printf("\t\t请录入学号为%d学生QQ号:",our_student[k].student_id);
scanf("%s",our_student[k].qq);
printf("\n");
printf("\t\t请录入学号为%d学生电话:",our_student[k].student_id);
scanf("%s",our_student[k].tel);
printf("\n");
printf("\t\t请录入学号为%d学生年级:",our_student[k].student_id);
scanf("%d",&our_student[k].grade);
printf("\n");
printf("\t\t您已经成功将学号为%d学生信息录入!!!\n",our_student[k].student_id);
}
}
void input_score_menu(int count)
{
int number,i=1;
system("cls");
printf("\n\n");
printf("\t*************************学生成绩管理*************************\n");
printf("\t* *\n");
printf("\t* 1. ☆ 添加学生成绩 ☆ *\n");
printf("\t* 2. ☆ 修改学生成绩 ☆ *\n");
printf("\t* 3. ☆ 删除学生成绩 ☆ *\n");
printf("\t* 4. ☆ 按要求查询学生成绩 ☆ *\n");
printf("\t* 5. ☆ 按要求排序 ☆ *\n");
printf("\t* 6. ☆ 按要求统计成绩 ☆ *\n");
printf("\t* 7. ☆ 退出学生成绩管理 ☆ *\n");
printf("\t* *\n");
printf("\t******************请输入选择功效编号(1-7):********
展开阅读全文