学生管理系统(线性链表的简单应用)

说实话,这个程序和教务处管理系统没有什么区别!!!!

还是废话不多说!!!请看程序!!!

 

 

 

#include<iostream>
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
using namespace std;

#define LEN sizeof(struct student)
struct student
{  
 int num;//学号
    char name[20];//姓名
    double foxscore;//fox成绩
    double cscore;//C语言
    double englishscore;//英语成绩
    struct student *next;
};

 

 


int main()
{
 void InputData(struct student *A);//输入数据
 void PrintData(struct student *B);//打印数据
 struct student *DeleteData(struct student *C);//删除数据
 void CorectData(struct student *D);//修改数据
 void InsertData(struct student *E);//插入数据
 void AverData(struct student *F);//数据统计
 struct student *head,*pt;
 int ch;
 pt=head=(struct student *)malloc(LEN);
 printf("欢迎使用本学生管理系统,请输入你要进行的操作:\n");
 printf("----------------------------------------------------------------\n");
 printf("                 初始数据     请按“1”                           \n");                   
 printf("                 打印数据     请按“2”                           \n");
 printf("                 删除数据     请按“3”                           \n");
 printf("                 修改数据     请按“4”                           \n");
 printf("                 插入数据     请按“5”                           \n");
 printf("                 数据统计     请按“6”                           \n");
 printf("                 结束操作     请按“7”                           \n");
 printf("----------------------------------------------------------------\n");
 
 while(cin>>ch)
 {
   if(ch==7)
   {
   printf("感谢您的使用,系统应用已经自动关闭\n");
   break;
   }
 switch(ch)
 {
 case 1:InputData(head);break;
 case 2:PrintData(head);break;
 case 3:head=DeleteData(head);break;
 case 4:CorectData(head);break;
 case 5:InsertData(head);break;
 case 6:AverData(head);break;
 default: printf("输入错误,请重新输入数据\n");
 }
 printf("欢迎使用本学生管理系统,请输入你要进行的操作:\n");
 printf("----------------------------------------------------------------\n");
 printf("                 初始数据     请按“1”                           \n");                   
 printf("                 打印数据     请按“2”                           \n");
 printf("                 删除数据     请按“3”                           \n");
 printf("                 修改数据     请按“4”                           \n");
 printf("                 插入数据     请按“5”                           \n");
 printf("                 数据统计     请按“6”                           \n");
 printf("                 结束操作     请按“7”                           \n");
 printf("----------------------------------------------------------------\n");
 
 }

 return 0;
}


 

 

 


void InputData(struct student *A)//初始数据
{
  int Num;
  struct student *p1;
  p1=A;
  printf("请输入要存储的学生个数:\n");
  cin>>Num;
  while(Num--)
  {
     printf("学号   姓名   for成绩   c语言成绩   英语成绩\n");
  scanf("%d%s%lf%lf%lf",&p1->num,&p1->name,&p1->foxscore,&p1->cscore,&p1->englishscore);
   p1->next=(struct student *)malloc(LEN);
   if(Num)
   p1=p1->next;
   else
   p1->next=NULL;
 
    
  }
 

   
 
}

 


void PrintData(struct student *B)//打印数据
{
   struct student *p;
   p=B;
   while(p!=NULL)
   {
     printf("学号   姓名   for成绩   c语言成绩   英语成绩\n");
  printf("%d   %s   %.2lf   %.2lf   %.2lf\n",p->num,p->name,p->foxscore,p->cscore,p->englishscore);
  p=p->next;
   }
}

 

 

 


struct student *DeleteData(struct student *C)//删除数据
{
    struct student *p,*pre;
 p=C;
 int Num;
 printf("请输入你要进行删除的学生的序号\n");
 cin>>Num;
 if(C->num==Num)
 {
  C=C->next;
  return C;
 }
 else
 {
 
 pre=p;
 while(p!=NULL)
 {

    
  
  
  if(p->num==Num)
   {
    pre->next=pre->next->next;
           break;
   }

      pre=p;
   p=p->next;
      
 }
}

return  C;
}

 

void CorectData(struct student *D)//修改数据
{
 struct student *p;
 int Num;
 p=D;
 printf("请输入你要修改的学生的学号;\n");
 cin>>Num;
    while(p!=NULL)
 {
  if(p->num==Num)
  {
   printf("请输入你要修改的学生的信息\n");
   printf("学号   姓名   for成绩   c语言成绩   英语成绩\n");
   scanf("%d%s%lf%lf%lf",&p->num,&p->name,&p->foxscore,&p->cscore,&p->englishscore);
  }
     p=p->next;
 }
}

 

 

 


void InsertData(struct student *E)//插入数据
{
 struct student *p;
 p=E;
 while(p->next!=NULL)
  p=p->next;
  p->next=(struct student *)malloc(LEN);
  p->next->next=NULL;
  printf("请输入你要插入的学生数据\n"); 
  printf("学号   姓名   for成绩   c语言成绩   英语成绩\n"); 
  scanf("%d%s%lf%lf%lf",&p->next->num,&p->next->name,&p->next->foxscore,&p->next->cscore,&p->next->englishscore);
}

 

 

void AverData(struct student *F)//平均成绩
{
    struct student *p;
 p=F;
 double sumfox=0,sumc=0,sumenglish=0;
 int count=0;
 while(p!=NULL)
 { 
  sumfox+=p->foxscore;
  sumc+=p->cscore;
  sumenglish+=p->englishscore;
  p=p->next;
 count++;
 }
printf("这些同学的平均成绩如下:\n");
printf("c语言成绩:\n");
printf("%.3lf\n",sumc/count);
printf("fox成绩:\n");
printf("%.3lf\n",sumfox/count);
printf("英语成绩:\n");
printf("%.3lf\n",sumenglish/count);
}

posted on 2013-02-05 14:51  @ 小浩  阅读(524)  评论(0编辑  收藏  举报