大一数据结构c语言课程设计.docx
- 文档编号:3288730
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:13
- 大小:479.39KB
大一数据结构c语言课程设计.docx
《大一数据结构c语言课程设计.docx》由会员分享,可在线阅读,更多相关《大一数据结构c语言课程设计.docx(13页珍藏版)》请在冰豆网上搜索。
大一数据结构c语言课程设计
XI`ANTECHNOLOGICALUNIVERSITY
课程设计报告
课程名称:
c语言程序设计
专业:
班级:
姓名:
学号:
指导教师:
成绩:
2017年1月5日
题目:
学生成绩管理系统
思路:
先建立一个链表然后以链表为基础进行各种操作,设计学生成绩管理系统,通过主页显示,根据自己需求按主页中所显示步骤输入,删除,查找,插入,修改,统计学生信息。
算法:
核心算法为链表的生成,插入,查找,排序算法。
函数模块介绍:
voidxuanze();//选择功能
voidshuchu(structstudent*h);//输出
voidtianjia(structstudent*h);//添加
voidshanchu(structstudent*h);//删除
voidchaxun(structstudent*h);//查询
voidgenggai(structstudent*h);//更改主
voidgxuehao(structstudent*p);//改学号
voidgname(structstudent*p);//改姓名
voidggaoshu(structstudent*p);//改高数成绩
voidgyingyu(structstudent*p);//改英语成绩
voidgc(structstudent*p);//改c语言成绩
voidtongji();//统计主
voidmax_average(structstudent*h);//统计平均分最高
voidmax_gaoshu(structstudent*h);//统计高数最高
voidmax_yingyu(structstudent*h);//统计英语最高
voidmax_c(structstudent*h);//统计c语言最高
voidbujige_average(structstudent*h);//统计平均分不及格学生信息
voidbujige_gaoshu(structstudent*h);//统计高数不及格学生信息
voidbujige_yingyu(structstudent*h);//统计英语不及格学生信息
voidbujige_c(structstudent*h);//同意c语言不及格学生信息
structstudent*creat(intn);//创建链表
voidorder_two(structstudent*p,structstudent*q);//调换位置
voidorder(structstudent*h);//排序
源程序
#include"stdio.h"
#include"string.h"
#include"conio.h"
#include
#defineN30
#defineM3
typedefstructstudent
{
charnumber[10];
charname[20];
floatscore[M];
floataver;
floattotal;
}STU;
STUstu[N];
intn;
voidinputscore(void);
voidsavescore(void);
voidavergescore(void);
voidtotal(void);
voidlookscore(void);
voidsearchscore(void);
voidstatistic(void);
voidadd(void);
voidmodify(void);
voiddelscore(void);
voidsavescore(void);
voidmenu(void);
intmain()
{
shortintflag=0;
menu();
do
{
flag=1;
switch(getch())
{
case'1':
inputscore();break;/*输入成绩*/
case'2':
lookscore();break;/*查看成绩*/
case'3':
searchscore();break;/*查找成绩*/
case'4':
statistic();break;/*成绩统计*/
case'5':
modify();break;/*修改成绩*/
case'6':
add();break;/*添加成绩*/
case'7':
delscore();break;/*删除成绩*/
case'8':
savescore();break;/*保存成绩*/
case'9':
exit(0);/*退出成绩*/
default:
printf("输入有误\n");
}
printf("按任意键继续\n");
getch();
menu();
}while(flag==1);
}
voidmenu(void)
{
system("cls");
printf("\t\t\n");
printf("\t\t学生信息管理系统\n");
printf("\t\t\n");
printf("\t\t\n");
printf("\t\t1.输入成绩2.查看成绩并排序\n");
printf("\t\t\n");
printf("\t\t3.查询学生成绩4.成绩统计\n");
printf("\t\t\n");
printf("\t\t5.修改成绩6.添加成绩\n");
printf("\t\t\n");
printf("\t\t7.删除成绩8.保存成绩\n");
printf("\t\t\n");
printf("\t\t9.退出系统\n");
printf("\t\t\n");
printf("\t\t请您选择(0-9)\n");
}
/************输入各个同学的学生信息***********/
voidinputscore(void)
{
inti,j;
system("cls");
printf("请输入学生总数:
\n");
scanf("%d",&n);
for(i=0;i { printf("请输入第%d个学生的学号: \n",i+1); scanf("%s",stu[i].number); scanf("%s",stu[i].name); printf("请输入学生成绩: \n"); printf("高数\tC语言\t大英\n"); for(j=0;j scanf("%f",&stu[i].score[j]); } printf("成功输入\n"); } /***************计算各个同学的总分************/ voidtotal(void) { inti,j; for(i=0;i { stu[i].total=0; for(j=0;j { stu[i].total+=stu[i].score[j]; } } } /********************计算各个同学的平均分*************/ voidavergescore(void) { inti,j; for(i=0;i { stu[i].aver=0; for(j=0;j { stu[i].aver+=stu[i].score[j]; } stu[i].aver=stu[i].aver/M; } } /************查看学生成绩及根据平均分对学生排序************/ voidlookscore(void) { inti,j,k; STUt; total(); avergescore(); system("cls"); for(i=0;i { for(k=i,j=i+1;j if(stu[j].aver>stu[k].aver) k=j; if(k! =j) { t=stu[k]; stu[k]=stu[i]; stu[i]=t; } } printf("名次\t学号\t\t姓名\t高数\tC语言\t大英\t总分\t平均分\n"); for(i=0;i { printf("%d\t%s\t\t%s\t",i+1,stu[i].number,stu[i].name); for(j=0;j printf("%4.2f\t",stu[i].score[j]);//输出成绩 printf("%4.2f\t",stu[i].total); printf("%4.2f\t",stu[i].aver); printf("\n"); } } /**********************通过输入学号查找学生成绩**********************/ voidsearchscore(void) { chara[10]; inti,j; system("cls"); printf("请输入需查询的学生学号\n"); scanf("%s",a); for(i=0;i {if(strcmp(a,stu[i].number)==0)//比较两个字符串 {printf("名次\t学号\t\t姓名\t高数\tC语言\t大英\t总分\t平均分\n"); printf("%d\t%s\t\t%s\t",i+1,stu[i].number,stu[i].name); for(j=0;j printf("%4.2f\t",stu[i].score[j]); printf("%4.2f\t",stu[i].total); printf("%4.2f\t",stu[i].aver); printf("\n"); break;/*找到该学生成绩信息后跳出for循环*/ } else printf("未找到该学生信息\n"); } } /************统计学生成绩信息,平均分及格率,优秀率*************/ voidstatistic(void) { STU*p=stu; inti,j; floatcount=0.0,sum=0.0; system("cls"); for(i=0;i {sum+=(p+i)->aver;} printf("该班级平均分为%4.2f\n",sum/n);/*平均分计算*/ for(i=0;i {if((p+i)->aver>=60) count++; } printf("该班级及格率为%4.2f%%\n",count/n*100);/*及格率计算*/ count=0.0; for(i=0;i {if((p+i)->aver>=90) count++; } printf("该班级的优秀率为%4.2f%%\n",count/n*100);/*优秀率计算*/ printf("平均分低于60的学生名单\n"); for(i=0;i { if(stu[i].aver<60) printf("%s\n",stu[i].name); }/*统计不及格学生名单*/ } /****************修改学生成绩*************/ voidmodify(void) {chara[10]; inti,j; system("cls"); printf("请输入需要修改成绩的学生学号\n"); scanf("%s",a); for(i=0;i {if(strcmp(a,stu[i].number)==0) {printf("名次\t学号\t\t姓名\t高数\tC语言\t大英\t总分\t平均分\n"); printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name); for(j=0;j printf("%4.2f\t",stu[i].score[j]); printf("%4.2f\t",stu[i].total); printf("%4.2f\t",stu[i].aver); printf("\n"); printf("请重新输入该学生的学号: \n"); scanf("%s",stu[i].number); scanf("%s",stu[i].name); printf("请重新输入学生成绩: \n"); printf("高数\tC语言\t大英\n"); for(j=0;j scanf("%f",&stu[i].score[j]);/*找到该学生成绩后进行后进行修改,跳出for循环*/ printf("修改成功\n"); break; } else printf("请确认该学生是否为本班学生! \n"); } } /**********************添加学生成绩*************************/ voidadd(void) { inta,i,j; system("cls"); printf("请输入新增加的学生人数: \n"); scanf("%d",&a); n=n+a; for(i=n-a;i {printf("请输入学生%d的学号: \n",i+1); scanf("%s",stu[i].number); scanf("%s",stu[i].name); printf("请输入学生成绩: \n"); printf("高数\tC语言\t大英\n"); for(j=0;j scanf("%f",&stu[i].score[j]); printf("添加成功\n"); } } /*******************删除学生成绩********************/ voiddelscore(void) {inti,j,c; charm,a[10]; system("cls"); printf("请输入学生学号\n"); scanf("%s",a); for(i=0;i {if(strcmp(a,stu[i].number)==0) {printf("名次\t学号\t\t姓名\t高数\tC语言\t大英\t总分\t平均分\n"); printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name); for(j=0;j printf("%4.2f\t",stu[i].score[j]); printf("%4.2f\t",stu[i].total); printf("%4.2f",stu[i].aver); printf("\n"); c=i; break; } else printf("未找到该学生信息\n"); } printf("是否删除该学生成绩(y/n)\n"); scanf("%s",&m); if(m=='y') { for(i=c;i stu[i]=stu[i+1];/*结构体整体赋值将最后一位学生成绩信息拷贝进入前一位学生信息的存储位置*/ n=n-1;/*删除该学生信息后学生总数减一*/ printf("删除成绩成功\n"); } else printf("删除成绩失败\n"); } /***********************保存学生成绩*************************/ voidsavescore(void) { FILE*fp; inti,flag=1; charm; system("cls"); puts("是否保存学生成绩(y/n)"); scanf("%s",&m); if(m=='y') {if((fp=fopen("score.dat","wb"))==NULL) {printf("文件打开失败\n"); return; } for(i=0;i if(fwrite(&stu[i],sizeof(structstudent),1,fp)! =1) { printf("保存失败\n"); flag=0; } if(flag==1) printf("保存成功! \n"); fclose(fp); } else return;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大一 数据结构 语言 课程设计