c语言课程设计,学生信息管理系统

C语言课程设计(上)

                                             学生信息管理系统

题目:
新生入学,需要管理学生信息,要求如下:

  1. 能够通过键盘进行输入学生的信息,比如:学生姓名,学号,性别,班级,专业,入学成绩;
  2. 能够通过键盘输入要录入的学生的个数;
  3. 能够增加学生;
  4. 能够删除某一个或多个学生的所有信息;
  5. 能够进行查找某个学生的所有信息;
  6. 能够进行修改学生的信息;
  7. 能够将学生的信息保存到文件中,并且可以将文件中的学生信息读出;
  8. 能够实现注册账号,密码,并且能够实现登录…
    代码如下;
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<string.h> 
#include<conio.h>
#include<time.h>
struct student//先定义一个结构体数组 
{
 int num; 
 char name[20]; 
 int score;
 int banji;
 char xibie[20]; 
 struct student *next;//一个结构体指针 
};
void insert(struct student *head)//输入学生信息 
{
 FILE *fp;//将学生信息直接写到文件中
 int n;
 fp=fopen("D:\\wenjian.txt","w");
 struct student *l=head;
 struct student *p=head->next;//使用链表## 标题
 printf("请输入你要输入的学生的个数:");
 scanf("%d",&n);
 printf("\n");
 for(int i=1;i<=n;i++)
 {
  {
  struct student *p=(struct student *)malloc(sizeof(struct student));
  printf("请输入该生的学号:");
  scanf("%d",&p->num);
     printf("请输入该生的姓名:");
  scanf("%s",p->name);
  printf("请输入该生的成绩:");
  scanf("%d",&p->score);
  printf("请输入该生的班级:"); 
  scanf("%d",&p->banji);
  printf("请输入该生的系别:");
  scanf("%s",p->xibie);
  printf("\n\n");   
  p->next=NULL;
  l->next=p;
  l=l->next;
  }
  p=head->next;//返回头 
  {
   fprintf(fp,"%d\t%s\t%d\t%d\t%s\t",l->num,l->name,l->score,l->banji,l->xibie);
       fputs("\n",fp);
  }  
 }
 fclose(fp);
 system("cls");
 printf("     输入完成!\n\n");
}
void add(struct student *head)//添加学生信息 
{
 FILE *fp;
 int n;
 fp=fopen("D:\\wenjian.txt","a+");
 struct student *l=head;
 while(l->next)
 l=l->next;
 printf("请输入你要添加的学生的个数:");
 scanf("%d",&n);
 printf("\n");
  for(int i=1;i<=n;i++)
  {
     struct student *p=(struct student *)malloc(sizeof(struct student));
     printf("请输入该生的学号:");
     scanf("%d",&p->num);
     printf("请输入该生的姓名:");
     scanf("%s",p->name);
     printf("请输入该生的成绩:");
     scanf("%d",&p->score);
     printf("请输入该生的班级:"); 
     scanf("%d",&p->banji);
     printf("请输入该生的系别:");
     scanf("%s",p->xibie);
     printf("\n\n");   
     p->next=NULL;
     l->next=p;
     l=l->next;
  }
 l=head->next;   
 fclose(fp);
 fp=fopen("D:\\wenjian.txt","w");
 
 while(l!=NULL)
 {
  fprintf(fp,"%d\t%s\t%d\t%d\t%s\t",l->num,l->name,l->score,l->banji,l->xibie);
   fputs("\n",fp);
     l=l->next;
    }
    fclose(fp);
 system("cls");
 printf("     添加完成!\n\n");
}
void daoru(struct student *head)//将文件导入链表 
{
 struct student *p=head;
 FILE *fp;
 int n;
 if((fp=fopen("D:\\wenjian.txt","r"))==NULL)
  {
   printf("文件打开失败!\n");
   exit(0);
 }
  else
 {
   for(n=0;!feof(fp);n++)
     {
      struct student *q=(struct student *)malloc(sizeof(struct student));
   fscanf(fp,"%d\t%s\t%d\t%d\t%s\n",&q->num,q->name,&q->score,&q->banji,q->xibie);
   q->next=NULL;
   p->next=q;
   p=p->next;
     }
  }
 fclose(fp);
 system("cls");
}
void xianshi(struct student *head)//显示学生信息 
{
 struct student *p=head;
 printf("************************************************************************************************************\n");
 printf("************************************************************************************************************\n");
 printf("************************    学号    ***    姓名       ***    成绩    ***    班级   ***   系别   ************\n");
 while(p->next!=NULL)
 {
  printf("************************      %d     ***    %s     ***     %d    ***      %d    ***   %s   ************\n",p->next->num,p->next->name,p->next->score,p->next->banji,p->next->xibie);
  p=p->next;
 }
 printf("************************************************************************************************************\n");
 printf("************************************************************************************************************\n\n\n"); 
}
void delet_num(struct student *head)//通过学号进行删除 
{
 struct student *p=head;
 FILE *fp;
 int ch;
 if((fp=fopen("D:\\wenjian.txt","r"))==NULL)
  {
   printf("文件打开失败!\n");
   exit(0);
 }
 
 else
 { 
 int num2;
 int n=0;
 printf("请输入你要删除的学号:");
 scanf("%d",&num2);
  while(p->next!=NULL)
  {
    if(p->next->num==num2)
       {
           struct student *q;
               q=p->next;
               p->next=q->next;
               free(q);
               printf("删除成功!\n\n");
               n++;
       }
       p=p->next;        
   } 
   if(n==0)
    {
     printf("没有找到该学号!\n\n");
    }  
 }
 fclose(fp);
 fp=fopen("D:\\wenjian.txt","w");
 p=head->next;
 while(p!=NULL)
 {
  fprintf(fp,"%d\t%s\t%d\t%d\t%s\t",p->num,p->name,p->score,p->banji,p->xibie);
   fputs("\n",fp);
     p=p->next;
    }
    fclose(fp);
 printf("\n");
}

本代码未写完,请看下一篇…
谢谢!!!

猜你喜欢

转载自blog.csdn.net/weixin_43566977/article/details/88257079