#include
#include
#include
#include
#include
#include
#include
#include
#define LEN 25
#define T double
#define USER_NAME "202031774201"
#define PASSWORD "202031774201"
using namespace std;
struct score
{
char snum[20];
char sname[11];
int c; //c语言成绩
int math; //数学成绩
int english; //英语成绩
int sumcj; //成绩总数
int rank; //排名
};
//函数声明
void teacher(); //教师登录界面
void student(); //学生登录界面
int change(int); //修改成绩
void record(int); //录入成绩
void cxcj(int); //查询成绩
void xhcx(int); //学号查询
void xmcx(int n); //姓名查询
void allrankcx(int); //排名查询
void showcxmenu(void);//查询菜单
void cjxs(int); //成绩显示
void jspm(int); //计算排名
int sccj(int); //删除成绩
void bccj(void); //保存成绩并退出
void User_login(); //登录系统
int recog_pwd(char name[20],char pwd[20]); //存储学生账号
void HideCursor(); //进度条
void Gotoxy(int x, int y); //进度条
void DrawBox(); //进度条
int putin(); //邀请码
//小猪佩奇
T c(T x,T y,T r){return sqrt(x*x+y*y)-r;}
T u(T x,T y,T t){return x*cos(t)+y*sin(t);}
T v(T x,T y,T t){return y*cos(t)-x*sin(t);}
T fa(T x,T y){return fmin(c(x,y,0.5),c(x*0.47+0.15,y+0.25,0.3));}
T no(T x,T y){return c(x*1.2+0.97,y+0.25,0.2);}
T nh(T x,T y){return fmin(c(x+0.9,y+0.25,0.03),c(x+0.75,y+0.25,0.03));}
T ea(T x,T y){return fmin(c(x*1.7+0.3,y+0.7,0.15),c(u(x,y,0.25)*1.7,v(x,y,0.25)+0.65,0.15));}
T ey(T x,T y){return fmin(c(x+0.4,y+0.35,0.1),c(x+0.15,y+0.35,0.1));}
T pu(T x,T y){return fmin(c(x+0.38,y+0.33,0.03),c(x+0.13,y+0.33,0.03));}
T fr(T x,T y){return c(x*1.1-0.3,y+0.1,0.15);}
T mo(T x,T y){return fmax(c(x+0.15,y-0.05,0.2),-c(x+0.15,y,0.25));}
T o(T x,T y,T(*f)(T,T),T i){T r=f(x,y);return fabs(r)<0.02?(atan2(f(x,y+1e-3)-r,f(x+1e-3,y)-r)+0.3)*1.273+6.5:r<0?i:0;}
T s(T x,T y,T(*f)(T,T),T i){return f(x,y)<0?i:0;}
T f(T x,T y){return o(x,y,no,1)?fmax(o(x,y,no,1),s(x,y,nh,12)):fmax(o(x,y,fa,1),fmax(o(x,y,ey,11),fmax(o(x,y,ea,1),fmax(o(x,y,mo,1),fmax(s(x,y,fr,13),s(x,y,pu,12))))));}
//main函数
int main(int a,char**b)
{
system("color 07");
printf(" 欢迎使用成绩管理系统 ");
//进度条
int len;
HideCursor();
for(len = 1; len <= LEN; len++)
{
Gotoxy(2 * len, 1 );
printf("█");
Gotoxy(21, 4);
printf("已完成%d%%", 4 * len);
Sleep(100);
}
//小猪佩奇
Gotoxy(21, 4);
printf("加载成功!");
system("cls");
system("color 04");
for(T y=-1,s=a>1?strtod(b[1],0):1;y<0.6;y+=0.05/s,putchar('n'))
for(T x=-1;x<0.6;x+=0.025/s)
putchar(" .|/=\|/=\| @!"[(int)f(u(x,y,0.3),v(x,y,0.3))]);
printf(" 欢迎使用成绩管理系统");
Sleep(1000);
system("cls");
system("color 07");
int flag,n=0,count=0;//flag标志位,count计数,当前总人数
//-------------判断文件里面有多少条记录--------------------//
FILE *fp;
fp=fopen("cj.txt","a+");
system("color 07");
if(fp==NULL)
{
printf("打开文件失败,请重试!n");
getch();
fclose(fp);
exit(0);
}
int c = 0;
while(!feof(fp))
{
char cc = fgetc(fp); //判断是否结束
if(cc==EOF)
{
break;
}
//输出字符
// putchar(cc);
c++;
}
count = c/14;
// printf("%d", count);
// getch();
fclose(fp);
//---------------------------------//
printf(" ** ***** *****n");
printf(" ** * * * *n");
printf(" ** * * * *n");
printf(" ** * * * *n");
printf(" ** * * * *n");
printf(" ** * * * *n");
printf(" ** * * * *n");
printf(" ** * * * *n");
printf(" ** ***** *****n");
printf(" ");
system("color 07");
printf("n");
printf(" 请问你是否需要注册账号?");
printf("n");
printf(" >>如果需要请输入1<<");
printf("n");
printf(" >>如果不需要请输入2<<");
printf("n");
int p;
scanf("%d",&p);
if(p==1)
{
FILE *fp2;
fp2=fopen("用户信息.txt","w");
if(fp2==NULL)
{
printf("文件打开失败,请重试");
fclose(fp2);
}
char name[20];
char pwd[20];
printf("请输入账号n");
scanf("%s",name);
fprintf(fp2,"%s",name);
printf("请输入密码n");
fprintf(fp2," ");
scanf("%s",pwd);
fprintf(fp2,"%s",pwd);
printf("账号注册成功");
fclose(fp2);
}
printf("n");
system("cls");
//登录界面箭头
int i,j;
for (i=0; i<3; i++)
{
for (j=4;j>i ; j--)
{
printf(" ");
}
for (j=0; j<2*i+1; j++)
{
printf("*");
}
printf("n");
}
for (i=0; i<4; i++)
{
for (j=4; j>i; j--)
{
printf(" ");
}
for (j=0; j<2*i+1; j++)
{
printf("*");
}
printf("n");
}
for (i=0; i<5; i++)
{
for (j=4; j>i; j--)
{
printf(" ");
}
for (j=0; j<2*i+1; j++)
{
printf("*");
}
printf("n");
}
for (i=0; i<5; i++)
{
for(j=0;j<3;j++)
{
printf(" ");
}
for (j=0; j<3;j++ )
{
printf("*");
}
printf("n");
}
for (i=0; i<2; i++)
{
for (j=0; j<10; j++)
{
printf("*");
}
printf("n");
}
User_login(); //登录界面
int f;
printf("请输入你的身份,老师输入1,学生输入2n");
scanf("%d",&f);
system("cls");
if(f==1)
putin(); //教师需要输入邀请码
do
{
if(f==1)
{
system("cls");
teacher();
scanf("%d",&flag); //选择操作
switch(flag)
{
case 1: printf("请输入您要录入的人数:");
scanf("%d",&n);
record(n);
count += n;break;
case 2: count=sccj(count);break;
case 3: change(count);break;
case 4: cxcj(count);break;
case 5: jspm(count);break;
case 6: cjxs(count);break;
case 0: bccj();break;
default:printf("输入错误,请重试!n");getch();
}
}
if(f==2)
{
system("cls");
student();
scanf("%d",&flag);//选择操作
switch(flag)
{
case 1: cxcj(count);break;
case 2: jspm(count);break;
case 3: cjxs(count);break;
default:printf("输入错误,请重试!n");getch();
}
}
}
while(flag!=0);
getch();
return 0;
}
//0显示菜单
void teacher ()
{
system("cls");
printf(" ** ***** *****n");
printf(" ** * * * *n");
printf(" ** * * * *n");
printf(" ** * * * *n");
printf(" ** * * * *n");
printf(" ** * * * *n");
printf(" ** * * * *n");
printf(" ** * * * *n");
printf(" ** ***** *****n");
printf(" *----------------------------------------------------*n");
printf(" * 欢迎使用网工成绩管理系统 *n");
printf(" *----------------------------------------------------*n");
printf(" * 1: 录入成绩 *n");
printf(" * 2: 删除成绩 *n");
printf(" * 3: 修改成绩 *n");
printf(" * 4: 成绩查询 *n");
printf(" * 5: 成绩计算并排名 *n");
printf(" * 6: 显示成绩信息 *n");
printf(" * 0: 保存信息并退出系统 *n");
printf(" *----------------------------------------------------*n");
printf(" 选择操作<0-6> n");
return;
}
void student ()
{
system("cls");
printf(" ** ***** *****n");
printf(" ** * * * *n");
printf(" ** * * * *n");
printf(" ** * * * *n");
printf(" ** * * * *n");
printf(" ** * * * *n");
printf(" ** * * * *n");
printf(" ** * * * *n");
printf(" ** ***** *****n");
printf (" +----------------------------------------------------+n");
printf (" | |n");
printf (" | 欢迎使用网络工程学生信息查询系统 |n");
printf (" | |n");
printf (" +----------------------------------------------------+n");
printf (" * 1: 成绩查询 *n");
printf (" * 2:成绩计算并排名 *n");
printf (" * 3:显示成绩信息 *n");
printf (" *----------------------------------------------------*n");
printf (" 选择操作<1-3> n");
return;
}
//1录入成绩
void record(int n)
{
struct score stu[100];
FILE *fp;
fp=fopen("cj.txt","a+");
if(fp==NULL)
{
printf("打开文件失败,请重试!n");
getch();
fclose(fp);
exit(0);
}
printf("请输入全部学生的学号,姓名,c语言成绩,数学成绩,英语成绩;n");
int i;
for(i=0;i? ?_ ィ │ //n");
printf(" / へ / ?<| \\n");
printf(" ヽ_? (_/ │//n");
printf(" 7 |/n");
printf(" >―r ̄ ̄`?―_n");
printf(" *----------------------------------------------------*n");
printf(" * 成绩查询菜单 *n");
printf(" *----------------------------------------------------*n");
printf(" * 1: 按学号查询 *n");
printf(" * 2: 按姓名查询 *n");
printf(" * 3: 全班排名查询 *n");
printf(" * 0: 退出查询系统,返回主系统 *n");
printf(" *----------------------------------------------------*n");
printf(" 选择操作<0-3> n");
}
//4.1学号查询
void xhcx(int n)
{
struct score stu[100];
char snum[9];
printf("请输入你要查询学生的学号:");
scanf("%s",&snum);
FILE *fp;
fp=fopen("cj.txt ","r");
if(fp==NULL)
{
printf("打开文件失败!n");
getch();
exit(0);
}
int c = 0;
while(!feof(fp))
{
fscanf(fp,"%s %s %d %d %d %d %dn",&stu[c].snum,&stu[c].sname,&stu[c].c,&stu[c].math,&stu[c].english,&stu[c].sumcj,&stu[c].rank);
c++;
}
int i;
for(i=0;i stu[j+1].sumcj)
{
temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
}
}
printf("学号t姓名tc语言t数学t英语t总分t名次n");
for(i=0;ii ; j--)
{
printf(" ");
}
for (j=0; j<2*i+1; j++)
{
printf("*");
}
printf("n");
}
for (i=0; i<4; i++)
{
for (j=4; j>i; j--)
{
printf(" ");
}
for (j=0; j<2*i+1; j++)
{
printf("*");
}
printf("n");
}
for (i=0; i<5; i++)
{
for (j=4; j>i; j--)
{
printf(" ");
}
for (j=0; j<2*i+1; j++)
{
printf("*");
}
printf("n");
}
for (i=0; i<5; i++)
{
for(j=0;j<3;j++)
{
printf(" ");
}
for (j=0; j<3;j++ )
{
printf("*");
}
printf("n");
}
for (i=0; i<2; i++)
{
for (j=0; j<10; j++)
{
printf("*");
}
printf("n");
}
getch();
return;
}
//登录函数
void User_login()
{
char name[20];
char pwd[20];
int a=0;
printf("请输入账号:");
scanf("%s",name);
printf("请输入密码:");
scanf("%s",pwd);
if((recog_pwd(name,pwd))==1)
{
printf("登陆成功n");
//Main_user();
}
else
{
printf("登陆失败n"),a=1;
}
if(a==1)
{
printf("请重新登录n"),
exit(0);
}
}
//判断是否存在账号
int recog_pwd(char name[20],char pwd[20])
{
FILE *fp1;
char str[20];
if((fp1=fopen("用户信息.txt","r"))==NULL)
{
printf("打开文件失败n");
return 0;
}
while(!feof(fp1))
{
fscanf(fp1,"%s",str);
if(strcmp(str,name)==0)
{
fscanf(fp1,"%s",str);
if(strcmp(str,pwd)==0)
{
return 1;
}
else
{
fclose(fp1);
return 0;
}
}
fscanf(fp1,"%s",str);
}
fclose(fp1);
return 0;
}
//隐藏光标
void HideCursor()
{
CONSOLE_CURSOR_INFO cursor_info = {1, 0};//后边的0代表光标不可见
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
//光标移动
void Gotoxy(int x, int y)
{
HANDLE hout; //定义句柄变量hout
COORD coord; //定义结构体coord
coord.X = x;
coord.Y = y;
hout = GetStdHandle(STD_OUTPUT_HANDLE);//获得标准输出(屏幕)句柄
SetConsoleCursorPosition(hout, coord);//移动光标
}
//画边框
void DrawBox()
{
printf("╔═════════════════════════╗");
putchar('n');
printf("║ ║");
putchar('n');
printf("╚═════════════════════════╝");
}
//教师需要输入邀请码
int putin()
{
char userName[25];
char passWord[25];
printf("请输入邀请码:");
scanf("%s",&userName);
printf("请输入密码:");
scanf("%s",&passWord);
if(strcmp(userName,USER_NAME)!=0||strcmp(passWord,PASSWORD)!=0) {
printf("登陆失败!n");
exit(0);
}
if(strcmp(userName,USER_NAME)==0&&strcmp(passWord,PASSWORD)==0){
printf("登录成功!n");
}
return 0;
}