假期学习C语言,用C语言写的学生管理系统,仅作个人记录,方便以后查找
StudentManageSystem.h
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<string.h>
typedef struct {
char name[32];
char sex[8];
int age;
int score;
}Student;
typedef struct _node{
Student stu;
struct _node *next;
}Node;
void WelcomeInterface();
void Input(Node **input);
void PrintStu(Node **input);
void SaveStu(Node **input);
void ReadStu(Node **input);
void CountStu(Node **input);
void SearchStu(Node **input);
void DeleteStu(Node **input);
StudentManageSystem.c
#include"StudentManageSystem.h"
int main()
{
char ch;
Node *head=NULL;
while(1)
{
WelcomeInterface();
ch=getch();
switch(ch)
{
case '1':InputStu(&head);break;
case '2':PrintStu(&head);break;
case '3':SaveStu(&head);break;
case '4':ReadStu(&head);break;
case '5':CountStu(&head);break;
case '6':SearchStu(&head);break;
case '7':CorrectStu(&head);break;
case '8':DeleteStu(&head);break;
case '0':goto end;
default :
{
printf("输入有误,请重新输入\n");
system("pause");
system("cls");
}
}
}
end:
return 0;
}
Function.c
#include"StudentManageSystem.h"
void WelcomeInterface()
{
printf("*************************************************\n");
printf("*\t 欢迎使用学生管理系统\t\t*\n");
printf("*************************************************\n");
printf("*\t\t 功能列表\t\t\t*\n");
printf("*************************************************\n");
printf("*\t\t1.录入学生信息\t\t\t*\n");
printf("*\t\t2.打印学生信息\t\t\t*\n");
printf("*\t\t3.保存学生信息\t\t\t*\n");
printf("*\t\t4.读取学生信息\t\t\t*\n");
printf("*\t\t5.统计学生信息\t\t\t*\n");
printf("*\t\t6.查找学生信息\t\t\t*\n");
printf("*\t\t7.修改学生信息\t\t\t*\n");
printf("*\t\t8.删除学生信息\t\t\t*\n");
printf("*\t\t0.退出系统\t\t\t*\n");
printf("*************************************************\n");
}
void InputStu(Node **input)
{
Node *nonce,*tail;
nonce=(Node*)malloc(sizeof(Node));
printf("请输入学生姓名:");
scanf("%s",nonce->stu.name);
printf("请输入学生性别:");
scanf("%s",nonce->stu.sex);
printf("请输入学生的年龄:");
scanf("%d",&nonce->stu.age);
printf("请输入学生的成绩:");
scanf("%d",&nonce->stu.score);
if(*input==NULL)
{
*input=nonce;
nonce->next=NULL;
}
else
{
tail=*input;
while(tail->next!=NULL)
{
tail=tail->next;
}
tail->next=nonce;
nonce->next=NULL;
}
printf("学生信息录入成功\n");
system("pause");
system("cls");
}
void PrintStu(Node **input)
{
system("cls");
printf("*****************************************************************\n");
printf("*\t\t\t 学生信息表\t\t\t\t*\n");
printf("*****************************************************************\n");
printf("*\t姓名\t*\t性别\t*\t年龄\t*\t成绩\t*\n");
printf("*****************************************************************\n");
Node *nonce;
for(nonce=*input;nonce;nonce=nonce->next)
{
printf("*\t%s\t*\t%s\t*\t%d\t*\t%d\t*\n",nonce->stu.name,nonce->stu.sex,nonce->stu.age,nonce->stu.score);
}
printf("*****************************************************************\n");
system("pause");
system("cls");
}
void SaveStu(Node **input)
{
Node *nonce;
FILE *fp=fopen("d:\\StudentManageSystem.txt","w+");
for(nonce=*input;nonce;nonce=nonce->next)
{
fwrite(&nonce->stu,1,sizeof(Student),fp);
}
fclose(fp);
printf("保存信息成功\n");
system("pause");
system("cls");
}
void ReadStu(Node **input)
{
Node *nonce,*tail;
FILE *fp=fopen("d:\\StudentManageSystem.txt","r");
Student stu;
while(fread(&stu,1,sizeof(Student),fp))
{
nonce=(Node*)malloc(sizeof(Node));
memcpy(nonce,&stu,sizeof(Student));
if(*input==NULL)
{
*input=nonce;
nonce->next=NULL;
}
else
{
tail=*input;
while(tail->next!=NULL)
{
tail=tail->next;
}
tail->next=nonce;
nonce->next=NULL;
}
}
fclose(fp);
printf("读取信息成功\n");
system("pause");
system("cls");
}
void CountStu(Node **input)
{
int count=0;
Node *nonce;
for(nonce=*input;nonce;nonce=nonce->next)
{
count++;
}
printf("学生人数为%d\n",count);
system("pause");
system("cls");
}
void SearchStu(Node **input)
{
Node *nonce;
char name[32];
printf("请输入学生姓名:");
scanf("%s",name);
system("cls");
printf("*****************************************************************\n");
printf("*\t\t\t 学生信息表\t\t\t\t*\n");
printf("*****************************************************************\n");
printf("*\t姓名\t*\t性别\t*\t年龄\t*\t成绩\t*\n");
printf("*****************************************************************\n");
for(nonce=*input;nonce;nonce=nonce->next)
{
if(strcmp(nonce->stu.name,name)==0)
printf("*\t%s\t*\t%s\t*\t%d\t*\t%d\t*\n",nonce->stu.name,nonce->stu.sex,nonce->stu.age,nonce->stu.score);
}
printf("*****************************************************************\n");
system("pause");
system("cls");
}
void CorrectStu(Node **input)
{
Node *nonce;
char name[32];
printf("请输入学生姓名:");
scanf("%s",name);
system("cls");
printf("*****************************************************************\n");
printf("*\t\t\t 学生信息表\t\t\t\t*\n");
printf("*****************************************************************\n");
printf("*\t姓名\t*\t性别\t*\t年龄\t*\t成绩\t*\n");
printf("*****************************************************************\n");
for(nonce=*input;nonce;nonce=nonce->next)
{
if(strcmp(nonce->stu.name,name)==0)
{
printf("*\t%s\t*\t%s\t*\t%d\t*\t%d\t*\n",nonce->stu.name,nonce->stu.sex,nonce->stu.age,nonce->stu.score);
break;
}
}
printf("*****************************************************************\n");
printf("请输入修改后的学生信息:");
scanf("%s %s %d %d",nonce->stu.name,nonce->stu.sex,&nonce->stu.age,&nonce->stu.score);
printf("修改成功\n");
system("pause");
system("cls");
}
void DeleteStu(Node **input)
{
Node *nonce;
char name[32];
printf("请输入被删除学生姓名:");
scanf("%s",name);
system("cls");
printf("*****************************************************************\n");
printf("*\t\t\t 学生信息表\t\t\t\t*\n");
printf("*****************************************************************\n");
printf("*\t姓名\t*\t性别\t*\t年龄\t*\t成绩\t*\n");
printf("*****************************************************************\n");
Node *front;
for(front=NULL,nonce=*input;nonce;front=nonce,nonce=nonce->next)
{
if(strcmp(nonce->stu.name,name)==0)
{
printf("*\t%s\t*\t%s\t*\t%d\t*\t%d\t*\n",nonce->stu.name,nonce->stu.sex,nonce->stu.age,nonce->stu.score);
if(front==NULL)
*input=nonce->next;
else
front->next=nonce->next;
break;
}
}
printf("*****************************************************************\n");
free(nonce);
printf("所示学生信息删除成功\n");
system("pause");
system("cls");
}