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

📄 sxb.cpp

📁 这是一个用visual C++开发的学生成绩管理系统
💻 CPP
字号:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
struct xsb{
    long NO;
	char name[20];
	int math;
	int prog;
	int score;
};
int num=0;
void newdata(xsb*xs)
{
	long NO;
label1:	printf("请输入学号:\n");
    scanf("%d",&NO);
	for(int i=0;i<num;i++)
		if(NO==xs[i].NO)
		{printf("学号重复,请重新输入!");goto label1;}
	xs[num].NO=NO;
	printf("请输入姓名:\n");
	scanf("%s",xs[num].name);
    printf("请输入数学成绩:\n");
	scanf("%d",&xs[num].math);
	printf("请输入程序设计成绩:\n");
	scanf("%d",&xs[num].prog);
	xs[num].score=xs[num].math+xs[num].prog;
	num++;
}
void adddata(xsb*xs)
{
 newdata(xs);
}
void deletedata(xsb*xs)
{ 
   long NO,j=-1;
   printf("请输入想删除的学号:\n");
   scanf("%d",&NO);
   for(int i=0;i<num;i++)
   {
	   if(NO==xs[i].NO){j=i;break;}
   }
   for(i=j;i<num-1;i++)
   {
	   xs[i].math=xs[i+1].math;
	   strcpy(xs[i].name,xs[i+1].name);
	   xs[i].NO=xs[i+1].NO;
	   xs[i].prog=xs[i+1].prog;
   }
   num--;
   printf("已成功删除数据\n");
}
void exch(xsb &A, xsb &B) 
{ xsb t;
  t.math = A.math;
  strcpy(t.name,A.name);
  t.NO=A.NO;
  t.prog=A.prog;
  t.score=A.score;
  A.math = B.math;
  strcpy(A.name,B.name);
  A.NO=B.NO;
  A.prog=B.prog;
  A.score=B.score;
  B.math = t.math;
  strcpy(B.name,t.name);
  B.NO=t.NO;
  B.prog=t.prog;
  B.score=t.score;
} 
void compexch(xsb &A, xsb &B,int tag) 
{   
	switch(tag)
	{case 1:if (B.math > A.math) exch(A, B); break;
 	 case 2:if (B.prog > A.prog) exch(A, B); break;
	 case 3:if (B.score > A.score) exch(A, B); break;
	 default:break;
	}
}
void sort1(xsb a[], int l, int r,int tag)
{ for (int i = l+1; i <= r; i++)
        for (int j = i; j > l; j--) 
          compexch(a[j-1], a[j],tag);
}
void Sort(xsb*xs)
{
	int tag,i;
	while(1)
	{
    printf("####排序子菜单#######\n");
    printf("1.数学成绩排序\n2.程序设计成绩排序\n3.总分排序\n4.返回主菜单\n请按序号选择相应操作\n");
    printf("#####################\n");
	scanf("%d",&tag);
	switch(tag)
		 {
		   case 1:case 2:case 3:sort1(xs,0,num-1,tag);break;
		   case 4:return;
		 }
    switch(tag)
		 {
		   case 1:printf("排序成功,按数学成绩排序\n");
			    printf("**************************************************\n");
			    printf("学号             姓名          数学成绩\n");
				for(i=0;i<num;i++)
				printf("%d               %s            %d\n",xs[i].NO,xs[i].name,xs[i].math);
		        printf("**************************************************\n");
				break;
		   case 2:printf("排序成功,按按程序设计成绩排序\n");
			    printf("**************************************************\n");
			    printf("学号             姓名          程序设计成绩\n");
				for(i=0;i<num;i++)
				printf("%d               %s            %d\n",xs[i].NO,xs[i].name,xs[i].prog);
		        printf("**************************************************\n");
				break;
		   case 3:printf("排序成功,按总成绩排序\n");
			    printf("**************************************************\n");
			    printf("学号             姓名          总成绩\n");
				for(i=0;i<num;i++)
				printf("%d               %s            %d\n",xs[i].NO,xs[i].name,xs[i].score);
		        printf("**************************************************\n");
				break; 
		   case 4:return;
		 }
	}

}
void Find(xsb*xs)
{
    int tag,i,flag=0,t;
	xsb temp;
	while(1)
	{t=0;
    printf("####查询子菜单#######\n");
    printf("1.学号查询\n2.姓名查询\n3.数学成绩查询\n4.程序设计成绩查询\n5.总分查询\n6.返回主菜单\n请按序号选择相应操作\n");
    printf("#####################\n");
	scanf("%d",&tag);
	switch(tag)
		 {
		   case 1:printf("请输入待查学号:\n");
	              scanf("%d",&temp.NO);
				  printf("*******查找结果****************************************\n");
				  printf("学号     姓名      数学成绩    程序设计成绩    总成绩\n");
			   for(i=0;i<num;i++)
			    if(xs[i].NO==temp.NO)
				{			    
				printf("%d       %s        %d          %d              %d\n",xs[i].NO,xs[i].name,xs[i].math,xs[i].prog,xs[i].score);
		        flag=1;
				}
			   if(flag!=1)printf("查找完毕,没有找到您需要的结果!\n");
			   printf("*******************************************************\n");
			   break;
		   case 2:printf("请输入待查姓名:\n");
	              scanf("%s",temp.name);
				  printf("*******查找结果****************************************\n");
				  printf("学号     姓名      数学成绩    程序设计成绩    总成绩\n");
			   for(i=0;i<num;i++)
			    if(strcmp(xs[i].name,temp.name)==0)
				{			    
				printf("%d       %s        %d          %d              %d\n",xs[i].NO,xs[i].name,xs[i].math,xs[i].prog,xs[i].score);
		        flag=1;
				}
			   if(flag!=1)printf("查找完毕,没有找到您需要的结果!\n");
			   printf("*******************************************************\n");
			   break;
		   case 3:printf("请输入数学成绩:\n");
	              scanf("%d",&temp.math);
				  printf("*******查找结果****************************************\n");
				  printf("学号     姓名      数学成绩\n");
			   for(i=0;i<num;i++)
			    if(xs[i].math>=temp.math)
				{t++;			    
				printf("%d       %s        %d\n",xs[i].NO,xs[i].name,xs[i].math);
		        flag=1;
				}
			   if(flag!=1)printf("查找完毕,没有找到您需要的结果!\n");
			   else printf("共有%d个学生符合条件!\n",t);
			   printf("*******************************************************\n");
			   break;
		   case 4:printf("请输入程序设计成绩:\n");
	              scanf("%d",&temp.prog);
				  printf("*******查找结果****************************************\n");
				  printf("学号     姓名      程序设计成绩\n");
			   for(i=0;i<num;i++)
			    if(xs[i].prog>=temp.prog)
				{t++;			    
				printf("%d       %s        %d\n",xs[i].NO,xs[i].name,xs[i].prog);
		        flag=1;
				}
			   if(flag!=1)printf("查找完毕,没有找到您需要的结果!\n");
			   else printf("共有%d个学生符合条件!\n",t);
			   printf("*******************************************************\n");
			   break;
		   case 5:printf("请输入总成绩:\n");
	              scanf("%d",&temp.score);
				  printf("*******查找结果****************************************\n");
				  printf("学号     姓名      总成绩\n");
			   for(i=0;i<num;i++)
			    if(xs[i].score>=temp.score)
				{t++;			    
				printf("%d       %s        %d\n",xs[i].NO,xs[i].name,xs[i].score);
		        flag=1;
				}
			   if(flag!=1)printf("查找完毕,没有找到您需要的结果!\n");
			   else printf("共有%d个学生符合条件!\n",t);
			   printf("*******************************************************\n");
			   break;
		   case 6:return;
		 }
	}
}
void main()
{
	int tag;
	xsb xs[100];
	 while(1)
	 {   printf("######主菜单#########\n");
		 printf("1.新建数据\n2.添加数据\n3.删除数据\n4.排序\n5.查询\n6.退出\n请按序号选择相应操作\n");
		 printf("#####################\n");
		 scanf("%d",&tag);
		 switch(tag)
		 {
		   case 1:newdata(xs);break;
		   case 2:adddata(xs);break;
		   case 3:deletedata(xs);break;
		   case 4:Sort(xs);break;
		   case 5:Find(xs);break;
		   case 6:return;
		 }
	 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -