这是在大一上学期写的课设,到大二才开始写csdn博客,花了四天时间从零到一,废话不多说,请欣赏下面的代码
c语言版 学生管理系统
#include#include #include #include #include #include #include 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("tt姓名t性别t专业 出生日期 家庭住址 英语分数n"); struct Linknode *prear=header->next ; while(prear!=NULL) { printf("tt%-8s%-8s%-12s%-12s%-12s%-5dn",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("姓名:%sn",prear->name ); printf("性别:%sn",prear->sex ); printf("专业:%sn",prear->major ); printf("出生日期:%sn",prear->birthday ); printf("家庭住址:%sn",prear->address ); printf("入学英语分数:%dn",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("专业有:%dn性别有:%dn年龄有:%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("%sn",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("nn"); } int main() { system("color 70"); struct Linknode *p=Linklist(); int n; while(1) { printf("tttttt欢迎来到学生管理系统!n"); printf("ttttt******操作1是新增学生信息******nttttt******操作2是删除学生信息******nttttt******操作3是得到学生的信息****nttttt******操作4是学生信息搜索******nttttt******操作5是统计人数**********nttttt******操作6是英语排名**********nttt"); printf("tt******操作7是退出学生信息******ntttn"); scanf("%d",&n); function(p,n); system("pause"); system("cls"); } return 0; }
代码演示
比起上个c语言版本多了一个在开始之前的密码输入
c++语言版 学生管理系统
#include#include #include #include #include #include #include #include #include // 用于stringstream sin(sline); #include //用于登录密码; 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("tt姓名t性别t专业 出生日期 家庭住址 英语分数n"); S *prear=header->next ; while(prear!=NULL) { printf("tt%-8s%-8s%-12s%-12s%-12s%-5dn",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("姓名:%sn",prear->name ); printf("性别:%sn",prear->sex ); printf("专业:%sn",prear->major ); printf("出生日期:%sn",prear->birthday ); printf("家庭住址:%sn",prear->address ); printf("入学英语分数:%dn",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("专业有:%dn性别有:%dn年龄有:%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("%sn",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< name<<" "<sex<<" "<major<<" "<birthday<<" "<address<<" "<score<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< 0) { i--; } } if(('a'<=ch&&ch<='z')||('0'<=ch&&ch<='9')) { putchar('*'); mimaa[i]=ch; i++; } if(i==45) break; } mimaa[i]=' '; 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("tttttt欢迎来到学生管理系统!n"); printf("ttttt******操作1是新增学生信息******nttttt******操作2是删除学生信息******nttttt******操作3是得到学生的信息****nttttt******操作4是学生信息搜索******nttttt******操作5是统计人数**********nttttt******操作6是英语排名**********nttt"); printf("tt******操作7是退出学生信息******ntttn"); 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("nn"); system("pause"); system("cls"); aa.listtofile(p); } return 0; } QQ录屏20220525210737



