📄 adstd.c
字号:
if(cha=='K'+2||cha=='k'+2) {gcmd=cha-2;init();return;}
if(cha=='n'||cha=='N'){
clrscr();
gotoxy(15,8);
cprintf("操作已取消!");
return;
}
}
}
stdins(){
/*建立插入学生数据*/
}
int stdvmenu(int i){
char ch;
gotoxy(1,15);
cprintf("[B]首页 [P]上页 [N]下页 上菜单项()内快捷键可用");
while(1){
ch=getch();
if(ch=='b'||ch=='B') return 0;
if(ch=='N'||ch=='n') return i;
if(ch=='P'||ch=='p') return i-PER;
if(ch=='I'||ch=='M'||ch=='D'||ch=='X'||ch=='i'||ch=='m'||ch=='d'||ch=='x'){
gcmd=ch;
return stdi;
}
}
}
stdview(){
int i;
int j=4;
stdscore tmt;
/*浏览学生成绩数据具体函数每页显示PER项*/
window(4,5,59,21); /*主信息输出窗口工作区*/
clrscr();
if(isfget==0){gotoxy(2,5);cprintf("尚未连接数据!");return;}
gque(1);
j=4;
gotoxy(1,15);
cprintf("[B]首页 [P]上页 [N]下页 上菜单项()内快捷键可用");
for(i=0;i<stdi;i++){
gotoxy(1,2);cprintf("%-6s%-7s%-4s%-4s%-4s%-4s%-4s%-6s%-6s%-6s%-6s",
"学号","姓 名","语","数","物","化","英","总分","学积","排名","平均");
gotoxy(1,j++);cprintf("%-6d%-7s%-4d%-4d%-4d%-4d%-4d%-6d%-6d%-6d%-6.1f",
std[i].no,std[i].name,std[i].chs,std[i].math,
std[i].phy,std[i].che,std[i].eng,
std[i].all,std[i].wtall,std[i].que,std[i].aver);
if((i%PER==0)&&(i!=0)){
i=stdvmenu(i);clrscr();
j=4;
gotoxy(1,15);
cprintf("[B]首页 [P]上页 [N]下页 上菜单项()内快捷键可用");
}
}
gotoxy(1,j++);cprintf("已达最后一项");
}
istp(){
/*成绩记录插入具体函数*/
int j=3;
int i,i2,isok=0;
char ch,cha,myclass[5],ach;
me1 objsys;
stdscore tmt;
tmt.name[0]='\0';
tmt.no=tmt.math=tmt.chs=tmt.phy=tmt.che=tmt.eng=0;
window(4,6,59,21); /*主信息输出窗口工作区*/
if((fpme=fopen("me.db","rb"))==NULL){
gotoxy(10,6);cprintf("系统检测到你还没有设置各科学分!");
gotoxy(10,7);cprintf(" 是否立即设置[y/n]?");
cha=getch();
for(;;){
if(cha=='y'||cha=='Y') {sysinit();return;}
if(cha=='n'||cha=='N') {init();return;}
}
}
fread(&objsys,sizeof(me1),1,fpme);
fclose(fpme);
clrscr();
gotoxy(15,j-1);cprintf(" 插入新成绩记录");j++;
gotoxy(15,j++);cprintf("按<回车>键即提交数据输入 ");
gotoxy(5,j);cprintf("可按[TAB]和[shift+P]键来上下移动数据输入项");
j=j+2;i2=j;
gotoxy(10,j++);cprintf("学号:[ ]");
gotoxy(10,j++);cprintf("姓名:[ ]");
gotoxy(10,j++);cprintf("语文:[ ] <%d个学分>",objsys.chs);
gotoxy(10,j++);cprintf("数学:[ ]<%d个学分>",objsys.math);
gotoxy(10,j++);cprintf("物理:[ ]<%d个学分>",objsys.phy);
gotoxy(10,j++);cprintf("化学:[ ]<%d个学分>",objsys.che);
gotoxy(10,j++);cprintf("英语:[ ]<%d个学分>",objsys.eng);
j=i2;
do{/*无条件只循环一次*/
b1:gotoxy(10+7,j++);isok=getstr(4,10+7,j-1,intos(tmt.no),1);tmt.no=atoi(gstr);gstrinit();if(isok==0)break;
b2:gotoxy(10+7,j++);isok=getstr(6,10+7,j-1,tmt.name,2);strcpy(tmt.name,gstr);gstrinit();if(isok==-1){j-=2;goto b1;}if(isok==0)break;
b3:gotoxy(10+7,j++);isok=getstr(3,10+7,j-1,intos(tmt.chs),1);tmt.chs=atoi(gstr);gstrinit();if(isok==-1){j-=2;goto b2;}if(isok==0)break;
b4:gotoxy(10+7,j++);isok=getstr(3,10+7,j-1,intos(tmt.math),1);tmt.math=atoi(gstr);gstrinit();if(isok==-1){j-=2;goto b3;}if(isok==0)break;
b5:gotoxy(10+7,j++);isok=getstr(3,10+7,j-1,intos(tmt.phy),1);tmt.phy=atoi(gstr);gstrinit();if(isok==-1){j-=2;goto b4;}if(isok==0)break;
b6:gotoxy(10+7,j++);isok=getstr(3,10+7,j-1,intos(tmt.che),1);tmt.che=atoi(gstr);gstrinit();if(isok==-1){j-=2;goto b5;}if(isok==0)break;
b7:gotoxy(10+7,j++);isok=getstr(3,10+7,j-1,intos(tmt.eng),1);tmt.eng=atoi(gstr);gstrinit();if(isok==-1){j-=2;goto b6;}if(isok==0)break;
gotoxy(10,j++);
}while(0);
gotoxy(3,i2+8);
cprintf("[Y]确认并处理下一位 [N]取消 [O]确认并返回主界面");
for(;;){
ch=getch();
if(ch=='Y'||ch=='y'||ch=='O'||ch=='o'){
for(i=0;i<stdi;i++){
if(std[i].no==std[stdi].no){
clrscr();
gotoxy(9,9);
cprintf("这个学号有人了。请不要乱输入数据!");
ch=getch();
return;
}
}
std[stdi]=tmt;
std[stdi].all=std[stdi].chs+std[stdi].math+std[stdi].phy+std[stdi].che+std[stdi].eng;
std[stdi].wtall=std[stdi].chs*objsys.chs+std[stdi].math*objsys.math+std[stdi].phy*objsys.phy+std[stdi].che*objsys.che+std[stdi].eng*objsys.eng;
std[stdi].aver=std[stdi].all/5;
/*求得本次记录的排名*/
gque(2);/*将std[60]按名次升序排列*/
for(i=0;i<stdi&&std[stdi].wtall<=std[i].wtall;i++);
if(std[stdi].wtall==std[i-1].wtall)std[stdi].que=std[i-1].que;
else std[stdi].que=i+1;
for(;i<stdi;i++)std[i].que++;
stdi++;
gque(1);/*将更新的std[60]按学号升序排列*/
clrscr();
gotoxy(10+7,13);
if(ch=='Y'||ch=='y'){
cprintf("操作成功,按任意键继续!");
ch=getch();
istp(); return;
}
if(ch=='O'||ch=='o'){
cprintf("操作成功![按任意键回主界面]");
ch=getch();
init();
return;
}
}
if(ch=='N'||ch=='n') {init();return;}
}
}
modify(){
/*修改数据*/
char cha,ch;
stdscore tmt;
int stdno1;
int j=3,i,i1,isok=0;
me1 objsys;
tmt.no=0;
tmt.name[0]='\0';
tmt.math=tmt.chs=tmt.phy=tmt.che=tmt.eng=0;
window(4,6,59,21); /*主信息输出窗口工作区*/
clrscr();
if((fpme=fopen("me.db","rb"))==NULL){
gotoxy(10,6);cprintf("系统检测到你还没有设置各科学分!");
gotoxy(10,7);cprintf(" 是否立即设置[y/n]?");
cha=getch();
for(;;){
if(cha=='y'||cha=='Y') {sysinit();return;}
if(cha=='n'||cha=='N'){
gotoxy(15,8);
cprintf("操作已取消!");
return;
}
}
}
fread(&objsys,sizeof(me1),1,fpme);
fclose(fpme);
if(isfget==0){gotoxy(5,5);cprintf("尚未连接数据!");return;}
else{
gotoxy(15,8);
cprintf("学生数据修改");
gotoxy(12,9);
cprintf("请输入你要修改的学生的学号\b\b\b\b");
gotoxy(20,10);
cprintf("[ ]");
getstr(5,21,10,"",1);
stdno1=atoi(gstr);
for(i1=0;i1<stdi;i1++){
if(std[i1].no==stdno1){
clrscr();
gotoxy(15,j-1);cprintf(" 修改成绩记录");j++;
gotoxy(15,j++);cprintf("按<回车>键即提交数据输入 ");
gotoxy(5,j);cprintf("可按[TAB]和[shift+P]键来上下移动数据输入项");
j=j+2;i=j;
gotoxy(10,j++);cprintf("学号:[ ][%d]",std[i1].no);
gotoxy(10,j++);cprintf("姓名:[ ][%s]",std[i1].name);
gotoxy(10,j++);cprintf("语文:[ ][%d]",std[i1].chs);
gotoxy(10,j++);cprintf("数学:[ ][%d]",std[i1].math);
gotoxy(10,j++);cprintf("物理:[ ][%d]",std[i1].phy);
gotoxy(10,j++);cprintf("化学:[ ][%d]",std[i1].che);
gotoxy(10,j++);cprintf("英语:[ ][%d]",std[i1].eng);
gotoxy(10,j++);
j=i;
do{/*无条件只循环一次*/
b1:gotoxy(10+7,j++);isok=getstr(4,10+7,j-1,intos(tmt.no),1);tmt.no=atoi(gstr);gstrinit();if(isok==0)break;
b2:gotoxy(10+7,j++);isok=getstr(6,10+7,j-1,tmt.name,2);strcpy(tmt.name,gstr);gstrinit();if(isok==-1){j-=2;goto b1;}if(isok==0)break;
b3:gotoxy(10+7,j++);isok=getstr(3,10+7,j-1,intos(tmt.chs),1);tmt.chs=atoi(gstr);gstrinit();if(isok==-1){j-=2;goto b2;}if(isok==0)break;
b4:gotoxy(10+7,j++);isok=getstr(3,10+7,j-1,intos(tmt.math),1);tmt.math=atoi(gstr);gstrinit();if(isok==-1){j-=2;goto b3;}if(isok==0)break;
b5:gotoxy(10+7,j++);isok=getstr(3,10+7,j-1,intos(tmt.phy),1);tmt.phy=atoi(gstr);gstrinit();if(isok==-1){j-=2;goto b4;}if(isok==0)break;
b6:gotoxy(10+7,j++);isok=getstr(3,10+7,j-1,intos(tmt.che),1);tmt.che=atoi(gstr);gstrinit();if(isok==-1){j-=2;goto b5;}if(isok==0)break;
b7:gotoxy(10+7,j++);isok=getstr(3,10+7,j-1,intos(tmt.eng),1);tmt.eng=atoi(gstr);gstrinit();if(isok==-1){j-=2;goto b6;}if(isok==0)break;
gotoxy(10,j++);
}while(0);
gotoxy(10+10,i+8);
cprintf(" [Y]确认修改 [N]取消%d",tmt.no);
for(;;){
ch=getch();
if(ch=='y'||ch=='Y'){
for(i=0;i<stdi;i++){
if(std[i].no==tmt.no){
if(i==i1)continue;
clrscr();
gotoxy(9,9);
cprintf("这个学号有其他人了。请不要乱输入数据!%d",std[i]);
ch=getch();
return;
}
}
std[i1]=tmt;
std[i1].all=std[i1].chs+std[i1].math+std[i1].phy+std[i1].che+std[i1].eng;
std[i1].wtall=std[i1].chs*objsys.chs+std[i1].math*objsys.math+std[i1].phy*objsys.phy+std[i1].che*objsys.che+std[i1].eng*objsys.eng;
std[i1].aver=std[i1].all/5;
/*求得本次记录的排名*/
gque(3);/*将std[60]按学积分降序排列*/
for(i=0;i<stdi;i++){
if(std[i].wtall==std[i-1].wtall)std[i].que=std[i-1].que;
else std[i].que=i+1;
}
gque(1);/*将更新的std[60]按学号升序排列*/
clrscr();
gotoxy(15,8);
cprintf("数据更新成功!");
return;
}
if(ch=='n'||ch=='N'){
clrscr();
gotoxy(15,8);
cprintf("操作已取消!");
return;
}
}
}
}
gotoxy(15,8);
clrscr();
cprintf("查无此人");
return;
}
}
insert(){
/*插入数据基本函数*/
char cha;
int j;
window(4,6,59,21); /*主信息输出窗口工作区*/
clrscr();
if((fpme=fopen("me.db","rb"))==NULL){
gotoxy(10,6);cprintf("系统检测到你还没有设置各科学分!");
gotoxy(10,7);cprintf(" 是否立即设置[y/n]?");
cha=getch();
for(;;){
if(cha=='y'||cha=='Y') {sysinit();return;}
if(cha=='n'||cha=='N') {
clrscr();
gotoxy(15,8);
cprintf("操作已取消!");return;
}
}
}
if(isfget==0){gotoxy(5,5);cprintf("尚未连接数据!");return;}
else{
istp();return;
}
}
dlt(){
int stdno;
int i1,i,j=3;
char ch;
window(4,6,59,21); /*主信息输出窗口工作区*/
clrscr();
if(isfget==0){gotoxy(5,5);cprintf("尚未连接数据!");return;}
else{
gotoxy(15,8);
cprintf("学生数据删除");
gotoxy(12,9);
cprintf("请输入你要删除的学生的学号\b\b\b\b");
gotoxy(20,10);
cprintf("[ ]");
getstr(5,21,10,"",1);
stdno=atoi(gstr);
for(i1=0;i1<stdi;i1++){
if(std[i1].no==stdno){
clrscr();
gotoxy(10,j++);cprintf(" 删除学生成绩记录");
j=j+2;
gotoxy(10,j++);cprintf("学号:[%d]",std[i1].no);
gotoxy(10,j++);cprintf("姓名:[%s]",std[i1].name);
gotoxy(10,j++);
cprintf(" [Y]确认删除 [N]取消");
for(;;){
ch=getch();
if(ch=='y'||ch=='Y'){
for(i=i1;i<stdi-1;i++)std[i]=std[i+1];
stdi--;
/*求得本次记录的排名*/
gque(3);/*将std[60]按学积分降序排列*/
for(i=0;i<stdi;i++){
if(std[i].wtall==std[i-1].wtall)std[i].que=std[i-1].que;
else std[i].que=i+1;
}
gque(1);/*将更新的std[60]按学号升序排列*/
clrscr();
gotoxy(15,8);
cprintf("数据删除成功!");
return;
}
if(ch=='n'||ch=='N'){
clrscr();
gotoxy(15,8);
cprintf("操作已取消!");
return;
}
}
}
}
gotoxy(15,8);
clrscr();
cprintf("查无此人");
return;
}
}
main(){
int ch=0;
init();
for(;;){
if(ch==F5)init();
if(gcmd!='z'){
if(gcmd==('H'+1)||gcmd=='i'){gcmd='z';insert();}
if(gcmd==('L'+1)||gcmd=='m'){gcmd='z';modify();}
if(gcmd==('C'+1)||gcmd=='d'){gcmd='z';dlt();}
if(gcmd==('W'+1)||gcmd=='x'){gcmd='z';xuef();}
if(gcmd=='K'||gcmd=='k'){gcmd='z';sysinit();}
}
while(!bioskey(1)); /*循环等待,直到有键按下为止*/
ch=bioskey(0)>>8;
if(ch==ESC){
window(1,1,80,25);
clrscr();
printf("\n\n 成绩系统已经退出!\n\n");
printf(" 类型:课程设计\n");
printf(" 作者:陈欢\n");
printf("\n\n 谢谢使用!\n");
exit(0);
}
if(ch==I)insert();
if(ch==X)xuef();
if(ch==F4)stdview();
if(ch==F7)getdata();
if(ch==F6)dsave();
if(ch==M)modify();
if(ch==D)dlt();
window(4,6,59,21); /*主信息输出窗口工作区*/
window(62,6,78,21);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -