c语言程序设计学生标准管理系统.doc
《c语言程序设计学生标准管理系统.doc》由会员分享,可在线阅读,更多相关《c语言程序设计学生标准管理系统.doc(21页珍藏版)》请在咨信网上搜索。
/*学生成绩管理系统 数据库数据项关键数据包含:学号、姓名、年级、专业、成绩1、成绩2、成绩3、平均成绩、总成绩。 要求含有以下功效: (1)添加、删除任意个统计。 (2)修改任意个统计。 (3)显示、保留统计。 (4)排序功效:打开学生数据库,计算每个学生平均成绩和总成绩,用冒泡法或选择排序法将平均成绩和总成绩排序后生成两个新文件(从大到小), 存盘并显示这两个文件全部统计。 (5)查询功效:打开总成绩排序文件,用折半查找法统计出给定分数人数并显示。 要求: (1)设计一个主函数和多个子函数,每个子函数完成一个相对独立子功效。 (2)程序运行时,首优异行口令检验,再显示菜单。并能依据菜单调用对应函数功效。 口令程序段功效要求: 《1》提醒用户输入一个口令。 《2》用户输入口令后,若口令对,则提醒用户经过,可实施后续程序;不然不经过。 《3》可对用户口令输入进行次数限制(如:反复输入3次全部不对),则自动退出系统。*/ #include<stdio.h> #include<string.h> #include<stdlib.h> struct student { int num; char name[10]; int grade; char major[10]; float score_1,score_2,score_3,aver,total; struct student *next; }; struct student *creat(void); struct student *add(void); struct student *del(int num); struct student *alter(); void save(struct student *head); void read(); void totalsort(struct student *head); void aversort(struct student *head); void Bfindsort(); int all=0; void main() { int i,n,m,num; char ord[10]="student",ord_1[10]; struct student *p; for(i=0;i<=3;i++) { if(i==3) exit(0); printf("请第%d次输入进入系统指令:",i+1); scanf("%s",ord_1); if(strcmp(ord,ord_1)!=0) printf("输入指令有误请重新输入。\n"); if(strcmp(ord,ord_1)==0) break; } p=NULL; loop_2:printf("输入系统功效:\n0、建立一个数据库;\n1、添加和保留学生数据;\n2、删除和保留学生数据;\n3、修改和保留学生数据;\n4、显示数据库统计;\n5、将数据进行排序;\n6、查询指定成绩人数:"); loop: scanf("%d",&n); if(n<0||n>6) { printf("\n输入选择有误请重新输入:"); goto loop; } if(n==2) { printf("输入删除学生数据学号:"); scanf("%d",&num); } switch(n) { case 0:p=creat();save(p);read();break; case 1:p=add();save(p);read();break; case 2:p=del(num);save(p);read();break; case 3:p=alter();save(p);read();break; case 4:read();break; case 5: { printf("输入选择排序功效1、依据平均成绩;2、依据总成绩:"); loop_1: scanf("%d",&m); if(m<1||m>2) { printf("\n输入选择有误请重新输入:"); goto loop_1; } switch(m) { case 1:aversort(p);break; case 2:totalsort(p);break; } }break; case 6:Bfindsort();break; } loop_5: printf("输入你要进行步骤:1、返回上一菜单菜单;2、退出程序。\n"); scanf("%d",&n); if(n<1||n>2) { printf("输入选择有误,请重新输入:"); goto loop_5; } switch(n) { case 1:goto loop_2;break; case 2:break; } } struct student *creat(void) { int i,n; struct student *head,*p,*q,*tail; printf("输入学生个数:"); scanf("%d",&n); head=NULL; for(i=0;i<n;i++) { all++; p=(struct student*)malloc(sizeof(struct student)); if(head==NULL) head=p; else tail->next=p; tail=p; p->next=NULL; q=head; printf("输入学生学号、名字、年级、专业、三门成绩:"); scanf("%d %s %d %s %f %f %f",&p->num,&p->name,&p->grade,&p->major,&p->score_1,&p->score_2,&p->score_3); loop: while(q->next!=NULL) { if(q->num==p->num) { printf("输入学生号错误请重新输入学生学号:"); scanf("%d",&p->num); goto loop; } q=q->next; } p->aver=(p->score_1+p->score_2+p->score_3)/3; p->total=p->score_1+p->score_2+p->score_3; } return(head); } void save(struct student *head) { struct student *p; FILE *fp; if((fp=fopen("student.txt","wb"))==NULL) { printf("打开文件失败。\n"); exit(0); } p=head; while(p!=NULL) { fwrite(p,sizeof(struct student),1,fp); p=p->next; } fclose(fp); } struct student *del(int num) { int i,n=0; struct student *p,*q,*head; FILE *fp; if(all==0) { printf("数据库为空。\n"); head=NULL; return(head); } p=(struct student *)malloc(sizeof(struct student)); if((fp=fopen("student.txt","rb"))==NULL) { printf("打开student.txt文件失败\n"); exit(0); } for(i=0;p!=NULL;i++) { p=(struct student *)malloc(sizeof(struct student)); fread(p,sizeof(struct student),1,fp); if(i==0) head=p; if(num==p->num) { if(p==head) head=p->next; else q->next=p->next; n++; all--; } q=p; } if(n==0) printf("没有%d这一学生号学生!\n",num); return(head); } struct student *add() { int i,j,m,n=0; FILE *fp; struct student *p,*q,*temp,*head,*tail; if(all==0) { head=NULL; } else { if((fp=fopen("student.txt","rb"))==NULL) { printf("打开student.txt文件失败\n"); exit(0); } p=(struct student*)malloc(sizeof(struct student)); fread(p,sizeof(struct student),1,fp); head=p; tail=p; while(p->next!=NULL) { p=(struct student*)malloc(sizeof(struct student)); fread(p,sizeof(struct student),1,fp); tail->next=p; tail=p; } tail->next=NULL; fclose(fp); } printf("输入需要输入学生个数:"); scanf("%d",&j); for(i=0;i<j;i++) { all++; p=(struct student*)malloc(sizeof(struct student)); printf("输入学生学号、名字、年级、专业、三门成绩:"); scanf("%d %s %d %s %f %f %f",&p->num,&p->name,&p->grade,&p->major,&p->score_1,&p->score_2,&p->score_3); temp=head; loop_1: while(temp!=NULL) { if(temp->num==p->num) { printf("输入学生号错误请重新输入学生学号:"); scanf("%d",&p->num); goto loop_1; } temp=temp->next; } p->aver=(p->score_1+p->score_2+p->score_3)/3; p->total=p->score_1+p->score_2+p->score_3; if(head==NULL) { head=p; p->next=NULL; } else { q=head; n=1; while(q->next!=NULL) { q=q->next; n++; } printf("该链表一共有节点个数%d。\n",n); loop: printf("输入将数据插入第多个节点后面。\n"); scanf("%d",&m); if(m<0||m>n) { printf("输入有误,请重新输入。\n"); goto loop; } q=head; if(m==0) { p->next=head; head=p; } else { while((m-1)!=0) { q=q->next; m--; } p->next=q->next; q->next=p; } } } return(head); } struct student *alter() { int m,num,gra,n; char maj[10],name[10]; float score_1,score_2,score_3; struct student *p,*q,*head; FILE *fp; if(all==0) { printf("数据库为空。\n"); head=NULL; return(head); } if((fp=fopen("student.txt","rb"))==NULL) { printf("打开student.txt文件失败\n"); exit(0); } p=(struct student*)malloc(sizeof(struct student)); fread(p,sizeof(struct student),1,fp); head=p; q=p; loop_1:printf("输入修改学生数据姓名:"); scanf("%s",&name); while(strcmp(name,p->name)!=0) { p=p->next; if(p==NULL) { printf("没有该学生。\n"); return(head); } } loop: printf("请选择修改学生具体数据:\n1、学号;2、年级;3、专业;\n4、成绩1;5、成绩2;6、成绩3:"); scanf("%d",&m); if(m<1||m>6) { printf("\n输入选择有误请重新输入:"); goto loop; } switch(m) { case 1:printf("输入新学号:");loop_2:scanf("%d",&num); while(q!=NULL) { if(q->num==num) { printf("输入学生号错误请重新输入学生学号:"); goto loop_2; } q=q->next; } p->num=num;break; case 2:printf("输入新年级:");scanf("%d",&gra); p->grade=gra; break; case 3:printf("输入新专业:");scanf("%s",&maj); strcpy(p->major,maj);break; case 4:printf("输入新成绩:");scanf("%f",&score_1);p->score_1=score_1; p->aver=(p->score_1+p->score_2+p->score_3)/3; p->total=p->score_1+p->score_2+p->score_3; break; case 5:printf("输入新成绩:");scanf("%f",&score_2);p->score_2=score_2; p->aver=(p->score_1+p->score_2+p->score_3)/3; p->total=p->score_1+p->score_2+p->score_3;break; case 6:printf("输入新成绩:");scanf("%f",&score_3);p->score_3=score_3; p->aver=(p->score_1+p->score_2+p->score_3)/3; p->total=p->score_1+p->score_2+p->score_3;break; } printf("选择你要实施内容:\n1、返回上一菜单\n2、返回主菜单\n3、修改另一学生数据"); loop_5: scanf("%d",&n); if(n<1||n>3) { printf("输入选择有误,请重新输入:"); goto loop_5; } switch(n) { case 1:goto loop;break; case 2:break; case 3:goto loop_1;break; } return(head); } void read() { struct student *p,*head; FILE *fp; if(all==0) { printf("系统没有学生数据。\n"); return; } if((fp=fopen("student.txt","rb"))==NULL) { printf("打开文件失败。\n"); exit(0); } p=(struct student*)malloc(sizeof(struct student)); fread(p,sizeof(struct student),1,fp); head=p; printf("打开student.txt文件学生数据。\n"); printf("list num name grade major score_1 score_2 score_3 aver total\n"); while(p!=NULL) { printf("student %-3d %-4s %-5d %-5s %-7.2f %-7.2f %-7.2f %-4.2f %-5.2f \n", p->num,p->name,p->grade,p->major,p->score_1,p->score_2,p->score_3,p->aver,p->total); p=p->next; } fclose(fp); } void aversort(struct student *head) { int temp; float temp_1; char temp_2[10]; struct student *p,*q,*i; FILE *fp; p=head; while(p->next!=NULL) { q=p; i=p->next; while(i!=NULL) { if(i->aver>q->aver) q=i; i=i->next; } if(q!=p) { temp=p->num;p->num=q->num;q->num=temp; strcpy(temp_2,p->name);strcpy(p->name,q->name);strcpy(q->name,temp_2); temp=p->grade;p->grade=q->grade;q->grade=temp; strcpy(temp_2,p->major);strcpy(p->major,q->major);strcpy(q->major,temp_2); temp_1=p->score_1;p->score_1=q->score_1;q->score_1=temp_1; temp_1=p->score_2;p->score_2=q->score_2;q->score_2=temp_1; temp_1=p->score_3;p->score_3=q->score_3;q->score_3=temp_1; temp_1=p->aver;p->aver=q->aver;q->aver=temp_1; temp_1=p->total;p->total=q->total;q->total=temp_1; } p=p->next; } if((fp=fopen("student_1.txt","wb+"))==NULL) { printf("打开student_1.txt文件失败\n"); exit(0); } p=head; while(p!=NULL) { fwrite(p,sizeof(struct student),1,fp); p=p->next; } p=head; rewind(fp); printf("读出由平均成绩排序出来文件student_1.txt。\n"); printf("list num name grade major score_1 score_2 score_3 aver total\n"); while(p!=NULL) { fread(p,sizeof(struct student),1,fp); printf("student %-3d %-4s %-5d %-5s %-7.2f %-7.2f %-7.2f %-4.2f %-5.2f \n", p->num,p->name,p->grade,p->major,p->score_1,p->score_2,p->score_3,p->aver,p->total); p=p->next; } fclose(fp); } void totalsort(struct student *head) { int temp; float temp_1; char temp_2[10]; struct student *p,*q,*i; FILE *fp; p=head; while(p->next!=NULL) { q=p; i=p->next; while(i!=NULL) { if(i->total>q->total) q=i; i=i->next; } if(q!=p) { temp=p->num;p->num=q->num;q->num=temp; strcpy(temp_2,p->name);strcpy(p->name,q->name);strcpy(q->name,temp_2); temp=p->grade;p->grade=q->grade;q->grade=temp; strcpy(temp_2,p->major);strcpy(p->major,q->major);strcpy(q->major,temp_2); temp_1=p->score_1;p->score_1=q->score_1;q->score_1=temp_1; temp_1=p->score_2;p->score_2=q->score_2;q->score_2=temp_1; temp_1=p->score_3;p->score_3=q->score_3;q->score_3=temp_1; temp_1=p->aver;p->aver=q->aver;q->aver=temp_1; temp_1=p->total;p->total=q->total;q->total=temp_1; } p=p->next; } if((fp=fopen("student_1.txt","wb+"))==NULL) { printf("打开student_1.txt文件失败\n"); exit(0); } p=head; while(p!=NULL) { fwrite(p,sizeof(struct student),1,fp); p=p->next; } p=head; rewind(fp); printf("读出由平均成绩排序出来文件student_1.txt。\n"); printf("list num name grade major score_1 score_2 score_3 aver total\n"); while(p!=NULL) { fread(p,sizeof(struct student),1,fp); printf("student %-3d %-4s %-5d %-5s %-7.2f %-7.2f %-7.2f %-4.2f %-5.2f \n", p->num,p->name,p->grade,p->major,p->score_1,p->score_2,p->score_3,p->aver,p->total); p=p->next; } fclose(fp); } void Bfindsort() { int i,k,a=0,b=0,low,high,m; float score,score_1[100]; struct student *p; FILE *fp; p=(struct student *)malloc(sizeof(struct student)); if((fp=fopen("student_1.txt","rb"))==NULL) { printf("打开student_1.txt文件失败\n"); exit(0); } for(i=0;p->next!=NULL;i++) { fread(p,sizeof(struct student),1,fp); score_1[i]=p->total; } printf("输入需要查询分数:"); scanf("%f",&score); low=0; high=i-1; k=i; m=(low+high)/2; while(high>=low) { if(score_1[m]<score) high=m-1; else low=m+1; m=(low+high)/2; } for(i=high+1;score_1[i]==score&&i<k;i++) a++; for(i=high;score_1[i]==score&&i>0;i--) b++; printf("输出该总分数人数%d\n",a+b);- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 学生 标准 管理 系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文