c语言实验报告.docx
- 文档编号:20128749
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:13
- 大小:65.49KB
c语言实验报告.docx
《c语言实验报告.docx》由会员分享,可在线阅读,更多相关《c语言实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
c语言实验报告
华北科技学院计算机系综合性实验
实验报告
课程名称C语言程序设计
实验学期2010至2011学年第二学期
学生所在系部计算机系
年级2010专业班级计算机科学与技术B-103
学生姓名杨小龙学号201007014316
任课教师鞠宏军
实验成绩
计算机系制
实验报告须知
1、学生上交实验报告时,必须为打印稿(A4纸)。
页面空间不够,可以顺延。
2、学生应该填写的内容包括:
封面相关栏目、实验地点、时间、目的、设备环境、内容、结果及分析等。
3、教师应该填写的内容包括:
实验成绩、教师评价等。
4、教师根据本课程的《综合性实验指导单》中实验内容的要求,评定学生的综合性实验成绩;要求在该课程期末考试前将实验报告交给任课教师。
综合性实验中,所涉及的程序,文档等在交实验报告前,拷贝给任课教师。
任课教师统一刻录成光盘,与该课程的期末考试成绩一同上交到系里存档。
5、未尽事宜,请参考该课程的实验大纲和教学大纲。
《C语言程序设计》课程综合性实验报告
开课实验室:
基础实验室六2011年7月5日
实验题目
基于链表的学生成绩管理系统
一、实验目的
1、掌握链表的创建、遍历显示和清除;
2、掌握链表数据的文件保存、读取;
二、设备与环境
微型计算机、Tc2.0
三、实验内容
1、定义结构体,创建链表
structxsnode
{
intxh;
charxm[15];
intgs;
intyy;
intwl;
floatpj;
intmc;
structxsnode*next;
};
2、根据以上链表结点结构,实现以下功能
a、三门课程名称的录入,学生学号、姓名的录入、显示;
b、各学生记录数据的文件保存与读取;
c、按学号查询记录,查询指定记录的修改、删除;(选作)
d、平均成绩计算,按平均成绩排序,按单科成绩排序;(选作)
四、实验结果及分析
1、运行结果:
2、源程序:
#include"stdio.h"
#include"malloc.h"
structxsnode
{
intxh;
charxm[15];
intgs;
intyy;
intwl;
intpj;
structxsnode*next;
};
structxs;
intn=0;
intpj(inta,intb,intc)
{
intsum,z;
sum=a+b+c;
z=sum/3;
return(z);
}
voidtjlb(structxsnode*xshead)
{
structxsnode*p=NULL;
structxsnode*p1,*p2;
intt,i;
printf("添加学生成绩\n");
printf("*************************************************\n");
printf("请输入你想添加学生的个数:
");
scanf("%d",&t);
n=n+t;
for(i=0;i { printf("学号\t姓名\t高数\t英语\t物理\n"); p=(structxsnode*)malloc(sizeof(structxsnode)); scanf("%d",&p->xh); scanf("%s",p->xm); scanf("%d",&p->gs); scanf("%d",&p->yy); scanf("%d",&p->wl); p->pj=pj(p->gs,p->yy,p->wl); p->next=xshead->next; xshead->next=p; } for(p1=xshead->next;p1! =NULL;p1=p1->next) { for(p2=p1->next;p2! =NULL;p2=p2->next) { if(p1->pj<=p2->pj) { t=p1->pj; p1->pj=p2->pj; p2->pj=t; } } } getchar(); } voidcxlb(structxsnode*xshead) { intt,xh; structxsnode*p=NULL; if(xshead->next==NULL) { printf("这是个空文件\n"); return; } printf("请输入想查询的学号: "); scanf("%d",&xh); for(p=xshead->next;p! =NULL;p=p->next) if(p->xh==xh)break; if(p==NULL) printf("没找到\n"); else { printf("学号\t姓名\t高数\t英语\t物理\t平均\n"); } printf("%d\t%s\t%d\t%d\t%d\t%d\n",p->xh,p->xm,p->gs,p->yy,p->wl,p->pj); printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); printf("请选择\n"); printf("1-修改\n"); printf("2-删除\n"); printf("3-返回主菜单"); scanf("%d",&t); if(t==1) { printf("请输入新的信息: \n"); printf("学号\t姓名\t高数\t英语\t物理\n"); scanf("%d",&p->xh); scanf("%s",p->xm); scanf("%d",&p->gs); scanf("%d",&p->yy); scanf("%d",&p->wl); p->pj=pj(p->gs,p->yy,p->wl); } elseif(t==2) { structxsnode*q=xshead; while(q->next! =p)q=q->next; q->next=p->next;; free(p); } elseif(t==3) return; } voidxslb(structxsnode*xshead) { inti=1; structxsnode*p=xshead->next; if(p==NULL) { printf("这是一个空文件,请添加学生\n"); getchar(); return; } printf("学号\t姓名\t高数\t英语\t物理\t平均\n"); while(p! =NULL) { printf("%d\t%s\t%d\t%d\t%d\t%d\n",p->xh,p->xm,p->gs,p->yy,p->wl,p->pj); p=p->next; i++; if(i==21)break; } if(p! =NULL) { getchar(); printf("学号\t姓名\t高数\t英语\t物理\n"); while(p! =NULL) { printf("%d\t%s\t%d\t%d\t%d\t%d\t",p->xh,p->xm,p->gs,p->yy,p->wl,p->pj); p=p->next; i++; } } getchar(); } voidbclb(structxsnode*xshead) { inti; FILE*fp; structxsnode*p=xshead->next; if(p==NULL) { printf("这是一个空文件,请添加学生\n"); getchar(); return; } if((fp=fopen("xscj.dat","w"))==NULL) { printf("不能打开文件\n"); return; } fprintf(fp,"%d\n",n); for(i=0;i { p=xshead->next; fprintf(fp,"%d\t%s\t%d\t%d\t%d\t",p->xh,p->xm,p->gs,p->yy,p->wl); fprintf(fp,"%d\n",p->pj); xshead->next=p->next; } p->next=NULL; fclose(fp); printf("保存成功"); } voidcklb(structxsnode*xshead) { inti,n; FILE*fp; structxsnode*q,*p=xshead->next; while(p! =NULL) { xshead->next=p->next; free(p); p=xshead->next; } if((fp=fopen("xscj.dat","r"))==NULL) { printf("不能打开文件\n"); return; } q=xshead; fscanf(fp,"%d",&n); for(i=0;i { p=(structxsnode*)malloc(sizeof(structxsnode)); fscanf(fp,"%d%s%d%d%d%d\n",&p->xh,p->xm,&p->gs,&p->yy,&p->wl,&p->pj); p->next=q->next; q->next=p; } fclose(fp); getchar(); } voidmain() { intc=-1; structxsnode*head=(structxsnode*)malloc(sizeof(structxsnode)); head->next=NULL; while(c! =6) { printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#\n"); printf("*学生成绩系统(2.0)*\n"); printf("*********************************************\n"); printf("*计科B103班杨小龙201007014316*\n); printf("#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#\n"); printf("*1-添加数据*\n"); printf("*2-查询,修改和删除*\n"); printf("*3-显示桌面*\n"); printf("*4-保存*\n"); printf("*5-查看文件*\n"); printf("*6-退出系统*\n"); printf("#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#\n"); printf("请选择1-6: \n"); scanf("%d",&c); switch(c) { case1: tjlb(head);break; case2: cxlb(head);break; case3: xslb(head);break; case4: bclb(head);break; case5: cklb(head);break; } } free(head); } 3、试验收获: 通过此次的编程是我深深的感受到了,编一个程序是多么复杂,要编好一个好的程序,就得付出跟多的时间和精力,在编程序过程中需要的是我们较强的逻辑思维能力和操作动手能力还有用心细心程度,在此次编程中锻炼了我这些方面的能力,也发现了许多自身的问题,比如粗心,思维不严密等,这些都待以后改进,还在一次次的失败中体会到了成功的来之不易。 教师评价 评定项目 A B C D 评定项目 A B C D 算法正确 界面美观,布局合理 程序结构合理 操作熟练 语法、语义正确 解析完整 实验结果正确 文字流畅 报告规范 题解正确 其他: 评价教师签名: 年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验 报告