资源描述
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=20150000+*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=20150+*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*
展开阅读全文