这是在大一上学期写的课设,到大二才开始写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