有bug的话可以评论一下,嗯,我感觉一些输入的判断上可能还有些问题,非法输入判断可能不全面,其他的方面功能测试都可以,最开始的成绩信息要自己输入,我这里写的就一个教师 账号是:xiong 密码是:250。需要可以自行添加和修改,感觉我写的不好的大神轻点喷。。谢谢
后面可能会优化一下。
linux里面没有conio.h库,所以我用的是自己搞的getch.h库,代码放在最下面,需要的可以去拿。getch()是不放在缓冲区中,直接读取用户输入的第一个字符。
/*学生成绩管理系统,分为教师界面和学生界面,教师界面需要密码进入可以输入学生的信息,
修改学生的成绩,删除学生信息,查询学生的成绩,给成绩排序,查看所有学生信息,读取和保存学
生信息,读取学生的建议功能。学生需要提供学号和密码,成功进入后可以查看个人信息,修改密码,
给老师留言(这里老师添加完信息需要保存,然后学生才能根据老师的录入来登录),进入系统可以读取
上次存放在文件中的数据,这样能够更好的实现交互性。教师可以查看学生的建议,可以显示留下建议
的同学的学号。总体而言功能较为全面,可能有些许bug可以修改*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<getch.h>
#include<ctype.h>
void main_menu(); //主页面的显示
void teacher_menu(); //教师登录页面的显示
void student_menu(); //学生登录页面的显示
void advice_menu(); //对该程序的建议
void teacher_operation(); //教师的页面操作处理
void student_operation(); //学生的页面操作处理
void studentgrade_scanf(); //学生成绩录入
void inputallstudent(); //输出所有学生信息
void studentgrade_modify();//修改学生成绩
void student_information_p();//学生自我查询成绩输出
void quert_student(); //教师查询学生成绩
void studentgrade_sort(); //学生成绩排序
void save_studentinformation(); //保存学生信息到文件
void read_studentinformation(); //从文件读取学生信息
void delete_student(); //删除学生信息
void student_advice(); //学生建议查看
void student_advice_p(); //学生意见写入
void modify_grade(); //学生修改密码
typedef struct //学生信息
{
char s_name[10]; //名字
unsigned int age; //年龄
char s_studentnumber[17]; //学号
char sex[4]; //性别
char major[10]; //专业
unsigned int grade;//分数
char s_password[18];//密码
}Student;
typedef struct _Node //结点定义
{
Student stu; //结点信息
struct _Node* next; //下一个结点地址
}Node;
Node* g_pHead=NULL;//头结点
char s_number[17];
int main()
{
char command; //定义最开始页面的输入指令
while(1)
{
system("clear");
main_menu(); //显示页面
command=getch(); //获取用户的指令
switch(command) //对指令进行分析
{
case '1':teacher_menu();break; //跳转到教师的登录界面
case '2':student_menu();break; //跳转到学生的登录界面
case '3':advice_menu();break; //跳转到建议界面
case '0':exit(0); //退出
case 'r':read_studentinformation();break;//读取数据
default:printf("输入数据非法请重新输入!\n");
}
}
}
void main_menu()//主页面
{
printf("\t\t\t----------------------------------\n");
printf("\t\t\t| 学生管理系统1.0v |\n");
printf("\t\t\t----------------------------------\n");
printf("\t\t\t|1.教师登录 2.学生登录|\n");
printf("\t\t\t|0.退出系统 3.提出建议|\n");
printf("\t\t\t|r.读入库中数据------------------|\n");
printf("\t\t\t----------------------------------\n");
printf("请输入指令:\n");
}
void teacher_menu() //教师登录页面
{
//存放教师的登录账号和密码
char c_teacher_number[10]="xiong",c_teacher_mm[10]="250";
char c_print_number[10],c_print_mm[10];//定义输入的账号和密码
printf("请输入教师账号:");
gets(c_print_number);
//如果输入账号的长度过大或者不匹配提示重新输入
if(strlen(c_print_number)>strlen(c_teacher_number)||\
strcmp(c_print_number,c_teacher_number))
{
printf("账号输入有误,请重新输入!\n");
teacher_menu();
}
printf("请输入密码:");
gets(c_print_mm);
//如果输入密码的长度过大或者不匹配提示重新输入
if(strlen(c_print_mm)>strlen(c_teacher_mm)||\
strcmp(c_print_mm,c_teacher_mm))
{
printf("密码输入有误,请重新输入!\n");
teacher_menu();
}
printf("登录成功,欢迎熊老师!\n");
teacher_operation();//跳转到教师操作界面