#include "graphics.h"
#include "stdio.h"
#include "conio.h"
#include "dos.h"
#include "stdlib.h"
#include "ctype.h"
struct classes
{
/*班级*/
char no[20];
/*班级*/
int numa;
/* 班上学生数*/
struct classes *next;
struct students *ahead; /*学生链表的头指针*/
}*head,*p,*q,*last,*tail;
struct students
{
char no[20];
char name[20];
char sex[10];
int numb;
struct students *next;
struct subjects *bhead;
}*pp,*qq,*tail1;
struct subjects
{
char no[20];
/*学生*/
/*学号*/
/*姓名*/
/*科目总数*/
/*学生*/
/*课程链表的头指针*/
/*科目*/
/*学号*/
char coursename[20];
float
exammark;
float
float
commark;
finalmark;
float credit;
struct subjects *next;
/*课程名称*/
/*学分*/
int aaaa;
}*ppp,*qqq,*tail2;
/*
?
*/
char c1,c2;
FILE *fp,*fp1,*fp2;
int t,t1,t2,t3,t4,t5,flag,flag1,flag2,n,mn;
unsigned k,k1,k2;
char name1[20];
char no1[20];
/*k1 是读学生链表用的*/
cursor(int x,int y,int color,int brush);
scantextxy(int x,int y,int count,int color,int brush);
outhzxy(int x,int y,int volumn,int MM,int color,char *s);
textback(int n);
text(int i);
menu(void);
load(int aa);
void
char*
void
void
void
int
void
void modify(int aa);
delete(int aa);
void
void
inquire(int aa);
save(void);
void
lclass(void);
void
void
lstudent(void);
readf(FILE *myfp);
void
int
help(void);
void main()
{int d=DETECT,m,step=0,step1=0;
int ii,jj,ttt;
char ch;
initgraph(&d,&m,"e:\\tc\\bgi");
setbkcolor(DARKGRAY);
setfillstyle(1,3);
bar(50,150,550,350);
outhzxy(100,200,34,50,5,"教务信息管理系统");
outhzxy(270,310,22,30,10,"计0506 XXX");
fp=fopen("e:\\tc\\myfile\\shuju.dat","rb");
readf(fp);
getch();
markk1:
while(1){ii=1;
jj=0;
switch(step=menu()){
case 1:
setfillstyle(SOLID_FILL,LIGHTGRAY);
bar(30,22,120,95);
setlinestyle(0,0,1);
setcolor(WHITE);
for(ttt=1;ttt<=4;ttt++){line(30,23+18*ttt,120,23+18*ttt);}
outhzxy(40,24,11,20,11,"班级录入");
outhzxy(40,42,11,20,10,"学生录入");
outhzxy(40,60,11,20,10,"科目录入");
outhzxy(40,78,11,20,10,"成绩录入");
ch=getch();
while(ch!='\r'&&ch!=27){
jj=ii;
ch=getch();
if(ch=='H')
{
ii--;
if(ii==0)
ii=4;
}
else
if(ch=='P')
{
ii++;
if(ii==5)
ii=1;
}
else
;
switch(jj){
case 1:outhzxy(40,24,11,20,10,"班级录入");break;
case 2:outhzxy(40,42,11,20,10,"学生录入");break;
case 3:outhzxy(40,60,11,20,10,"科目录入");break;
case 4:outhzxy(40,78,11,20,10,"成绩录入");break;
default : break;
}
switch(ii){
case 1:outhzxy(40,24,11,20,11,"班级录入");break;
case 2:outhzxy(40,42,11,20,11,"学生录入");break;
case 3:outhzxy(40,60,11,20,11,"科目录入");break;
case 4:outhzxy(40,78,11,20,11,"成绩录入");break;
default :break;
}
}
if(ch==27) goto markk1;
else load(ii);
break;
case 2:
setfillstyle(SOLID_FILL,LIGHTGRAY);
bar(130,22,265,77);
setlinestyle(0,0,1);
setcolor(WHITE);
for(ttt=1;ttt<=3;ttt++){line(130,23+18*ttt,265,23+18*ttt);}
outhzxy(140,24,11,20,11,"学生信息修改");
outhzxy(140,42,11,20,10,"学生成绩修改");
outhzxy(140,60,11,20,10,"科目信息修改");
ch=getch();
while(ch!='\r'&&ch!=27){
jj=ii;
ch=getch();
if(ch=='H')
{
ii--;
if(ii==0)
ii=3;
}
else
if(ch=='P')
{
ii++;
if(ii==4)
ii=1;
}
else
;
switch(jj){
case 1:outhzxy(140,24,11,20,10,"学生信息修改");break;
case 2:outhzxy(140,42,11,20,10,"学生成绩修改");break;
case 3:outhzxy(140,60,11,20,10,"科目信息修改");break;
default : break;
}
switch(ii){
case 1:outhzxy(140,24,11,20,11,"学生信息修改");break;
case 2:outhzxy(140,42,11,20,11,"学生成绩修改");break;
case 3:outhzxy(140,60,11,20,11,"科目信息修改");break;
default :break;
}
}
if(ch==27) goto markk1;
else modify(ii);
break;
case 3:
setfillstyle(SOLID_FILL,LIGHTGRAY);
bar(230,22,320,77);
setlinestyle(0,0,1);
setcolor(WHITE);
for(ttt=1;ttt<=3;ttt++){line(230,23+18*ttt,320,23+18*ttt);}
outhzxy(240,24,11,20,11,"班级删除");
outhzxy(240,42,11,20,10,"学生删除");
outhzxy(240,60,11,20,10,"科目删除");
ch=getch();
while(ch!='\r'&&ch!=27){
jj=ii;
ch=getch();
if(ch=='H')
{
ii--;
if(ii==0)
ii=3;
}
else
if(ch=='P')
{
ii++;
if(ii==4)
ii=1;
}
else
;
switch(jj){
case 1:outhzxy(240,24,11,20,10,"班级删除");break;
case 2:outhzxy(240,42,11,20,10,"学生删除");break;
case 3:outhzxy(240,60,11,20,10,"科目删除");break;
default : break;
}
switch(ii){
case 1:outhzxy(240,24,11,20,11,"班级删除");break;
case 2:outhzxy(240,42,11,20,11,"学生删除");break;
case 3:outhzxy(240,60,11,20,11,"科目删除");break;
default :break;
}
}
if(ch==27) goto markk1;
else delete(ii);
break;
case 4:
setfillstyle(SOLID_FILL,LIGHTGRAY);
bar(330,22,420,77);
setlinestyle(0,0,1);
setcolor(WHITE);
for(ttt=1;ttt<=3;ttt++){line(330,23+18*ttt,420,23+18*ttt);}
outhzxy(340,24,11,20,11,"年级排名");
outhzxy(340,42,11,20,10,"班级排名");
outhzxy(340,60,11,20,10,"单科排名");
ch=getch();
while(ch!='\r'&&ch!=27){
jj=ii;
ch=getch();
if(ch=='H')
{
ii--;
if(ii==0)
ii=3;
}
else
if(ch=='P')
{
ii++;
if(ii==4)
ii=1;
}
else
;
switch(jj){
case 1:outhzxy(340,24,11,20,10,"年级排名");break;
case 2:outhzxy(340,42,11,20,10,"班级排名");break;
case 3:outhzxy(340,60,11,20,10,"单科排名");break;
default : break;
}
switch(ii){
case 1:outhzxy(340,24,11,20,11,"年级排名");break;
case 2:outhzxy(340,42,11,20,11,"班级排名");break;
case 3:outhzxy(340,60,11,20,11,"单科排名");break;
default :break;
}
}
if(ch==27) goto markk1;
else inquire(ii);
break;
case 5: while(help());break;
case 6: save();
default :break;
}
if(step1==0) continue;
if(step1==27) break;
}
}
scantextxy(int x,int y,int count,int color,int brush)
str[50];
input[2],ch;
char*
{char
static char
i=0;
int
a=0;
int
input[1]='\0';
cursor(x+15,y,LIGHTRED,brush);
settextstyle(0,0,2);
while(1){
a=bioskey(0);
if(a==3592&&i>0)
{input[0]=str[--i];
setcolor(brush);
outtextxy(x+i*15+15,y,input);
continue;
}
break;
if(a==3592&&i==0) continue;
ch=((a<<8)>>8);
if(ch=='\r')
input[0]=ch;
str[i++]=ch;
if(i>count)
setcolor(color);
outtextxy(x+i*15,y,input);
}
str[i]='\0';
return
break;
str;
}
void cursor(int x,int y,int color,int brush)
{
while(!kbhit()){
setcolor(color);
line(x,y,x,y+16);
delay(300);
setcolor(brush);
line(x,y,x,y+16);
delay(300);
}
setcolor(brush);
line(x,y,x,y+16);
setlinestyle(0,0,1);
}
void outhzxy(int x,int y,int volumn,int MM,int color,char *s)
{int m=0,n=0,i=0,j=0,k=0;
FILE *fphz=NULL;
int ROW,COL;
char buffer[32];