用C++编写的学生信息管理系统

发布于2022-01-13 19:11:37

学生基本信息管理软件设计:可以采用结构体数组结合文件形式存储学生的信息,每个学生应包含如下几方面的信息(其中后三项的值指成绩):学号、姓名、性别、学院、专业班级,外语、计算机、数学。软件由主模块(含欢迎界面)+下列5个功能模块组成:(1)删除一个学生的信息(需指定要删除学生的学号);(2)增加一个学生的信息(需输入要增加学生的所有信息);(3)查找一个学生的信息(需指定学号或姓名);(4)按三门课总分排列所有学生信息;(5)退出程序的运行。请按照要求来写,不要随便找一个类似的给我啊。要不那个高手找个类似的在对照我的要求改一改发给我,谢谢!

3个回答
admin
网友回答2022-01-13
#include #include #include #include #include #define max 100 ///////////////////////////////////// /////strcut stu struct stu //学生资料结构体 { char name[10]; int num; char adress[10]; float x,y,z,score; int number; }; ////////////////////////////////////////// ///////student.cpp int count=0; int temp=0; class student //学生类 { private: stu data[max]; char start_del; public: void input(char *ch1,int num,char *ch2,float x,float y,float z); //输入 void find(int num); //查找 void del(int num); //删除 int check_num(int num) //确定没有重复学号 { int m=0; while(m<=count) if(num==data[m++].num) break; if(m>count) return 0; else return 1; } void taxis(); //总分排序 void show(); //输出 }; void student::input(char *ch1,int num,char *ch2,float x,float y,float z) { strcpy(data[count].name,ch1); data[count].num=num; strcpy(data[count].adress,ch2); data[count].x=x; data[count].y=y; data[count].z=z; count++; } void student::find(int num) { int m=0; while(m<=count) if(num==data[m++].num) break; if(m>count) { cout << "很抱歉,没有该学号的学生" << endl; start_del='n'; getch(); } else { temp=count; count=m; start_del='y'; cout << "该学生的资料为" <> chose; if(chose=='y'||chose=='Y') { int m=0; while(m<=count) if(num==data[m++].num) break; temp=count; count=m; while(count> chose; if(chose=='6') break; switch(chose) { case '1': { cout << "请输入学生姓名\t学号\t地址\t高数\t英语\t计算机成绩" << endl; ch1=new char[]; ch2=new char[]; cin >> ch1 >> num; while(st.check_num(num)) { cout << "学号重复,请重新输入" << endl; cin >> num; } cin >> ch2 >> x >> y >> z; st.input(ch1,num,ch2,x,y,z); }break; case '2': { temp=count; count=1; cout << "序号\t姓名\t学号\t地址\t高数\t英语\t计算机" << endl; while(count<=temp) { st.show(); count++; } count--; getch(); }break; case '3': { cout << "请输入你要查找学生的学号" << endl; cin >> find; st.find(find); }break; case '4': { cout << "请输入你要删除的学生学号" << endl; cin >> del; st.del(del); }break; case '5': { st.taxis(); }break; default: { cout << "输入错误!!!,请重新输入" << endl; getch(); } } } cout << "感谢你的使用\n" <
评论0
6
加载更多
;>
)>
admin
网友回答2022-01-13
#include"stdio.h" #include"stddef.h" #include "stdlib.h" #include"string.h" #define MAX 10 typedef struct student{ /*定义结构体*/ char name[MAX]; /*姓名*/ int num[MAX]; /* 学号*/ char sex[MAX]; /*性别*/ int chinese; /*语文*/ int mathematic; /* 数学*/ int english; /*英语*/ int computer; /*计算机*/ struct student *next; /*结构体指针*/ }stu; stu *head; /*头指针*/ void print() /*显示或打印函数*/ { system("cls"); printf("\t\t\t成绩管理系统\n"); /*成绩管理系统*/ printf("<1>输入数据\t"); /*输入数据*/ printf("<2>显示\t"); /*显示*/ printf("<3>插入数据\t"); /*插入数据*/ printf("<4>访问数据\t"); /*访问数据*/ printf("<5>以前数据\t"); /*以前数据*/ printf("<6>保留数据\t"); /*保留数据*/ printf("<7>更新数据\t"); /*更新数据*/ printf("<8>语文平均成绩\t"); /*语文平均成绩*/ printf("<9>数学平均成绩\t"); /*数学平均成绩*/ printf("<10>英语平均成绩\t"); /*英语平均成绩*/ printf("<11>计算机平均成绩\t"); /*计算机平均成绩*/ printf("<12>退出\t\n"); /*退出*/ } void cin(stu *p1) /*输入相关数据的函数*/ { printf("姓名:\n"); scanf("%s",&p1->name); printf("年龄:\n"); scanf("%d",&p1->num); printf("性别:\n"); scanf("%s",&p1->sex); printf("语文:\n"); scanf("%d",&p1->chinese); printf("数学:\n"); scanf("%d",&p1->mathematic); printf("英语:\n"); scanf("%d",&p1->english); printf("计算机:\n"); scanf("%d",&p1->computer); } stu *cindata() /*其他数据是否继续输入的函数*/ { stu *p1,*p2; int i=1; char ch; p1=(stu *)malloc(sizeof(stu)); head=p1; while(i) { cin(p1); printf("是否继续输入数据?y/n"); /*是否继续输入数据*/ ch=getchar(); ch=getchar(); if(ch=='n'||ch=='N') { i=0; p1->next=NULL; } else { p2=p1; p1=(stu *)malloc(sizeof(stu)); p2->next=p1; } } return(p1->next); } stu *lookdata(stu *p1) /*查看数据的函数*/ { while(p1!=NULL) { printf("年龄:%d\t",p1->num); printf("姓名:%s\t",p1->name); printf("性别:%s\t",p1->sex); printf("\n"); printf("语文:%d\t",p1->chinese); printf("数学:%d\t",p1->mathematic); printf("英语:%d\t",p1->english); printf("计算机:%d\t",p1->computer); printf("\n"); p1=p1->next; } return p1; } void insert() /*通过比较学号来插入数据的函数*/ { stu *p1,*p3,*p2; char ch; p1=head; p3=(stu *)malloc(sizeof(stu)); p3->next=NULL; if(head==NULL){ head=p3; return;} cin(p3); while(p1!=NULL&&(p1->numnum)) /*通过学号的比较来插入*/ { p2=p1;p1=p1->next;} if(p2==head) {p3->next=head; head=p3; return;} p3->next=p1; p2->next=p3; } find(stu *p2) /*通过姓名查找查看数据的函数*/ { char name[20]; int b=0; printf("Enter the name of the student you want to find:"); /*通过姓名查看*/ scanf("%s",name); while(p2!=NULL) {if(strcmp(name,p2->name)==0) { printf("The data you want has be found\n"); printf(" Name:%s\t",p2->name); printf("Num:%d\t",p2->num); printf("sex%s\t",p2->sex); printf("\n"); printf("Chinese:%d\t",p2->chinese); printf("Math:%d\t",p2->mathematic); printf("English:%d\t",p2->english); printf("Computer:%d\t",p2->computer); printf("\n"); b=1; } else if(b==0) printf("sorry not find data!"); p2=p2->next; } if(b==1) { print(); printf("Find one\n");} else {print(); printf("Not find\n"); } } void caverage() /*求各学生语文平均分、最高和最低分成绩的函数*/ { stu *p1; int i; float max=0.0,min=200.0; float sum=0.0,aver=0; p1=head; if(p1==NULL) printf("not data!"); else {for(i=0;p1!=NULL;i++,p1=p1->next) sum+=p1->chinese; aver=sum/i; p1=head; for(i=0;p1!=NULL;i++,p1=p1->next) {if(maxchinese) max=p1->chinese; } p1=head; for(i=0;p1!=NULL;i++,p1=p1->next) if(min>p1->chinese) min=p1->chinese; } printf("Chinese Average:%f",aver); printf("Chinese Max:%f",max); printf("Chinese Min:%f",min); } void maverage() /*求各学生数学平均分、最高和最低分成绩的函数*/ { stu *p1; int i; float max=0.0,min=200.0; float sum=0.0,aver=0; p1=head; if(p1==NULL) printf("not data!"); else {for(i=0;p1!=NULL;i++,p1=p1->next) sum+=p1->mathematic; aver=sum/i; p1=head; for(i=0;p1!=NULL;i++,p1=p1->next) {if(maxmathematic) max=p1->mathematic; } p1=head; for(i=0;p1!=NULL;i++,p1=p1->next) if(min>p1->mathematic) min=p1->mathematic; } printf("Mathe Average:%f",aver); printf("Mathe Max:%f",max); printf("Mathe Min:%f",min); } void eaverage() /*求各学生英语平均分、最高和最低分成绩的函数*/ { stu *p1; int i; float max=0.0,min=200.0; float sum=0.0,aver=0; p1=head; if(p1==NULL) printf("not data!"); else {for(i=0;p1!=NULL;i++,p1=p1->next) sum+=p1->english; aver=sum/i; p1=head; for(i=0;p1!=NULL;i++,p1=p1->next) {if(maxenglish) max=p1->english; } p1=head; for(i=0;p1!=NULL;i++,p1=p1->next) if(min>p1->english) min=p1->english; } printf("English Average:%f",aver); printf("English Max:%f",max); printf("English Min:%f",min); } void comaverage() /*求各学生计算机平均分、最高和最低分成绩的函数*/ { stu *p1; int i; float max=0.0,min=200.0; float sum=0.0,aver=0; p1=head; if(p1==NULL) printf("not data!"); else {for(i=0;p1!=NULL;i++,p1=p1->next) sum+=p1->computer; aver=sum/i; p1=head; for(i=0;p1!=NULL;i++,p1=p1->next) {if(maxcomputer) max=p1->computer; } p1=head; for(i=0;p1!=NULL;i++,p1=p1->next) if(min>p1->computer) min=p1->computer; } printf("Computer Average:%f",aver); printf("Computer Max:%f",max); printf("Computer Min:%f",min); } update(stu *p2) /*通过姓名查找来更新数据*/ { char name[10]; /*p2为指向结构体struct student的指针*/ int b=0; printf("Enter The Name"); /*输入姓名*/ scanf("%s",name); while(p2!=NULL) {if(strcmp(name,p2->name)==0) { printf("Find you data\n"); scanf("Name:%s",p2->name); scanf("Num:%s",p2->num); scanf("Sex:%s",p2->sex); scanf("Chinese:%d",p2->chinese); scanf("Math:%d",p2->mathematic); scanf("english:%d",p2->english); scanf("Computer:%d",p2->computer); printf("Success!"); b=1;} else if(b==0) printf("Sorry not Find data!"); p2=p2->next;} if(b==0) {print(); printf("Sorry not Find data!"); } else { print(); printf("Finish!"); } } save(stu *p2) /*保留数据函数*/ { FILE *fp; char file[10]; printf("Enter file name"); /*输入文件名*/ scanf("%s",file); fp=fopen(file,"w"); while(p2!=NULL) { fprintf(fp,"%s",p2->name); fprintf(fp,"%s",p2->num); fprintf(fp,"%s",p2->sex); fprintf(fp,"%d",p2->chinese); fprintf(fp,"%d",p2->mathematic); fprintf(fp,"%d",p2->english); fprintf(fp,"%d",p2->computer); p2=p2->next; } fclose(fp); } char password[7]="123456"; /*定义初始密码*/ void main() /*主函数*/ { int choice; stu *p2; char s[8]; int flag=0,i; /*标志项*/ int n=3; do{ printf("你请输入密码:\n"); scanf("%s",s); if(!strcmp(s,password)) /*进行密码匹配验证*/ { printf("PASS\n\n\n"); flag=1; break; } else{ printf("Error Enter again:\n"); n--; } } while(n>0); if(!flag) {printf("you have Enter 3 times!"); /*输入密码超过了3次!!*/ exit(0); /*自动退出*/ } /*密码验证成功后进入的界面*/ printf("欢迎来到重庆航天职业技术学院\n"); printf(" 欢迎来到计算机工程系\n"); printf(" 班级:软件技术\t班号:08051051\n"); /*班级和号码*/ printf(" 是否进入系统\n"); /*问进入系统与否*/ scanf("%d",&choice); if(choice=='n'||choice=='N') exit(1); print(); while(1) { printf("Enter choice:"); scanf("%d",&i); if(i<1||i>13) { printf("再从1-13中进行选择:\n"); /*再从1-13中进行选择*/ exit(1); } switch(i) { case 1: p2=cindata(); /*其他数据是否继续输入的函数*/ break; case 2: p2=lookdata(head); /*查看数据的函数*/ break; case 3: insert(); /*通过比较学号来插入数据的函数*/ break; case 4: find(head); /*通过姓名查找查看数据的函数*/ break; case 5: update(head); /*通过姓名查找来更新数据*/ break; case 6: save(head); /*保留数据函数*/ break; case 7: print(); /*显示或打印函数*/ break; case 8: caverage(); /*求各学生语文平均分、最高和最低分成绩的函数*/ break; case 9: maverage(); /*求各学生数学平均分、最高和最低分成绩的函数*/ break; case 10: eaverage(); /*求各学生英语平均分、最高和最低分成绩的函数*/ break; case 11: comaverage(); /*求各学生计算机平均分、最高和最低分成绩的函数*/ break; case 12: ; /*空操作*/ case 13: exit(1); /*退出*/ break; } scanf("%d",&i); } } 密码123456
admin
网友回答2022-01-13
什么意思?你是想请人帮你写吗?

回到
顶部