📄 main.c
字号:
/*****************************************************************
编辑环境:vc6.0
*****************************************************************/
/*****main.c*****/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sqlist.h"
#include "structs.h"
#define ASCII_NUM_X 48
int flag=0;
void PrintMenu();
void Init();
void AddSchool();
void AddSubject();
void AddStudent();
void ListSchool();
void ListSubject();
void GetSchoolScore();
void GetAllScore();
void Exit();
void (*funarray[])()={
AddSchool,
AddSubject,
AddStudent,
ListSchool,
ListSubject,
GetSchoolScore,
GetAllScore,
Exit
};
MakeSqlist(SUBJECT,subjectlist);
MakeSqlist(SCHOOL,schoollist);
MakeSqlist(STUDENT,studentlist);
int main()
{
int key;
Init();
while(flag==0)
{
PrintMenu();
key=getchar();
getchar(); /*receive enter*/
funarray[key-ASCII_NUM_X-1]();
printf("按回车键继续\n");
getchar(); /*receive enter*/
}
return 1;
}
void PrintMenu()
{
char *menu="运动会分数统计程序\n"
"1---添加学校\n"
"2---添加项目\n"
"3---对指定项目添加学生\n"
"4---学校列表\n"
"5---项目列表\n"
"6---查看指定学校的成绩\n"
"7---查看团体总分报表\n"
"8---退出\n";
printf(menu);
}
void Init()
{
SqlistInit(SCHOOL,schoollist);
SqlistInit(SUBJECT,subjectlist);
SqlistInit(STUDENT,studentlist);
}
void AddSchool()
{
SCHOOL s;
printf("请输入学校号码\n");
scanf("%d",&s.num);
printf("请输入学校名称\n");
scanf("%s",s.name);
getchar(); /*receive enter*/
SqlistInsertback(SCHOOL,schoollist,s,school_copy);
}
void AddSubject()
{
SUBJECT s;
printf("请输入项目号码\n");
scanf("%d",&s.num);
printf("请输入项目名称\n");
scanf("%s",s.name);
getchar(); /*receive enter*/
printf("请输入你要添加项目的性别类型,0为男,1为女\n");
scanf("%d",&s.sex);
printf("请输入项目的计分方法,0为前3名有分,1为前5名有分\n");
scanf("%d",&s.scoring_kind);
SqlistInsertback(SUBJECT,subjectlist,s,subject_copy);
}
void AddStudent()
{
int n,i,subjectnum;
printf("请输入你要添加学生所属的项目号\n");
scanf("%d",&subjectnum);
for(i=0;i<subjectlist.length;i++)
{
if(subjectlist.elem[i].num==subjectnum)
{
n=subjectlist.elem[i].scoring_kind==1?5:3;
break;
}
}
printf("项目的计分方法为%d\n",subjectlist.elem[i].scoring_kind);
printf("你总共要输入%d个学生的资料\n",n);
for(i=0;i<n;i++)
{
STUDENT s;
s.subject_num=subjectnum;
printf("请输入第%d个学生的姓名\n",i+1);
scanf("%s",&s.name);
getchar(); /*receive enter*/
printf("请输入第%d个学生所属的学校号\n",i+1);
scanf("%d",&s.school_num);
printf("请输入第%d个学生的排名\n",i+1);
scanf("%d",&s.place);
SqlistInsertback(STUDENT,studentlist,s,student_copy);
}
}
void ListSchool()
{
int i;
for(i=0;i<schoollist.length;i++)
{
printf("%d \t 学校号码:%d \t 学校名称:%s\n",
i,schoollist.elem[i].num,schoollist.elem[i].name);
}
}
void ListSubject()
{
int i;
for(i=0;i<subjectlist.length;i++)
{
printf("%d \t 项目号码:%d \t 项目名称:%s \t 项目计分方法:%d\n",
i,subjectlist.elem[i].num,subjectlist.elem[i].name,subjectlist.elem[i].scoring_kind);
}
}
void GetSchoolScore()
{
int i;
int schoolnum;
printf("请输入你要查看的学校号");
scanf("%d",&schoolnum);
for(i=0;i<studentlist.length;i++)
{
if(studentlist.elem[i].school_num==schoolnum)
{
int score[]={5,3,2,7,5,3,2,1};
/*get subject*/
int j;
for(j=0;i<subjectlist.length;j++)
{
if(subjectlist.elem[j].num==studentlist.elem[j].subject_num)
{
break;
}
}
printf("取得成绩的项目号:%d \t 名次:%d \t 姓名:%s \t\t 得分:%d\n",
studentlist.elem[i].subject_num,
studentlist.elem[i].place,
studentlist.elem[i].name,
score[studentlist.elem[i].place-1+subjectlist.elem[j].scoring_kind*3]);
}
}
}
void GetAllScore()
{
int i,j;
for(i=0;i<schoollist.length;i++)
{
int malescore=0,femalescore=0;
for(j=0;j<studentlist.length;j++)
{
if(studentlist.elem[j].school_num==schoollist.elem[i].num)
{
int score[]={5,3,2,7,5,3,2,1};
/*get subject*/
int k;
for(k=0;k<subjectlist.length;k++)
{
if(subjectlist.elem[k].num==studentlist.elem[j].subject_num)
{
break;
}
}
if(subjectlist.elem[k].sex==0)
{
malescore+=
score[studentlist.elem[j].place-1+subjectlist.elem[k].scoring_kind*3];
}
else
{
femalescore+=
score[studentlist.elem[j].place-1+subjectlist.elem[k].scoring_kind*3];
}
}
}
printf("学校号:%d \t 男子团体总分:%d \t 女子团体总分:%d \t 团体总分:%d\n",
schoollist.elem[i].num,malescore,femalescore,malescore+femalescore);
}
}
void Exit()
{
/*clear allocated memory*/
free(subjectlist.elem);
free(schoollist.elem);
free(studentlist.elem);
flag=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -