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

📄 cpp1.cpp

📁 用vc编的学生管理系统,可以导入
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include<dos.h>
#include<string.h>

struct Student
{
	long number;
	char name[20];
	float pingshi, qizhong, qimo, zongfen;
	Student* next;
};
Student* head;
int n;

/*输入新的纪录*/
void input()
{
	Student *in, *in_end, *i;
	char ch='y';
	in=in_end=i=new Student;
	head=in;
    n=0;
	while(ch=='y'||ch=='Y')
	{
		if(head->next==NULL)
			head->next=in;
		else	
			in_end->next=in;
	
        in_end=in;

		in=new Student;

n2:	    printf("\n请输入以下信息,注意学号应为大于0的整数。\n\n");
		printf( "学号:" );
		scanf("%d",&in_end->number);
		
n1:		if(in_end->number<=0)           // 学号必须大于0
		{
			printf( "输入错误,请重新输入学号:");
		    scanf("%d",&in_end->number);
			goto n1;
		}
       i=head;
	   if(n>0)
	   {
		   for(int j=0;j<n;j++)
		   {
			   if(in_end->number!=i->number)
				   i=i->next;
			   else
			   {
				   printf("学号重复,请重新输入!\n");
				   goto n2;
			   }
		   }
	   }
		
		printf("姓名:");
		scanf("%s",&in_end->name);

		printf( "平时成绩(0-100):") ;
		scanf("%f",&in_end->pingshi);
		while(in_end->pingshi<0||in_end->pingshi>100)
		{
		    getchar();
			printf("输入错误,请重新输入!\n");
		    printf("平时成绩(0-100):");
	     	scanf("%f",&in_end->pingshi);
		}
		
		printf( "期中成绩(0-100):") ;
		scanf("%f",&in_end->qizhong);
		while(in_end->qizhong<0||in_end->qizhong>100)
		{
		    getchar();
			printf("输入错误,请重新输入!\n");
		    printf("期中成绩(0-100):");
	     	scanf("%f",&in_end->qizhong);
		}

		printf( "期末成绩(0-100):") ;
		scanf("%f",&in_end->qimo);
		while(in_end->qimo<0||in_end->qimo>100)
		{
		    getchar();
			printf("输入错误,请重新输入!\n");
		    printf("期末成绩(0-100):");
	     	scanf("%f",&in_end->qimo);
		}
	
		getchar();

		in_end->next=in;
		in_end=in_end->next;
		in_end->next=NULL;
		printf("是否还要输入:(y/n)");
		scanf("%c", &ch);
		n++;
		i=head;
	}
	printf("输入学生记录%d个!\n",n);
    return;
}

/*显示所有记录*/
void xianshi(Student* x_head)
{
	Student* x_end;
	x_end=x_head;
	printf("********************************************************************\n");
    printf("*学号  姓名     平时成绩       期中成绩       期末成绩        总分 *\n");
	printf("********************************************************************\n");
	printf("%d\t%s\t%f\t%f\t%f\t%f",x_end->number,x_end->name,x_end->pingshi,x_end->qizhong,x_end->qimo,x_end->zongfen);
	printf("\r\n");
	while(1)
	{
		if(x_end->next==NULL)
	    	break;
		else if(x_end->next->number<0)
			break;
		x_end=x_end->next;
        printf("%d\t%s\t%f\t%f\t%f\t%f",x_end->number,x_end->name,x_end->pingshi,x_end->qizhong,x_end->qimo,x_end->zongfen);
	    printf("\r\n");
	
	}
	cout<<"请按回车继续!"<<endl;
	getchar();
    getchar();
	return;

}

/*从文件读入学生记录*/
Student *loadfile(Student *head)
{
	Student* l_end,*l,*pf,*pb;
	FILE *fp;
	int m=0;
	n=0;
	fp=fopen("rgrade.txt","r+");
	printf("**********************************************************************\n");
    printf("*学号  姓名     平时成绩       期中成绩         期末成绩        总分 *\n");
	printf("**********************************************************************\n");


  while(!feof(fp))
	{
		m++;
		l_end=new Student;
		fscanf(fp,"%d%s%f%f%f%f",&l_end->number,l_end->name,&l_end->pingshi,&l_end->qizhong,&l_end->qimo,&l_end->zongfen);
        if(l_end->number<0)
		    return(head);
		printf("%d\t%s\t%f\t%f\t%f\t%f\n",l_end->number,l_end->name,l_end->pingshi,l_end->qizhong,l_end->qimo,l_end->zongfen);
		n=n+1;
		if(n==1)
		{
			head=l_end;
			l=l_end;
		}
		else 
			l->next=l_end;
		l=l_end;
		
	}
	l->next=NULL;
	fclose(fp);
	n=m;
	return (head);

}

