C语言 学生管理系统 c++ 学生管理系统

这是在大一上学期写的课设,到大二才开始写csdn博客,花了四天时间从零到一,废话不多说,请欣赏下面的代码


c语言版 学生管理系统


#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<stdbool.h>
#include<algorithm>
#include<iostream>
#include<iomanip>
using namespace std;

char deletename[10];
char searchname[10];
char majormain[20];
char sexmain[3];
struct Linknode 
{
	char name[10];
	char sex[5];
	char major[20];
	char birthday[10];
	char address[20];
	int score;
	struct Linknode *next;
};
bool cmp(Linknode a,Linknode b)
{ 
   return a.score >b.score ;
}
struct Linknode *Linklist()//新增学生信息;
{
	struct Linknode *header=(struct Linknode *)malloc(sizeof(struct Linknode));
	struct Linknode *prear=header;
	strcpy(header->name,"sssssssss");
	int val=-1;
	while(true)
	{
		printf("是否继续输入学生信息:");
		scanf("%d",&val);
		if(val==-1)
		{
			break;
		 } 
		 struct Linknode *newnode=(struct Linknode *)malloc(sizeof(struct Linknode));
		 printf("请输入姓名:");
		scanf("%s",&newnode->name );
	     printf("请输入性别:");
	    scanf("%s",&newnode->sex );
	     printf("请输入专业:");
	    scanf("%s",&newnode->major );
	     printf("请输入出生日期:");
	    scanf("%s",&newnode->birthday );
	     printf("请输入家庭住址:");
	    scanf("%s",&newnode->address );
	     printf("请输入英语入学成绩:");
	    scanf("%d",&newnode->score );
	    
	    prear->next =newnode;
	    newnode->next =NULL;
	    prear=newnode;
	}
    return header;
}
void deletepeople(struct Linknode *header,char deletename[10])//删除学生信息; 
{
	struct Linknode *prear1=header;struct Linknode *prear2=header->next ;
	while(prear2!=NULL)
	{
		if( strcmp( prear2->name,deletename)==0)
		{
			break;
		}
		prear1=prear1->next ; prear2=prear2->next ;
	}
	if(prear2==NULL) return;
	//删去节点;
	prear1->next =prear2->next ;
	prear2->next =NULL; 
	free(prear2);
}
void print(struct Linknode *header)//导出学生信息; 
{
		printf("\t\t姓名\t性别\t专业        出生日期    家庭住址    英语分数\n");
	struct Linknode *prear=header->next ;
	while(prear!=NULL)
	{
	    printf("\t\t%-8s%-8s%-12s%-12s%-12s%-5d\n",prear->name,prear->sex,prear->major,prear->birthday,prear->address,prear->score);
		
		prear=prear->next ;
	}
}
void search(struct Linknode *header,char searchname[10] )//学生信息搜索;
{
	struct Linknode *prear=header;
	while(prear!=NULL)
	{
		if(strcmp(prear->name,searchname)==0 )
		{
			break;
		}
		prear=prear->next ;
	}
	if(prear==NULL) return;
	
		printf("姓名:%s\n",prear->name );
		printf("性别:%s\n",prear->sex );
		printf("专业:%s\n",prear->major );
		printf("出生日期:%s\n",prear->birthday );
		printf("家庭住址:%s\n",prear->address );
		printf("入学英语分数:%d\n",prear->score );
 } 
