C程大作业.docx
- 文档编号:12358403
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:22
- 大小:50.96KB
C程大作业.docx
《C程大作业.docx》由会员分享,可在线阅读,更多相关《C程大作业.docx(22页珍藏版)》请在冰豆网上搜索。
C程大作业
学年论文
(课程论文、课程设计)
题 目:
学生信息管理系统
作 者:
所在学院:
信息科学与工程学院
专业年级:
指导教师:
职 称:
2010年1月2日
大作业题目:
学生成绩管理系统
大作业目的:
(1)进一步熟悉C的语法知识和VC++环境;
(2)熟练掌握一些常用算法,如排序、查找等;
(3)熟悉C程序的编写与调试;
(4)增加学生对C语言的兴趣
大作业要求:
设计一学生成绩管理系统,要求实现数据的录入、插入、删除、修改、查找、查询、排序、统计、显示等功能。
(1)数据结构:
学号、姓名、性别、年龄、3门课程成绩、总分、平均分。
(2)为用户提供友好的菜单选择界面,用户通过键入数字或者字母实现功能选择,进入相应的功能。
(3)功能:
a)数据录入——按顺序录入学生成绩
b)删除记录
c)修改记录
d)查询记录——按学号等进行简单查询
e)计算总分和平均分
f)排序:
可以按学号、总分、平均分显示学生信息
g)学生信息能以文件的形式保存,或读取
h)页面以汉字形式输出。
i)插入学生信息
j)统计学生分数
k)退出
(4)对系统常量要求用符号常量进行规范,对于常用的功能和算法如排序要求做成自己的库函数,并使用头文件的方式实现分离编译。
(5)要求提供算法分析、程序流程图,对实验结果的处理包括程序调试结果、结论及改进方案、实习体会等内容。
三.大作业总体设计及源代码
1、总体设计
2、源代码
#include
#include
#defineM3
structstudent/*结构体*/
{
intxh;//学生学号
charxm[20];/*数组*/
charxb;
intnl;
intcj[M];//成绩
intzf,pjf;/*总分与平均分*/
};
structstudents[20];/*学生数组*/
intn=0;
voidcalc(i)
{
intsum=0,j;
for(j=0;j sum=sum+s[i].cj[j]; s[i].zf=sum; s[i].pjf=sum/M; } voidinput()/*插入*/ { intlocate(intxh); intxh,i,sum; printf("请输入学号: "); scanf("%12d",&xh); getchar(); while(xh! =0) { if(locate(xh)! =-1) { printf("学号已存在! ! ! \n\n"); gotoabc; } s[n].xh=xh; printf("姓名: "); gets(s[n].xm); printf("性别: "); scanf("%c",&s[n].xb); printf("年龄: "); scanf("%d",&s[n].nl); sum=0; printf("3门成绩,成绩范围0--150: "); for(i=0;i scanf("%d",&s[n].cj[i]); if(s[n].cj[i]<0||s[n].cj[i]>150) { printf("成绩超出范围"); return; } calc(n); n++; abc: printf("\n请输入学号: "); scanf("%d",&xh); getchar(); } } voidinsert()/*插入*/ { intlocate(intxh); inti,j,t; intxh; printf("输入插入位置(0---%d): ",n); scanf("%d",&i); if(i<0||i>n) { printf("序号超出范围! ! ! \n",n); return; } for(j=n-1;j>=i;j--) { s[j+1].xh=s[j].xh; strcpy(s[j+1].xm,s[j].xm); s[j+1].xb=s[j].xb; s[j+1].nl=s[j].nl; s[j+1].cj[0]=s[j].cj[0]; s[j+1].cj[1]=s[j].cj[1]; s[j+1].cj[2]=s[j].cj[2]; } printf("请输入学号: "); scanf("%d",&s[i].xh);getchar(); printf("\n"); printf("请输入姓名: "); gets(s[i].xm); printf("请输入性别: "); scanf("%c",&s[i].xb); printf("请输入年龄: "); scanf("%d",&s[i].nl); printf("请输入3科成绩,成绩范围0---150: "); for(j=0;j {scanf("%d",&s[i].cj[j]); if(s[i].cj[j]>150) {printf("分数超出范围,请核对后再输入! ! ! ! ! \n"); return; } } calc(i); n=n+1; } //删除 voiddel() { intxh,i,j; intlocate(intxh); printf("输入学号: "); scanf("%d",&xh); i=locate(xh); if(i! =-1) { for(j=i+1;j { s[j-1].xh=s[j].xh; strcpy(s[j-1].xm,s[j].xm); s[j-1].xb=s[j].xb; s[j-1].nl=s[j].nl; s[j-1].cj[0]=s[j].cj[0]; s[j-1].cj[1]=s[j].cj[1]; s[j-1].cj[2]=s[j].cj[2]; } n=n-1; } else printf("无法删除! ! ! \n"); } intlocate(intxh) { inti,j; for(i=0;i if(s[i].xh==xh) { printf("%11d",s[i].xh); printf("%20s",s[i].xm); printf("%3c",s[i].xb); printf("%5d",s[i].nl); for(j=0;j printf("%5d",s[i].cj[j]); printf("%5d",s[i].zf); printf("%5d",s[i].pjf); printf("\n"); returni; } printf("学号不存在,请输入学生信息! ! ! \n"); return-1; } //显示 voiddisplay() { inti,j; printf("----------------学生成绩统计---------------\n"); printf("学号姓名性别年龄成绩1成绩2成绩3总分平均分\n"); for(i=0;i { printf("%5d",s[i].xh); printf("%20s",s[i].xm); printf("%3c",s[i].xb); printf("%5d",s[i].nl); for(j=0;j printf("%5d",s[i].cj[j]); printf("%5d",s[i].zf); printf("%5d",s[i].pjf); printf("\n"); printf("-----------------------------------------------------\n"); } } voidsave() { FILE*fp; inti; charfname[20]; printf("输入文件名: "); gets(fname); fp=fopen(fname,"wb"); if(fp==NULL) { printf("文件打开错误! ! ! \n"); return; } for(i=0;i if(fwrite(&s[i],sizeof(structstudent),1,fp)! =1) { printf("文件写入错误! \n"); return; } printf("文件保存成功! \n"); fclose(fp); } voidswap(inta,intb) { intt; charxm[20]; charxb; t=s[a].xh;s[a].xh=s[b].xh;s[b].xh=t; strcpy(xm,s[a].xm);strcpy(s[a].xm,s[b].xm);strcpy(s[b].xm,xm); xb=s[a].xb;s[a].xb=s[b].xb;s[b].xb=xb; t=s[a].nl;s[a].nl=s[b].nl;s[b].nl=t; t=s[a].cj[0];s[a].cj[0]=s[b].cj[0];s[b].cj[0]=t; t=s[a].cj[1];s[a].cj[1]=s[b].cj[1];s[b].cj[1]=t; t=s[a].cj[2];s[a].cj[2]=s[b].cj[2];s[b].cj[2]=t; t=s[a].zf;s[a].zf=s[b].zf;s[b].zf=t; t=s[a].pjf;s[a].pjf=s[b].pjf;s[b].pjf=t; } //冒泡排序法 voidsortbyxh() { inti,j; for(i=0;i { for(j=0;j if(s[j].xh>s[j+1].xh) swap(j,j+1); } printf("顺序已经排好! \n"); } voidsortbyzf() { inti,j; for(i=0;i { for(j=0;j if(s[j].zf>s[j+1].zf)//相临的两个数比较 swap(j,j+1); } printf("顺序已经排好! \n"); } voidsortbypjf() { inti,j; for(i=0;i { for(j=0;j if(s[j].pjf>s[j+1].pjf) swap(j,j+1); } printf("顺序已经排好! \n"); } voidsort() { inti; printf("1按学生学号排序\n"); printf("2按学生总分排序\n"); printf("3按平均分数排序\n"); printf("\n"); printf("请输入选项: "); scanf("%d",&i); switch(i) { case1: sortbyxh();break; case2: sortbyzf();break; case3: sortbypjf();break; } } //下载文件 voidload() { FILE*fp; inti; charfname[20]; printf("输入文件名: "); gets(fname); fp=fopen(fname,"rb"); if(fp==NULL) { printf("文件打开错误! \n"); return; } //从文件中载入学生信息 n=0; while(! feof(fp)) { if(fread(&s[n],sizeof(structstudent),1,fp)! =1) {break; } n++; } printf("文件成功载入! \n"); fclose(fp); } //统计数据 voidstas() { inta,b,c,d,e; inti; a=b=c=d=e=0; for(i=0;i { switch(s[i].pjf/10) { case0: case1: case2: case3: case4: case5: case6: case7: case8: a++;break; case9: case10: b++;break; case11: c++;break; case12: d++;break; case13: case14: e++;break; case15: ; } } printf("<80%d%5.2f%%\n",a,a*100.0/n); printf("90<-->110%d%5.2f%%\n",b,b*100.0/n); printf("110<-->120%d%5.2f%%\n",c,c*100.0/n); printf("120<-->130%d%5.2f%%\n",d,d*100.0/n); printf("130<-->150%d%5.2f%%\n",e,e*100.0/n); } voidedit()//编辑学生信息板块 { intlocate(intxh); intxh; inti; printf("请输入学号: \n"); scanf("%12d",&xh); getchar(); i=locate(xh); if(i==-1) { printf("学号不存在! \n"); return; } printf("请输入3门课的成绩: "); scanf("%d%d%d",&s[i].cj[0],&s[i].cj[1],&s[i].cj[2]); calc(i); printf("修改成功! \n"); } voidmain() { intc=1; while(c! =0) { printf("**********************\n"); printf("*学生成绩管理系统菜单*\n"); printf("**********************\n"); printf(" (1)输入* (2)插入\n"); printf("(3)删除*(4)编辑\n"); printf("(5)查找*(6)排序\n"); printf("(7)显示*(8)保存\n"); printf("(9)载入*(10)统计\n"); printf("(0)退出*\n"); printf("**********************\n"); printf("输入选项: "); scanf("%d",&c);getchar(); //条件选择语句 switch(c) { case1: input();break; case2: insert();break; case3: del();break; case4: edit();break; case5: {intxh; printf("输入学号: "); scanf("%12d",&xh); locate(xh);break; } case6: sort();break; case7: display();break; case8: save();break; case9: load();break; case10: stas(); case0: break; } } } 3、调试结果 4总结.(如需要,可附结论及改进方案、实习体会) 新疆大学课程论文(设计)、学年论文评分表 题目 作者 专业年级 指导教师 指导教师评语及 评分建议 指导教师: 年月日 院 (部) 或 教 研 室 意 见 学院或教研室主任: 年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 作业