/*保存文件*/
void savefile()
{
	Student *s_end;
	FILE *fp;
	s_end=head;

		fp=fopen("wgrade.txt","wt+");
	
		
	fprintf(fp,"**********************************************************************\n");
    fprintf(fp,"*学号  姓名     平时成绩       期中成绩         期末成绩        总分 *\n");
	fprintf(fp,"**********************************************************************\n");
    
	while(1)
	{
		fprintf(fp,"%d\t%s\t%f\t%f\t%f\t%f\n",s_end->number,s_end->name,s_end->pingshi,s_end->qizhong,s_end->qimo,s_end->zongfen);
	    s_end=s_end->next;
		if (s_end==NULL)
			break;
		else if (s_end->number<0)
			break;
	}
	fclose(fp);
	printf("记录已保存到wgrade.txt文件中!\n");

	return;
}

/*删除*/
void delet()
{
	Student *d_end, *d;
	int delnumber;
	d_end=head->next;
    printf( "请输您想删除的学生记录的学号:");
	scanf("%d",&delnumber);

		 if(head->number==delnumber)
		 {
	    	d=head;
	    	head=head->next;
	    	delete d;
			// head=head->next;
            cout << "学号为"<< delnumber <<"的记录删除成功!"<<endl;
	    	return;
		 }
	d=head;
	while(1)
	{

		if(d_end->number==delnumber)
			if(d_end->next==NULL)
			{
				d->next=NULL;
				delete d_end;
				cout << "学号为"<< delnumber <<"的记录删除成功!"<<endl;
				return;
			}
			else
			{
				d->next=d_end->next;
				delete d_end;
				cout << "学号为"<< delnumber <<"的记录删除成功!"<<endl;
				return;
			}
		d=d_end;
	   d_end=d_end->next;
	   if(d_end==NULL)
		 break;
	}

    cout << "学号为" << delnumber <<"的记录不存在!"<<endl;
d1:	cout<<"请按回车继续!"<<endl;
	getchar();
    getchar();
}

/*查询*/
void select(Student *s_head)
{
	Student *s_end;
	s_end=s_head;
	int selnumber;
    printf( "请输您想查找的学生记录的学号:");
	scanf("%d",&selnumber);
	while(1)
	{
		if(s_end->number==selnumber)
		{
			cout << endl << "您查找的学生记录如下:" <<endl;
			cout << "学号:" << s_end->number << endl;
			cout << "姓名:" << s_end->name << endl;
			cout << "平时成绩:" << s_end->pingshi << endl;
			cout << "期中成绩:" << s_end->qizhong << endl;
			cout << "期末成绩:" << s_end->qimo << endl;
			cout << "总分:" << s_end->zongfen << endl;
			break;
		}
        else 
			s_end=s_end->next;
		if (s_end==NULL)
		{
			printf("您要查询的纪录不存在!\n");
			break;
		}
    }
    
}

/*插入*/
void charu()
{
	Student * c_end,*c_new,*c;
	c_end=head;
    int chanumber,j;
    c_new=new Student;
    printf("请输入插入位置(学号):");
	scanf("%d",&chanumber);
c2:	
	    printf("\n请输入以下信息,注意学号应为大于0的整数。\n\n");
		printf( "学号:" );
		scanf("%d",&c_new->number);
		
c1:		if(c_new->number<=0)           // 学号必须大于0
		{
			printf( "输入错误,请重新输入学号:");
		    scanf("%d",&c_new->number);
			goto c1;
		}
		else
		{
	     c=head;
	     if(n>0)
		 {
		   for(j=0;j<1;j++)
		   {
			   if(c_new->number!=c->number)
				   c=c->next;
			   else
			   {
				   printf("学号重复,请重新输入!\n");
				   goto c2;
			   }
		   }
		 }
		}
		printf("姓名:");
		scanf("%s",&c_new->name);

		printf( "平时成绩(0-100):") ;
		scanf("%f",&c_new->pingshi);
		while(c_new->pingshi<0||c_new->pingshi>100)
		{
		    getchar();
			printf("输入错误,请重新输入!\n");
		    printf("平时成绩(0-100):");
	     	scanf("%f",&c_new->pingshi);
		}
		
		printf( "期中成绩(0-100):") ;
		scanf("%f",&c_new->qizhong);
		while(c_new->qizhong<0||c_new->qizhong>100)
		{
		    getchar();
			printf("输入错误,请重新输入!\n");
		    printf("期中成绩(0-100):");
	     	scanf("%f",&c_new->qizhong);
		}

		printf( "期末成绩(0-100):") ;
		scanf("%f",&c_new->qimo);
		while(c_new->qimo<0||c_new->qimo>100)
		{
		    getchar();
			printf("输入错误,请重新输入!\n");
		    printf("期末成绩(0-100):");
	     	scanf("%f",&c_new->qimo);
		}

⌨️ 快捷键说明

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