void statistics(struct Linknode *header)//统计人数; 
{
	int age,majorcount=0,sexcount=0,agecount=0;
	printf("专业,性别,年龄有:");
	scanf("%s%s%d",&majormain,&sexmain,&age);
	
	struct Linknode *prear=header->next ;
	while(prear!=NULL)
	{
		if(strcmp(prear->major,majormain)==0 ) majorcount++;
		if(strcmp(prear->sex ,sexmain)==0) sexcount++;
		if(age==(2021-((prear->birthday[0]-'0')*1000+(prear->birthday[1]-'0')*100+(prear->birthday[2]-'0')*100+(prear->birthday[3]-'0'))))
		agecount++;
		
		prear=prear->next ;
	}
	
	printf("专业有:%d\n性别有:%d\n年龄有:%d",majorcount,sexcount,agecount);
}
void Englishranking(struct Linknode *header)//英语排名; 
{
	struct Linknode q[100];
	int n=0,i=1;
	struct Linknode *prear=header->next ;
	while(prear!=NULL)
	{
		strcpy(q[i].name ,prear->name);
		q[i].score =prear->score ;
		i++;
		n++;
		
		prear=prear->next ;
	}
	sort(q+1,q+n+1,cmp);
	for(int j=1;j<=n;j++)
	{
		printf("%s\n",q[j].name );
	}
}
void Increase(struct Linknode *header)//新增人数; 
{
	struct Linknode *prear1=header;
	struct Linknode *prear2=header->next ;
	while(prear2!=NULL)
	{
		prear1=prear1->next ;
		prear2=prear2->next ;
	}
	struct Linknode *newnode=(struct Linknode *)malloc(sizeof(struct Linknode));
	
		 printf("请输入姓名:");
		scanf("%s",&newnode->name );
	     printf("请输入性别:");
	    scanf("%s",&newnode->sex );
	     printf("请输入专业:");
	    scanf("%s",&newnode->major );
	     printf("请输入出生日期:");
	    scanf("%s",&newnode->birthday );
	     printf("请输入家庭住址:");
	    scanf("%s",&newnode->address );
	     printf("请输入英语入学成绩:");
	    scanf("%d",&newnode->score );
	    
	    newnode->next =NULL;
	    prear1->next =newnode;
}
void function(struct Linknode *p,int n)
{
		switch(n)
		{
			case 1:
				printf("新增人数:");
				Increase(p);
				break;
			case 2:
				printf("请输入删除人的名字:"); 
				scanf("%s",&deletename);
                deletepeople(p,deletename);
                break;
            case 3:
            	print(p);
            	break;
            case 4:
            	printf("请输入搜索人的名字:");
            	scanf("%s",&searchname);
	            search(p,searchname);
	            break;
	        case 5:
	        	statistics(p);
	        	break;
	        case 6:
	        	Englishranking(p);
	        	break;
	        case 7:
	        	exit(0);
	        	break;
		}
		printf("\n\n");
}
int main()
{
		system("color 70");

	struct Linknode *p=Linklist();

	int n;
	while(1)
	{
		    	printf("\t\t\t\t\t\t欢迎来到学生管理系统!\n");
			printf("\t\t\t\t\t******操作1是新增学生信息******\n\t\t\t\t\t******操作2是删除学生信息******\n\t\t\t\t\t******操作3是得到学生的信息****\n\t\t\t\t\t******操作4是学生信息搜索******\n\t\t\t\t\t******操作5是统计人数**********\n\t\t\t\t\t******操作6是英语排名**********\n\t\t\t");
			printf("\t\t******操作7是退出学生信息******\n\t\t\t\n");
			scanf("%d",&n);
			function(p,n);
			system("pause");
			system("cls");
	}
    
    
	return 0;
}

代码演示 

比起上个c语言版本多了一个在开始之前的密码输入


c++语言版  学生管理系统

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<stdbool.h>
#include<algorithm>
#include<iostream>
#include<iomanip>                                                                                                                                                                                                     
#include<fstream>
#include<sstream>   // 用于stringstream sin(sline);
#include<conio.h>//用于登录密码; 
using namespace std;
char deletename[10];
char searchname[10];
char majormain[20];
char sexmain[3];
struct Linknode
{
	char name[20];
	int score;
};
class S 
{
	public:
		S *Linklist();//新增学生信息;
		void deletepeople(S *header,char deletename[10]);//删除学生信息; 
		void print(S *header);//导出学生信息;
		void search(S *header,char searchname[10] );//学生信息搜索;
		void statistics(S *header);//统计人数;
		void Englishranking(S *header);//英语排名; 
		void Increase(S *header);//新增人数;
		void listtofile(S *header);
		void filetolist(S *header);
	private:
		char name[10];
		char sex[5];
		char major[20];
		char birthday[10];
		char address[20];
		int score;
		S *next;
};
bool cmp(Linknode a,Linknode b)
{ 
   return a.score >b.score ;
}
S *S::Linklist()//新增学生信息;
{
	S *header=new(S);
	strcpy(header->name,"sssssssss");
	header ->next=NULL;
    return header;
}
void S::deletepeople(S *header,char deletename[10])//删除学生信息; 
{
	S *prear1=header;
	S *prear2=header->next;
	while(prear2!=NULL)
	{
		if( strcmp( prear2->name,deletename)==0)
		{
			break;
		}
		prear1=prear1->next ; prear2=prear2->next ;
	}
	if(prear2==NULL) return;
	//删去节点;
	prear1->next =prear2->next;
	prear2->next =NULL; 
	delete(prear2);
}
void S::print(S *header)//导出学生信息; 
{
		printf("\t\t姓名\t性别\t专业        出生日期    家庭住址    英语分数\n");
	S *prear=header->next ;
	while(prear!=NULL)
	{
	    printf("\t\t%-8s%-8s%-12s%-12s%-12s%-5d\n",prear->name,prear->sex,prear->major,prear->birthday,prear->address,prear->score);
		
		prear=prear->next ;
	}
}
void S::search(S *header,char searchname[10] )//学生信息搜索;
{
	S *prear=header;
	while(prear!=NULL)
	{
		if(strcmp(prear->name,searchname)==0 )
		{
			break;
		}
		prear=prear->next ;
	}
	if(prear==NULL) return;
	
		printf("姓名:%s\n",prear->name );
		printf("性别:%s\n",prear->sex );
		printf("专业:%s\n",prear->major );
		printf("出生日期:%s\n",prear->birthday );
		printf("家庭住址:%s\n",prear->address );
		printf("入学英语分数:%d\n",prear->score );
 } 
