实习报告
题目:写一个统计程序产生各种成绩单和得分报表。
需求分析
(1) 用户从键盘上首先录入若干运动员的参赛项目和成绩得分等数据,再输入学校清单;
(2) 通过Dev-c++ 调试编译 命令提示符方式屏幕输出;
(3) 产生各学校的成绩单,内容包括各学校所取得的每项成绩的项目号、名次(成绩)、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分;
(4) 测试数据:见实验报告末;
详细设计
#include
#include
#include
#define n 5//运动员编号
#define m 2//学校编号
typedef struct project
{
int id;
char name[11];
char projectname[11];
char schoolname[13];
char sex[3];
int grade;
int score;
}Project;
typedef struct school
{
char schoolname[13];
int malescore;
int femalescore;
int sum;
}School;//团体总分报表
typedef struct projects
{
Project data;
struct projects *next;
}Projects;//实现链表的顺序存储
typedef struct schools
{
School data[100];
int length;
}Schools;
void input(Projects *p)
{
Projects *p1=(Projects *)malloc(sizeof(Projects));
if(p->next == NULL) p1->data.id=1;
else p1->data.id=(p->next->data.id)+1;
printf("请输入运动员姓名:n");
scanf("%s",p1->data.name);
printf("请输入项目名称:n");
scanf("%s",p1->data.projectname);
printf("请输入学校名称:n");
scanf("%s",p1->data.schoolname);
printf("请输入运动员性别(F/M):n");
scanf("%s",p1->data.sex);
printf("请输入运动员名次:n");
scanf("%d",&(p1->data.grade));
printf("请输入运动员成绩:n");
scanf("%d",&(p1->data.score));
p1->next=p->next;
p->next=p1;
}
void inputSchools(Schools *s)
{
for(int i=0;i { printf("请输入第%d个学校名:",i+1); scanf("%s",s->data[i].schoolname); //printf("%s",s->data[i].schoolname); s->data[i].femalescore=0; s->data[i].malescore=0; s->data[i].sum=0; } s->length=m; } void math(Projects P,Schools *x) { Projects *p1=P.next;int i; while(p1) { for(i=0;i { if(!strcmp(p1->data.schoolname,x->data[i].schoolname)) { if(!strcmp(p1->data.sex,"F"))x->data[i].femalescore+=p1->data.score; else x->data[i].malescore+=p1->data.score; x->data[i].sum+=x->data[i].femalescore+x->data[i].malescore; } }p1=p1->next; } } void output(Projects P,Schools *x) { Projects *p1=P.next; for(int i=0;i { p1=P.next;//重置链表指针 printf("学校名称:%sn",x->data[i].schoolname); while(p1) { if(!strcmp(p1->data.schoolname,x->data[i].schoolname)) { printf("运动员姓名:%s",p1->data.name); printf("项目名称:%s",p1->data.projectname); printf("运动员名次:%d",p1->data.grade); printf("运动员成绩:%dn",p1->data.score); }p1=p1->next; } printf("男子团体总分:%d ",x->data[i].malescore); printf("女子团体总分:%d ",x->data[i].femalescore); printf("学校总分:%d n",x->data[i].sum); } } int main(){ Projects P,*p1;Schools x; P.next=NULL;//指针初始化 for(int i=0;i { printf("录入第%d个运动员的信息:n",i+1); input(&P); }//输入项目 inputSchools(&x);//输入学校 math(P,&x);//计算 output(P,&x);//打印 system("PAUSE"); return 0; }



