⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adstd.c

📁 这是我的课程设计 由于时间有限
💻 C
📖 第 1 页 / 共 2 页
字号:
		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 + -