void S::statistics(S *header)//统计人数; 
{
	int age,majorcount=0,sexcount=0,agecount=0;
	printf("专业,性别,年龄有:");
	scanf("%s%s%d",majormain,sexmain,&age);
	
    S *prear=header->next ;
	while(prear!=NULL)
	{
		if(strcmp(prear->major,majormain)==0 ) majorcount++;
		if(strcmp(prear->sex ,sexmain)==0) sexcount++;
		if(age==(2021-((prear->birthday[0]-'0')*1000+(prear->birthday[1]-'0')*100+(prear->birthday[2]-'0')*100+(prear->birthday[3]-'0'))))
		agecount++;
		
		prear=prear->next ;
	}
	
	printf("专业有:%d\n性别有:%d\n年龄有:%d",majorcount,sexcount,agecount);
}
void S::Englishranking(S *header)//英语排名; 
{
	struct Linknode q[100];
	int n=0,i=1;
	S *prear=header->next;
	while(prear!=NULL)
	{
		strcpy(q[i].name ,prear->name);
		q[i].score =prear->score ;
		i++;
		n++;
		
		prear=prear->next ;
	}
	sort(q+1,q+n+1,cmp);
	for(int j=1;j<=n;j++)
	{
		printf("%s\n",q[j].name );
	}
}
void S::Increase(S *header)//新增人数; 
{
	S *prear1=header;
	S *prear2=header->next ;
	while(prear2!=NULL)
	{
		prear1=prear1->next ;
		prear2=prear2->next ;
	}
	S *newnode=new(S);
	
		 printf("请输入姓名:");
		scanf("%s",newnode->name );
	     printf("请输入性别:");
	    scanf("%s",newnode->sex );
	     printf("请输入专业:");
	    scanf("%s",newnode->major );
	     printf("请输入出生日期:");
	    scanf("%s",newnode->birthday );
	     printf("请输入家庭住址:");
	    scanf("%s",newnode->address );
	     printf("请输入英语入学成绩:");
	    scanf("%d",&newnode->score );
	    
	    newnode->next =NULL;
	    prear1->next =newnode;
}
void S::listtofile(S *header)
{
	ofstream outfile("c++学生管理系统");
	S *prear=header-> next;
	while(prear!=NULL)
	{
		outfile<<prear->name<<" "<<prear->sex<<" "<<prear->major<<" "<<prear->birthday<<" "<<prear->address<<" "<<prear->score<<endl;
		prear=prear->next;
	}
    outfile.close();
}
void S::filetolist(S *header)
{
    ifstream infile("c++学生管理系统");
	string sline;	
	S *prear=header;
	while(getline(infile,sline))
	{
		S *newnode=new(S);
		istringstream sin(sline);
		sin>>newnode->name>>newnode->sex>>newnode->major>>newnode->birthday>>newnode->address>>newnode->score;
		prear->next=newnode;
		newnode->next=NULL;
		prear=newnode;
	}
	infile.close();
}
int main()
{
	while(true)
	{
		cout<<endl;
		cout<<"================================请输入登录密码:==================="<<endl<<endl;
		char ch;
		    char mima[100]="tgx520";
		    char mimaa[100];
		    int i=0;
		    while((ch=getch())!='\r')
		    {
		    	if(ch==8) 
				{
				   putchar('\b');
				   putchar(' ');
				   putchar('\b');
				   if(i>0)
				   {
				   	 i--;	
				   }
				}
				if(('a'<=ch&&ch<='z')||('0'<=ch&&ch<='9'))
				{
					putchar('*');
					mimaa[i]=ch;
					i++;
				}
				if(i==45) break;
			}
			mimaa[i]='\0';
			if(strcmp(mima,mimaa)==0)  break;
			system("cls");
	}
		system("cls");
	system("color 70");
    S aa; 
	S *p=aa.Linklist();
    aa.filetolist(p);
    
	int n;
	while(1)
	{
		    	printf("\t\t\t\t\t\t欢迎来到学生管理系统!\n");
			printf("\t\t\t\t\t******操作1是新增学生信息******\n\t\t\t\t\t******操作2是删除学生信息******\n\t\t\t\t\t******操作3是得到学生的信息****\n\t\t\t\t\t******操作4是学生信息搜索******\n\t\t\t\t\t******操作5是统计人数**********\n\t\t\t\t\t******操作6是英语排名**********\n\t\t\t");
			printf("\t\t******操作7是退出学生信息******\n\t\t\t\n");
			scanf("%d",&n);
		
		    		switch(n)
					{
						case 1:
							printf("新增人数:");
							aa.Increase(p);
							break;
						case 2:
							printf("请输入删除人的名字:"); 
							scanf("%s",deletename);
			                aa.deletepeople(p,deletename);
			                break;
			            case 3:
			            	aa.print(p);
			            	break;
			            case 4:
			            	printf("请输入搜索人的名字:");
			            	scanf("%s",searchname);
				            aa.search(p,searchname);
				            break;
				        case 5:
				        	aa.statistics(p);
				        	break;
				        case 6:
				        	aa.Englishranking(p);
				        	break;
				        case 7:
				        	exit(0);
				        	break;
					}
					printf("\n\n");
		
			system("pause");
			system("cls");
		    aa.listtofile(p);
	}
	return 0;
}

QQ录屏20220525210737

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值