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

学生成绩管理系统C语言【急求!!!谢谢!!!】

  •main()•{•int m=0, n;• while(m= =0)•{• printf("\n");•  printf("       ******************************\n");•  printf("       *     ================               *\n");•  printf(“       *     学生成绩管理系统                   *\n");•  printf("       *     ================               *\n");•  printf("       *                                                        *\n");•  printf(“       *     1、输入学生成绩                     *\n");•  printf(“       *     2、统计平均成绩                     *\n");•  printf(“       *     3、从大到小排序                     *\n");•  printf(“       *     4、查找学生成绩                     *\n");•  printf(“       *     5、退出系统                             *\n");•  printf("       *                                                        *\n");•  printf("       ******************************\n");•  printf("            清输入选项(1-5):\n"); •scanf("%d",&n);•switch(n)
•{  case 1: printf("执行输入学生成绩命令。\n");•             ; /*调用函数1,输入数据 */              break;•   case 2:  printf("执行统计平均成绩命令。\n");•           ; /*调用函数2,统计平均成绩*/          break;•   case 3:printf("执行从大到小排序命令。\n");•           ; /*调用函数3,从大到小排序函数*/   break;•    case 4:printf("执行查找学生成绩命令。\n");•   ;/*调用函数4,查找某个学生成绩函数*/     break;•   case 5: printf("退出系统。\n");•            m=1;•            break;•  defaut:            /*若输入1-5以外的其它字符允许重输*/•  printf("输入有误,重输!!\n");          break;•}    •}•}
答案:这个你看看需要哪些改进的地方

#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");
    printf("                                      *\n");
    printf("                                      *\n");
    printf("                                      *\n");
}
void xian2()
{
    printf("     ******************************************************************\n");
    printf("                 1.添加学生资料;           2.查找学生资料;\n");
    printf("                 3.修改学生资料;           4.删除学生资料;\n");
 printf("                 5.按名次查看成绩;         6.清除所有资料;\n");
 printf("                 7.查看全班平均分;         8.查看所有学生平均分;\n");
 printf("                 0.退出学籍系统;           9.查看菜单项;\n");
    printf("     ******************************************************************\n");
}
void Save(Link L)//保存学生资料
{
 Node *p;
 FILE *fp;
 int flag=1,count=0;
 fp=fopen("student","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没有该生!\n");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("=====>提示:可以添加!\n");
        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 Clasaver(Link L)//计算全班平均成绩
{
 Node *p;
 float sum=0.0,aver;

上一个:学习C语言应该看些什么书或视频打基础?Thx
下一个:电子计算器用C语言怎么编,请大家帮帮忙

更多C/C++疑问解答:
关于c++的cout输出的问题。
在学校里学过C和C++,不过学的很一般,现在自学C#,会不会很难?
全国计算机二级C语言笔试题
已知某树有2个2度结点,3个3度结点,4个4度结点,问有几个叶子结点?
c++数据结构内部排序问题,整数排序
2012九月计算机二级C语言全国题库,,急求急求
如果assert只有一个字符串作为参数,是什么意思呢?
C语言中,哪些运算符具有左结合性,哪些具有右结合性,帮忙总结下,谢谢了!
为什么用结构体编写的程序输入是,0输不出来啊~~~
将IEEE—754的十六进制转化为十进制浮点类型,用C或C++都行,多谢各位大侠啊,非常感谢!
为什么这个程序求不出公式?
这个链表倒置的算法请大家分析下
c语言函数库调用
C语言unsigned int纠错
C语言快排求解啊
asp
php
Delphi
Matlab
JSP
Foxpro
JS
C/C++
C#/ASP.NET
VC++
JAVA
VB
汇编语言
html/css
CGI
XML/UML
wap
网站相关
网页素材
python
如果你遇到编程学习难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,