当前位置:编程学习 > C/C++ >>

C语言程序设计

求高手帮我设计一个“学生成绩管理系统”主菜单有输入成绩,查询成绩,添加成绩,删除成绩,并且相互联通…
追问:来自手机问问高手.能不能帮我改简单一点,最好是都用if 语句.这样的太复杂了.好多语法都没学过呢
答案:这个是带存档的。看看有什么地方需要改进。

#include<stdio.h>
#include<string.h>
#include<malloc.h>
typedef struct student
{
 int number;//学号
 char name[30];//姓名
 int a,b,c;//三门课成绩
 float aver;//平均成绩
}student;
typedef struct node
{
 student data;
 struct node *next;
}Node,*Link;
void xian1()
{
    printf("                                学籍管理系统\n\n");
}
void xian2()
{
    printf("     ╔═════════════╦══════════════╗\n");
    printf("     ║     1.添加学生资料;      ║     6.清除所有资料;        ║\n");
 printf("     ╠═════════════╬══════════════╣\n");
    printf("     ║     2.查找学生资料;      ║     7.查看全班平均分;      ║\n");
 printf("     ╠═════════════╬══════════════╣\n");
 printf("     ║     3.修改学生资料;      ║     8.查看所有学生平均分;  ║\n");
 printf("     ╠═════════════╬══════════════╣\n");
 printf("     ║     4.删除学生资料;      ║     9.查看菜单项;          ║\n");
 printf("     ╠═════════════╬══════════════╣\n");
 printf("     ║     5.按名次查看成绩;    ║     0.退出学籍系统;        ║\n");     
    printf("     ╚═════════════╩══════════════╝\n");
}
void Save(Link L)//保存学生资料
{
 Node *p;
 FILE *fp;
 int flag=1,count=0;
 fp=fopen("input.dat","wb");
    if(fp==NULL)
 {
  printf("\n=====>提示重新打开文件时发生错误!\n");
  return;
 }
 p=L->next;
 while(p)
 {
  if(fwrite(p,sizeof(Node),1,fp)==1)
  {  p=p->next;
     count++;
  }
  else
  {
   flag=0;
   break;
  }
 }
 if(flag)
  printf("\n=====>提示:文件保存成功.(有%d条记录已经保存.)\n",count);
 fclose(fp);
}
void Saveas(Link L)//是否保存资料
{
 char h;
 printf("是否保存设置?(y/n):");
 h=getchar();
 h=getchar();
 if(h!='n')
   Save(L);
}
Node *Locate(Link L,int number)//查找
{
 Node *p;
 p=L->next;
 while(p)
 {
  if(p->data.number==number)
   return p;
  p=p->next;
 }
 return p;
}
void Findname(Link L)//按姓名查找
{
 Node *p=L->next;
 char nam[20];
 int flag=0;
 printf("查找姓名:");
 scanf("%s",nam);
    if(p==NULL)
 {printf("没有资料可供查找!\n");return;}
 while(p)
 {
  if(strcmp(p->data.name,nam)==0)
  {
   printf("学号:%d\n",p->data.number);
   printf("姓名:%s\n",p->data.name);
   printf("第1门成绩:%d\n",p->data.a);
   printf("第2门成绩:%d\n",p->data.b);
   printf("第3门成绩:%d\n",p->data.c);
   printf("平均分:%f\n",p->data.aver);
   flag++;
  }
  p=p->next;
 }
 if(flag==0)
  printf("\n\t\t\t没有该生!\n");
}
void Findnumber(Link L)//按学号找
{
 Node *p;
    int number;
 printf("查找学号:");
 scanf("%d",&number);
 p=Locate(L,number);
 if(p==NULL)
 {
  printf("\n\t\t\t没有该生!");return;}
  printf("\n学号:%d\n",p->data.number);
  printf("姓名:%s\n",p->data.name);
  printf("第1门成绩:%d\n",p->data.a);
  printf("第2门成绩:%d\n",p->data.b);
  printf("第3门成绩:%d\n",p->data.c);
  printf("平均分:%f\n",p->data.aver);
}
void ADD(Link L)//添加学生
{
     Node *w,*r,*p;
      int number;
        r=L;
     while(r->next!=NULL)
       r=r->next;
     printf("学号:");
     scanf("%d",&number);
        w=Locate(L,number);
        if(w)
  {
       printf("=====>提示:该同学已存在!\n");
       return;
  }
        p=(Node *)malloc(sizeof(Node));
  p->next=NULL;
        printf("姓名:");
     scanf("%s",p->data.name);
     p->data.number=number;
  p->data.aver=0.0;
  printf("第1门分数:");
  scanf("%d",&p->data.a);
  printf("第2门分数:");
  scanf("%d",&p->data.b);
  printf("第3门分数:");
  scanf("%d",&p->data.c);
     p->data.aver=(p->data.a)+(p->data.b)+(p->data.c);
  p->data.aver=p->data.aver/3;
     printf("=====>提示:添加成功!\n");
  r->next=p;
  Save(L);
}
void Modify(Link L)//修改
{
 int number;
 Node *p;
 printf("需修改人的学号:");
 scanf("%d",&number);
 p=Locate(L,number);
 if(!p)
  printf("=====>提示:没有该生资料!\n");
 else
 {
  printf("姓名:");
     scanf("%s",p->data.name);
        printf("学号:");
     scanf("%d",&p->data.number);
  printf("第1门分数:");
  scanf("%d",&p->data.a);
  printf("第2门分数:");
  scanf("%d",&p->data.b);
  printf("第3门分数:");
  scanf("%d",&p->data.c);
     p->data.aver=(p->data.a)+(p->data.b)+(p->data.c);
  p->data.aver=p->data.aver/3;
     printf("=====>提示:修改成功!\n");
  Saveas(L);
 }
}
void C易做图ver(Link L)//计算全班平均成绩
{
 Node *p;
 float sum=0.0,aver;
 int count=0;
 p=L->next;
 if(p==NULL)
 {printf("\t\t\t目前没有学生资料!\n");return;}
 while(p)
 {
  sum+=(p->data.a)+(p->data.b)+(p->data.c);
  p=p->next;
  count++;
 }
 aver=sum/count;
 printf("\n全班平均成绩为:%f分\n",aver);
}
void Stuaver

上一个:vc++6.0调试c语言问题
下一个:C语言程序难学吗?

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,