当前位置:
文档之家› C程序设计综合实验报告(2013)
C程序设计综合实验报告(2013)
{struct xsnode *p=xshead ;
printf("\n\n\n输出学生信息\n");
printf("学号姓名高数英语物理\n");
while(p!=NULL)
{ printf("%-8d%-10s%-9d%-9d%-9d\n",p->xh,p->xm,p->gs,p->yy,p->wl);
p=p->next;
}
}
(5)求平均成绩,并输出带有平均成绩的成绩单
void average(struct xsnode *xshead)//求每个人的平均成绩
{struct xsnode *p=xshead;
while (p)
{p->pj=(p->gs+p->yy+p->wl)/3.0;
p=p->next;
printf("请输入你要选择的数字:");
scanf(" %c", &ch); /*在%c前面加一个空格,将存于缓冲区中的回车符读入*/
return ch;
}
(10)主函数代码,调用写好的函数,用switch语句达到利用菜单的目的:
void main()
{struct xsnode *xshead;
1、实验运行过程及分析:
(1)函数库的调用:#include <stdio.h>
#include <stdlib.h>
(2)结构体的定义:struct xsnode
{
int xh;//学号
char xm[15];//姓名
int gs;//高数成绩
intyy;//英语成绩
int wl;//物理成绩
double pj;//平均成绩
default:printf("error!");break;//输入了(0~4)以外的数字
}
}
}
此学生成绩管理系统实现了:输入、输出、求每个人的平均成绩、按学号查找每个人的成绩、输出平均分大于80的优等生五个功能。
2、运行结果:(1)菜单的显示:
(2)成绩录入:
(3)成绩输出:
(4)平均成绩输出:
printf("学号姓名高数英语物理\n");
for (i=0;i<n;i++)
{
p=(struct xsnode*)malloc(sizeof(struct xsnode));
scanf("%d %s %d %d %d",&p->xh,p->xm,&p->gs,&p->yy,&p->wl);
if(head==NULL)
char ch;
int n;
while (1)//构成循环,每一次运行完毕返回菜单
{
ch=Menu();
switch(ch)
{
case '1':
xshead=create();break;//录入成绩
case '2':output1(xshead);break;//输出成绩
case '3':{average(xshead);output2(xshead);}break;//输出平均成绩
(5)正确按学号查找成绩:
(6)错误按学号查找成绩:
(7)输出平均分大于80的优等生:
(8)退出系统:
3、心得体会:
一天的时间我做好了这个简单的学生成绩管理系统,也不是很简单却也不难,心得体会包括以下几点:
(1)我在写代码的时候翻阅了C语言教科书,写程序的同时并进行了复习;
(2)只有课本知识是不够的,我还在图书馆进行了有效地查阅,学无止境,我要充分利用好学校的学习资源;
}
p=p->next;//指针后移
}
}
(9)菜单的建立:
char Menu(void)//菜单列表
{
char ch;
printf("\n\n\t\t\t|------欢迎使用学生成绩管理系统------|\n");
printf("\t\t\t| |\n");
printf("\t\t\t| 1.成绩录入|\n");
printf("优等生列表:\n");
printf("学号姓名高数英语物理平均分\n");
while(p!=NULL)
{
if(p->pj>=80)
{
printf("%-8d%-10s%-9d%-9d%-9d%-9.2f\n",p->xh,p->xm,p->gs,p->yy,p->wl,p->pj);
printf("\t\t\t| |\n");
printf("\t\t\t| 5.输出优等生|\n");
printf("\t\t\t| |\n");
printf("\t\t\t| 0.退出|\n");
printf("\t\t\t| |\n");
printf("\t\t\t|------------------------------------|\n");
int print1(int m)
{
printf("请输入你要查找的学号m:");
scanf("%d",&m);
return m;
}
(8)输出平均分大于80的优等生:
void good(struct xsnode *xshead)//输出平均分大于80的优等生
{struct xsnode *p=xshead;
p=p->next;
}
}
(6)按学号进行成绩查找并且输出查找结果:
void search(struct xsnode *xshead,int n)//按学号查找成绩
{
struct xsnode *p=xshead;
average(xshead);//调用平均成绩函数
printf("查找结果为:\n");
华北科技学院计算机学院综合性实验
实 验 报 告
课程名称C程序设计
实验学期2012至2013学年 第二学期
学生所在系部计算机学院
年级12级专业班级信管B12-1班
学生姓名何欢学号2012********
任课教师孙改平
实验成绩
计算机学院制
《C程序设计》课程综合性实验报告
开课实验室:计算机基础一实验室2013年06月24日
printf("\t\t\t| |\n");
printf("\t\t\t| 2.成绩输出|\n");
printf("\t\t\t| |\n");
printf("\t\t\t| 3.输出每个人的平均成绩|\n");
printf("\t\t\t| |\n");
printf("\t\t\t| 4.按学号查找成绩|\n");
三、实验内容
1、实验内容
对学生基本信息,包括学号、姓名、至少三门课成绩。
1学生基本信息录入;
2学生基本信息的输出;
3按学号查询学生信息;
4按学号修改某学生信息并输出;
5求每个人平均成绩;
6删除某学生信息;
7添加某学生信息
8输出平均分大于80分的同学信息;
9根据总成绩或平均成绩综合排名;(此功能用链表处理的同学可不做)
评定项目
A
B
C
D
评定项目
A
B
C
D
算法正确
界面美观,布局合理
程序结构合理
操作熟练
语法、语义正确
解析完整
实验结果正确
文字流畅
报告规范
题解正确
其他:
评价教师签名:
2012年7月2日
{head=p; head->next=NULL;}
else
{p->next=head;head=p;//新节点插入头节点前面,head指向新节点
}
}
return head;
}
(4)输出链表:函数定义为output1,输出成绩单
void output1(struct xsnode *xshead)//链表输出
case '4':{n=print1(n);search(xshead,n);}break;//按学号查找成绩
case '5':good(xshead);break;//输出平均分大于80的优等生
case '0':{exit(0);printf("end of program!");}break;//退出系统
struct xsnode *next;
(3)建立链表:
struct xsnode *create()//链表建立
{
int i;
int n;
struct xsnode *head=NULL,*p;
printf("输入班级人数:");
scanf("%d",&n);
printf("\n输入学生信息\n");
(3)不懂就要问,在打印菜单的时候我遇到了一个问题,没有循环,菜单打印出来一次程序就结束了,自己想了很长时间,后来被同学的一句话点醒了,进行了修改;