版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、东莞理工学院课程设计课程设计课程 程序设计基础 题目 院系名称 计算机学院 班 级 学生姓名 学号 组 员 指导教师 时 间 2012-5-25 1 问题要求及任务描述1.1 题目要求学生成绩管理问题描述:设学生信息包括:学号、姓名、学期、每门课程的成绩(每学期的课程门数是不一样的) ,对学生的成绩信息进行管理。实现要求:实现:学生信息的录入;修改;删除和查询,按学期、学号、成绩不及格等查询。 输入学生的成绩信息,包含学号、姓名、性别等基本信息和各课成绩 显示全部学生各科成绩信息; 对各科成绩统计分析(总分、平均分、最高分、最低分、及格率等); 统计各科各分数段人数; 按学号或姓名查找并显示某
2、个学生的各科成绩; 按课程成绩或总分由高到低排序显示; 更新某个学生的基本信息或课程成绩; 设计一个菜单,具有上述规定的操作要求、退出系统等最基本的功能。1. 2 解决问题的主要思路和方法2.1 关键问题关键问题描述2.2 拟采用解决问题的方法在此陈述解决问题的思路,准备使用的算法和数据结构等等2.3 主要算法和处理流程图关键的数据流程图3 程序实现3.2 主要源代码及说明#include<stdio.h>#include<stdlib.h>#include<string.h>int save=0;struct student /*构建结构体*/char n
3、um12;char name20;char sex4;int CYuYan;int Math;int English;int sum;int ave;typedef struct node struct student data;struct node *next;Node,*Link;void Menu() /*界面主菜单*/printf("*"); printf("t1输入学生资料ttttt2删除学生资料n"); printf("t3查询学生成绩ttttt4修改学生成绩n"); printf("t5显示学生资料ttttt
4、6统计学生资料n"); printf("t7排序学生成绩ttttt8保存学生成绩n"); printf("t9退出系统n"); printf("*");void Print()printf("-");void Wrong() /*错误警告*/printf("n警告:输入错误!n");void Nofind()printf("n警告:没有找到该学生!n");void Print1() printf(" 学号t 姓名 性别 C语言成绩 英语成绩 数学成绩 总分
5、 平均分n"); void Print2(Node *p) /*打印学生成绩*/ printf("%-9s%st%3st%dt%dt%dt %dt %dn",p->data.num,p->,p->data.sex,p->data.CYuYan,p->data.Math,p->data.English,p->data.sum,p->data.ave); Node *Locate(Link h,char findmess,char nameornum)/*定位链表中符合要求的接点*/ Node *r;
6、if(strcmp(nameornum,"num")=0) /*按学号查询*/ r=h->next; while(r!=NULL) if(strcmp(r->data.num,findmess)=0) return r; r=r->next; else if(strcmp(nameornum,"name")=0) /*按姓名查询*/ r=h->next;while(r!=NULL) if(strcmp(r->,findmess)=0) return r; r=r->next; return 0; vo
7、id Add(Link h) /*功能1:输入学生资料*/Node *p,*r,*s;char num12;r=h;s=h->next;while(r->next!=NULL)r=r->next;while(1)printf("请输入学号(按'0'返回上菜单):");scanf("%s",num);if(strcmp(num,"0")=0) break;p=(Node *)malloc(sizeof(Node); /*申请一个结构体内存*/strcpy(p->data.num,num);prin
8、tf("请输入姓名:"); scanf("%s",p->); getchar(); printf("请输入性别:"); scanf("%s",p->data.sex); getchar(); printf("请你输入c语言成绩:"); scanf("%d",&p->data.CYuYan); getchar(); printf("请输入数学成绩:"); scanf("%d",&p-&g
9、t;data.Math); getchar(); printf("请输入英语成绩:"); scanf("%d",&p->data.English); getchar(); p->data.sum=p->data.English+p->data.CYuYan+p->data.Math; p->data.ave=p->data.sum / 3; p->next=NULL; r->next=p; r=p; save=1;void Del(Link h) /*功能2:删除学生资料*/ Node *p,
10、*r; char findmess20; printf("请输入要删除的学号:"); scanf("%s",findmess); p=Locate(h,findmess,"num"); if(p) r=h; while(r->next!=p) r=r->next; r->next=p->next; free(p); /*释放内存空间*/printf("n提示:该学生已经成功删除!n"); save=1; else Nofind(); void Cha(Link h) /*功能3:查询学生资料
11、*/int sel; char findmess20; Node *p; printf("n1按学号查找n2按姓名查找n"); scanf("%d",&sel); if(sel=1) /*按学号查找*/printf("请输入要查找的学号:"); scanf("%s",findmess); p=Locate(h,findmess,"num"); if(p) printf("tttt查找结果n"); Print(); Print1(); Print2(p); Print(
12、); else Nofind(); else if(sel=2) /*按姓名查找*/printf("请输入要查找的姓名:"); scanf("%s",findmess); p=Locate(h,findmess,"name"); if(p) printf("tttt查找结果n"); Print(); Print1(); Print2(p); Print(); else Nofind(); else Wrong(); void Change(Link h) /*功能4:修改学生资料*/ Node *p; char f
13、indmess20; if(!h->next) printf("n提示:没有资料可以修改!n"); return; printf("请输入要修改的学生学号:"); scanf("%s",findmess); p=Locate(h,findmess,"num"); if(p) printf("请输入新学号(原来是%s):",p->data.num); scanf("%s",p->data.num); printf("请输入新姓名(原来是%s):&qu
14、ot;,p->); scanf("%s",p->); getchar(); printf("请输入新性别(原来是%s):",p->data.sex); scanf("%s",p->data.sex); printf("请输入新的c语言成绩(原来是%d分):",p->data.CYuYan); scanf("%d",&p->data.CYuYan); getchar(); printf("请输入新的数学成绩(
15、原来是%d分):",p->data.Math); scanf("%d",&p->data.Math); getchar(); printf("请输入新的英语成绩(原来是%d分):",p->data.English); scanf("%d",&p->data.English); p->data.sum=p->data.English+p->data.CYuYan+p->data.Math;p->data.ave=p->data.sum/3; print
16、f("n提示:资料修改成功!n"); save=1; else Nofind(); void Disp(Link h) /*功能5:显示学生资料*/ int count=0; Node *p; p=h->next; printf("tttt显示结果n"); Print(); Print1(); printf("n"); while(p) Print2(p); p=p->next; Print(); printf("n"); void Tongji(Link h) /*功能6:统计学生成绩*/ float
17、 jige1,jige2,jige3,i=0;int A1=0,A2=0,A3=0,B1=0,B2=0,B3=0,C1=0,C2=0,C3=0,D1=0,D2=0,D3=0,E1=0,E2=0,E3=0;Node *pm,*pe,*pc,*ps,*pa; /*用于指向分数最高的接点*/ Node *r=h->next;pm=pe=pc=ps=pa=r; while(r!=NULL) if(r->data.CYuYan>=pc->data.CYuYan) pc=r; if(r->data.Math>=pm->data.Math) pm=r; if(r-&
18、gt;data.English>=pe->data.English) pe=r; if(r->data.sum>=ps->data.sum) ps=r; if(r->data.ave>=pa->data.ave) pa=r; r=r->next; r=h;while(r!=NULL)switch(r->data.CYuYan/10) case 10: case 9: A1+; break; case 8: B1+; break; case 7: C1+; break; case 6: D1+; break; case 5: case
19、4: case 3: case 2: case 1: case 0: E1+; break;i+;r=r->next;jige1=(A1+B1+C1+D1)/(i-1); r=h,i=0;while(r!=NULL)switch(r->data.Math/10) case 10: case 9: A2+; break; case 8: B2+; break; case 7: C2+; break; case 6: D2+; break; case 5: case 4: case 3: case 2: case 1: case 0: E2+; break;i+;r=r->nex
20、t;jige2=(A2+B2+C2+D2)/(i-1);r=h,i=0;while(r!=NULL)switch(r->data.English/10) case 10: case 9: A3+; break; case 8: B3+; break; case 7: C3+; break; case 6: D3+; break; case 5: case 4: case 3: case 2: case 1: case 0: E3+; break;i+;r=r->next;jige3=(A3+B3+C3+D3)/(i-1);printf("-统计结果-n"); p
21、rintf("总分最高者:t%s %d分n",ps->,ps->data.sum); printf("平均分最高者:t%s %d分n",pa->,pa->data.ave); printf("C语言最高者:t%s %d分n",pc->,pc->data.CYuYan);printf("英语最高者:t%s %d分n",pe->,pe->data.English); printf("数学最高
22、者:t%s %d分n",pm->,pm->data.Math); printf("C语言分数段:tA:%d人 B:%d人 C:%d人 D:%d人 E:%d人n",A1,B1,C1,D1,E1); printf("数学分数段:tA:%d人 B:%d人 C:%d人 D:%d人 E:%d人n",A2,B2,C2,D2,E2);printf("英语分数段:tA:%d人 B:%d人 C:%d人 D:%d人 E:%d人n",A3,B3,C3,D3,E3);printf("C语言及格率:%3.2f%
23、n",jige1*100);printf("数学及格率:%3.2f%n",jige2*100);printf("英语及格率:%3.2f%n",jige3*100);printf("备注:A:90100;B:8089;C:7079;D:6069;E:059n");Print(); void Sort(Link h) /*功能7:排序学生成绩*/ Link hh; Node *p,*rr,*s; hh=(Link)malloc(sizeof(Node); /*用于做新的链表*/ hh->next=NULL; if(h-&g
24、t;next=NULL) printf("n提示:没有资料可以排序!n"); return ; p=h->next; while(p) s=(Node*)malloc(sizeof(Node); /*新建接点用于保存信息*/ s->data=p->data; s->next=NULL; rr=hh; while(rr->next!=NULL && rr->next->data.sum>=p->data.sum) rr=rr->next; if(rr->next=NULL) rr->nex
25、t=s; else s->next=rr->next; rr->next=s; p=p->next; free(h); /*释放内存*/h->next=hh->next; printf("n提示:排序已经完成!n"); void Save(Link h) /*功能8:保存学生资料*/ FILE* fp; /*文件指针*/Node *p; int flag=1,count=0; fp=fopen("c:student","wb"); /*以只读方式打开文件*/if(fp=NULL) printf(&q
26、uot;n提示:重新打开文件时发生错误!n"); exit(1); p=h->next; while(p) if(fwrite(p,sizeof(Node),1,fp)=1) p=p->next; count+; else flag=0; break; if(flag) printf("n提示:文件保存成功(有%d条记录已经保存)n",count); save=0; fclose(fp); /*关闭文件*/ void main()Link h;FILE *fp; /*文件指针*/ int sel; char ch; char chuangjian; int count=0; Node *r; printf("tttt学生成绩管理系统n"); h=(Node*)malloc(sizeof(Node); /*申请内存*/h->next=NULL; r=h; fp=fop
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025昆山登云科技职业学院教师招聘考试题目及答案
- 2025江西交通职业技术学院教师招聘考试题目及答案
- 2026年酒店管理期中考试核心及答案
- 口腔主治医师试题及答案
- 2026北京市第一零九中学教师招聘建设考试参考题库及答案解析
- 2026广西北海市图书馆招录公益性岗位人员1人建设笔试备考试题及答案解析
- 2026江苏南京白下人力资源开发服务有限公司招聘劳务派遣人员8人(七)建设笔试备考题库及答案解析
- 2026福建省寿宁县教育局补充招聘紧缺急需及高层次教师5人建设考试参考题库及答案解析
- 2026云南省玉溪市专业化干部人才引进47人建设考试备考试题及答案解析
- 2026湖南长沙南雅梅溪湖中学春季招聘编外教辅人员1人建设笔试参考题库及答案解析
- 2024年甘肃省白银市、武威市、嘉峪关市、临夏州中考物理试题及答案
- 公安安全教育开学第一课
- 医药公司自提药品管理制度
- 容量评估与液体管理
- 抖音电商200个干货问题知识手册内部资料
- 刑法学知到智慧树章节测试课后答案2024年秋江西师范大学
- 2024年南昌二手房购买协议一
- 瓦斯隧道安全培训
- 2024年铁路机车司机乘务员知识(机考)试题库(含答案)
- 幼儿园 中班语言绘本《章鱼先生卖雨伞》
- 零星维修工程项目施工方案1
评论
0/150
提交评论