C学生信息管理

该博客展示了一个用C语言实现的计算机系学生成绩管理系统。代码包含结构体定义、链表建立,以及添加、查找、删除、查看、修改学生信息和修改系统密码等功能,通过菜单选择操作,还设置了密码验证机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                           

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
char password[]="123456" ;
char getpassword[30];

typedef struct stu{
    char num[6];  /* 序号。学号 */
    char name[8]; /* 名字 */
    char  sex[4];      /*1表示男生,0表示女生*/
    char class[8];/*班级*/
    int en;       /* 英语 */
    int ch;       /* 语文 */
    int sx;    /* 数学 */

    struct stu *next;
}STU;


STU *jianli()/*建立链表*/
{ STU *p;
  p=(STU * )malloc(sizeof(STU)); /*建立头指针*/


  p->next=NULL;
  if(p==NULL)
     { printf("空间不够"); exit(0);}

  return p;
  }
print()
{ char a;
  printf("/n*********计算机系学生成绩管理系统*********/n");
  printf("/n 1 :          添     加                 **/n");
  printf("/n 2 :          查     找                 **/n");
  printf("/n 3 :          删     除                 **/n");
  printf("/n 4 :          查     看                 **/n");
  printf("/n 5 :          修     改                 **/n");
  printf("/n 6 :          修改系统密码              **/n");
  printf("/n 7 :          退出                      **/n");
  printf("/n******************************************/n");
  /*scanf("%c",&i);*/
  printf("/n请输入你的选择:");
  return;
  }


 add ( STU * head)  /*添加*/
 { STU *p,*p1,*p2;
   char flag='y';

 
   printf("请输入您的密码:");
   getchar();
  gets(getpassword);
  while(strcmp(password,getpassword)!=0){
       printf("/n密码错,请重新输入") ;
       gets(getpassword);
       }

   while(flag=='y')
   {
    p=(STU *)malloc(sizeof (STU));
    if(p==NULL)
       { printf("空间不够"); exit(0);}
     printf("/n请输入学号:");
        scanf("%s",p->num);
     p2=head;
     p1=head->next;
     while(p1!=NULL&&strcmp(p1->num,p->num)!=0)
           { p2=p1;p1=p1->next;}
       if(p1==NULL)
            {p2=head;p1=head->next; }
         else { printf("你输入的学号已经存在");return ;}
     printf("/n请输入姓名:");
        scanf("%s",p->name);
            printf("/n请输入班级:");
        scanf("%s",p->class);
          printf("/n请输入性别");
        scanf("%s",p->sex);
     printf("/n请按格式按顺序输入 英语 语文 数学的成绩:");
        scanf("%d %d %d",&p->en,&p->ch,&p->sx);
     while(p1!=NULL&&strcmp(p1->num,p->num)<0)
          { p2=p1; p1=p1->next;}
     p->next=p1 ;p2->next=p;  /*head空则直接加在后边,否则按大小插入*/
     printf("输入成功/n");
     printf("/n学号%s 姓名 %s 英语 %d  语文 %d 数学 %d/n",p->num,p->name,p->en,p->ch,p->sx);
     printf("/n/n如果继续添加请按'Y' 返回主菜单请按'N'/n");
     scanf(" %c",&flag);
     }

   return;
   }
 seatch(STU *head)         /*查找函数*/
 { char *c;
   char flag='y';
   STU *p,*p1;
   while(flag=='y')
     {
       printf("/n请输入你要查询学生的学号:");
       scanf(" %s",c);
       p=head->next;
      while(p!=NULL&&strcmp(p->num,c)!=0)
        {  p1=p; p=p->next;}
      if(p==NULL)
        printf("没有找到");
         else if(strcmp(p->num,c)==0)
        printf("学号%s 姓名 %s 英语 %d  语文 %d 数学 %d",p->num,p->name,p->en,p->ch,p->sx);
    printf("/n/n如果继续查询请按'Y'  回到主菜单请按'N'/n");
    scanf(" %c",&flag);
    }
     return ;
 }
 del(STU *head)    /*删除函数*/
 {
   char *c;
   STU *p,*p1;
   char flag='y';

 printf("请输入您的密码:");
   getchar();
  gets(getpassword);
  while(strcmp(password,getpassword)!=0){
       printf("/n密码错,请重新输入") ;
       gets(getpassword);
       }


   while(flag=='y')
   {
     printf("/n请输入你要删除学生的学号:");
     scanf("%s",c);
     p=head;
     while(p!=NULL&&strcmp(p->num,c)!=0)
       {  p1=p; p=p->next;}
     if(p==NULL)
        printf("/n没有找到/n");
          else if(strcmp(p->num,c)==0)
             p1->next=p->next; free(p);
       printf("/n/n继续删除请按'Y'  返回主菜单请按'N'/n");
       scanf(" %c",&flag);
       }
   return;

 }
 chakan(STU *head)   /*查看函数*/
 {
   STU *p;
   p=head->next;
   if(p==NULL)
      { printf("/n什么都没有/n"); getch(); }
           else   while(p!=NULL)
                 { printf("/n学号:%s    班级:%s   姓名:%s    性别:%s     英语:%d    语文:%d    数学:%d/n",p->num,p->class,p->name,p->sex,p->en,p->ch,p->sx);
                      p=p->next;getch();}
                      printf("/n查看完毕");
                      getch();
                       clrscr();
    return ;

 }

 xiugai(STU *head)    /*修改函数*/
 {
   char *c;
   char flag='y';
   STU *p,*p1;

   while(flag=='y')
     {
       printf("/n请输入你要修改的学生的学号:");
       scanf(" %s",c);
       p=head->next;
      while(p!=NULL&&strcmp(p->num,c)!=0)
        {  p1=p; p=p->next;}
      if(p==NULL)
        printf("没有找到");
         else if(strcmp(p->num,c)==0)
         printf("学号%s 姓名 %s 英语 %d  语文 %d 数学 %d/n",p->num,p->name,p->en,p->ch,p->sx);
         printf("/n请输入要修改后的姓名:");
           scanf("%s",p->name);
         printf("/n请按格式按顺序输入要修改后的 英语 语文 数学的成绩:");
            scanf("%d %d %d",&p->en,&p->ch,&p->sx);
          printf("/n修改完成 学号%s 姓名 %s 英语 %d  语文 %d 数学 %d/n",p->num,p->name,p->en,p->ch,p->sx);
    printf("/n/n如果继续修改请按'Y'  回到主菜单请按'N'/n");
    scanf(" %c",&flag);
    }
     return ;
 }

modify(){
 printf("/n请输入您要修改的密码:")  ;
 scanf("%s",getpassword);
 strcpy(password,getpassword);
 printf("/n密码修改成功,按任意键继续!") ;getch();
 return;
 }

main()
{ char a;
  STU *head;


  head=jianli();

  print();
  while(scanf(" %c",&a))
  switch (a)
  { case '1' : add(head); print();break;
    case '2' : seatch(head);print();break;
    case '3' : del(head);print(); break;
    case '4' : chakan(head);print(); break;
    case '5' : xiugai(head); print();break;
    case '6' : modify();print();break;
    case '7' : exit(0);
    default :  printf("输入错误,从新输入");break;
    }


  }
 
  
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值