作业完成情况管理程序 假设某门课程一学期要留10次作业,每次老师要进行批改,给出分数后还要进行登记。学期期末要根据每次作业的成绩计算出最终的平时成绩(满分100)。
该程序应该具有下列功能:
(1) 通过键盘输入某位学生某次作业的分数;
(2) 给定学号,显示某位学生作业完成情况;
(3) 给定某个班级的班号,显示该班所有学生的作业完成情况;
(4) 给定某位学生的学号,修改该学生的作业完成信息;
(5) 给定某位学生的学号,删除该学生的信息;
(6) 提供一些统计各类信息的功能。
下面是我的程序:大虾耐心看哦!
C/C++ code#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct
StInfo{
int Num[8];
int Class[4];
char name[20];
int score[11];
}StInfo;
void duwenjian();
void Create_weicha_slink(Slink *L);
void DisplayMenu();
int choiceItem();
void Input_Info(ST
stu, int
i, int
score );
void searchone(Slink *L,);
void searchall(Slink data,Slink StInfo);
void
charu(Slink StInfo,&space ,int Num ) ;
void delete (Slink *L,int i,) ;
void duwenjian()
{
FILE
*fp;
if((fp=fopen("yuanshixinxi.exe","r"))==NULL)
{
printf("cannot open this file.\n");
getch();
exit(0);
}
else
{
fp=fopen("yuanshixinxi.exe","r");
while(ch!=ABC)
{
c=getch();
}
fclose(fp);
}
typedef struct node
{
StInfo
data;
struct node *next;
}LSlink,Slink*L;
Slink*Init_slink()
//*初始化分配头结点*//
{
L=(Slink *)mallloc(sizeof(Slink));
L->next=NULL;
return(L);
}
void Create_weicha_slink(Slink *L)
//*尾插法创建单链表*//
{
ElemType StInfo;
Slink *p,*q;
r=L;
while(i=1,i>1000,i++)
{
p=(Slink*)malloc(sizeof(Slink));
p->data=L.StInfo;
p->next=NULL;
r=p;
printf("请读入学生信息\n");
printf("input StInfo
end with 0000\n");
scanf("%ld",&L.StInfo.Num);
scanf("%c",&L.StInfo.Name);
scanf("%ld",&L.StInfo.Class);
duwenjian(*fp);
}
}
void DisplayMenu()
//显示菜单//
{
printf("\n========= MENU =========");
printf("\n Input a student's informations ............ 1");
printf("\n Print student's informations .............. 3");
printf("\n Init student's informations ............... 4");
printf("\n Search student's information .............. 5");
printf("\n charu student's information .............. 6");
printf("\n del student's information ..................7");
printf("\n Search one class students information ......8");
printf("\n exit system ............................... 0");
printf("\nchoice,please:");
}
int choiceItem() //菜单选择
{
int choice;
do{
DisplayMenu();
scanf("%d",&choice);
}while(choice<0||choice>7);
return choice;
}
void Input_Info(ST
stu, int
i, int
score );
{
scanf("%ld",&Num);
printf("请输入学生成绩信息:");
printf("input 1ci score:");
scanf("%ld",&score1);
printf("input 2 ci score");
scanf("%ld",&score2);
pringf("input 3 ci score");
scanf("%ld",&score3);
printf("input 4 ci score");
scanf("%ld",&score4);
printf("input 5 ci score");
scanf("%ld",&score5);
printf("input 6 ci score");
scanf("%ld",&score6);
printf("input 7 ci score");
scanf("%ld",&score7);
printf("input 8 ci score");
scanf("%ld",&score8);
printf("input 9 ci score");
scnaf("%ld",&score9);
printf("input 10 ci score");
scanf("%ld",&score10);
}
void searchone(Slink *L,)
//查找某个学生的学生信息//
{
Slink *p,*q;
printf("The one I want to search:");
scanf("%ld"&Num);
p=L.data.Num;
p=p->next ;
q=p;
p=p->next;
while (L.data.Num!=Num)
{
p=L.Num;
return p;
printf("%d\n",L.data.NUm);
printf("%c\n",L.data.Name);
printf("%d\n",L.data.Class);
printf("%d\n",L.data.Score);
}
}searchoneL.data;
void searchall(Slink data,Slink StInfo)
{
char j;
int n,k,m;
printf("Present all the stduent's informniation:");
for(i=1,i<n,i++)
{
while(n=!-1)
{
j=L.data.Name;
k=L.data.Num;
m=L.data.Class;
printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",L.data.Score[1],L.data.Score[1],
L.data.Score[2],L.data.Score[3],L.data.Score[4],L.data.Score[5],
L.data.Score[6],L.data.Score[7],L.data.Score[8],L.data.Score[9],
L.data.Score[10],);
printf("%c\n",j);
printf("%d\n",k);
printf("%d\n",m);
}
}
}
void
charu(Slink StInfo,&space ,int Num )
//实现插入某个学生的信息//
{
int *p,*q,*r;
searchone(Slink *L) ;
//调用该函数查找要插入的位置//
InitSpace.SL(space);
//初始化备用空间//
r=Malloc.SL(space);
p->next=r;
r->next=p->next->next;
printf("charu xueshengxinxi:");
scanf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",L.data.Score[1],L.data.Score[1],
L.data.Score[2],L.data.Score[3],L.data.Score[4],L.data.Score[5],
L.data.Score[6],L.data.Score[7],L.data.Score[8],L.data.Score[9],
L.data.Score[10],);
scanf("%c\n",&Name);
scanf("%d\n",&Class);
scanf("%d\n",&Num);
printf("charu success");
}
void delete (Slink *L,int i,)
//实现删除第i个结点//
{
int *p,*q;
searchone(Slink *L) ;
//调用该函数找到要删除的结点//
p->next=p->next->next;
printf("shan chu cheng gong ");
free(p);
}
void everypj(Slink *L,int i, int
L.data.Score[])
{
int sum,i,k;
for(i=0,i<10,i++)
{
sum=0;
sum=L.data.Score[i]+sum;
}
k=sum/10;
printf("shu chu gai sheng de ge ren ping jun cheng ji :");
printf("%d",k);
}
void allpj(Slink *L,int i, L.data.Score[])
{
int sum[L.data.Num],sum,i,k,j,m;
int *p,*q;
for(j=1,j<40,j++)
{
for(i=0,i<10,i++)
{
sum=0;
sum=L.data.Score[i]+sum;
}
sum[L.data.Score]=sum[1];
sum[L.data.Score]=sum[L.data.Score]+sum[j];
}
m=sum[L.data.Score]/40;
printf("shu chu zheng ti de ping jun cheng ji:");
printf("%d\n",m);
}
void main()
{
duwenjian();
Create_weicha_slink(Slink *L);
DisplayMenu();
choiceItem();
Input_Info(ST
stu, int
i, int
score );
searchone(Slink *L,);
searchall(Slink data,Slink StInfo);
charu(Slink StInfo,&space ,int Num ) ;
delete (Slink *L,int i,) ;
duwenjian()
}