最最小白用C语言实现学生信息管理系统

                                               用C语言实现学生信息管理系统
 大二上学期期末的实训任务,之前都没用过C语言,一直学的C++(也没学好),这次实训收获颇多吧,最后实现出来还是挺开心哒!项目过程中也是不断的百度,修改部分的代码是学习一位博主的(emm关掉网页找不到了),项目所用代码也是最最小白的。
 这次项目老师为了让我们更好的体验文件的拆分,所以基本上一个功能就编译了一个.c文件,每个也对应一个.h文件,将函数的声明放在.h文件中,可以相互调用(注意两个文件不能互相包含头文件)。
 第一次写博客,编辑不太会阿!为啥有的代码会变黄色勒。。。。。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
首先是登陆页面,分为教师端登陆和学生登陆。
login.c
#include “login.h”
void Login()
{
while(1)
{
printf("=欢迎来到学生信息系统===\n");
printf(" 1.学生端登陆 \n");
printf(" 2.教师端登陆 \n");
printf(" 3.退出程序 \n");
printf("===============================\n");
printf(“请输入选择的登陆端:”);
int l;
scanf("%d",&l);
switch(l)
{
case 1:
password_S();
break;
case 2:
password_T();
break;
case 3:
exit(0);
default:
printf(“请输入有效数字1或2”);
}
}

}
void Student()
{
while(1)
{
printf("=欢迎来到学生端登陆=\n");
printf(" 1.学生基本信息查询 \n");
printf(" 2.学生成绩查询 \n");
printf(" 3.退出程序 \n");
printf("\n");
printf(“请输入选择:”);
int s;
scanf("%d",&s);
switch(s)
{
case 1:
find_information();
break;
case 2:
find_score();
break;
case 3:
exit(0);
default:
printf(“请输入有效数字1或2”);
}
}
}
void Teacher()
{
while(1)
{
printf("=欢迎来到教师端登陆=\n");
printf(" 1.学生信息录入 \n");
printf(" 2.学生信息修改 \n");
printf(" 3.学生成绩排序 \n");
printf(" 4.显示全部学生信息 \n");
printf(" 5.退出程序 \n");
printf("
\n");
printf(“请输入选择:”);
int t;
getchar();
scanf("%d",&t);
switch(t)
{
case 1:
Input();
break;
case 2:
Modify();
break;
case 3:
sort();
break;
case 4:
display();
break;
case 5:
exit(0);
default:
printf(“请输入有效数字1或2”);
}
}

}

int main()
{
Login();
return 0;
}
login.h
#ifndef _LOGIN_Hlogin.h
#define _LOGIN_H
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include “input.h”
#include “modify.h”
#include “sort.h”
#include “find.h”
#include “display.h”
#include “password.h”
void Login();
void Student();
void Teacher();
#endif

还设置了一个简单的密码登陆的功能
password.c
#include “password.h”
void password_T()
{
while(1)
{
char account[20];
char password[8];
char stand_pass[8]=“asdf”;
int flag;
printf("=====老师您好,欢迎来到登陆界面\n");
printf(“请输入账户:”);
scanf("%s",account);
printf(“请输入密码:”);
scanf("%s",password);
flag=strcmp(stand_pass,password);
if(flag == 0)
{
printf(“密码输入正确!\n”);
Teacher();
break;
}
if(flag == 1)
{
printf(“密码输入错误!”);
//break;
continue;
}
}
}
void password_S()
{
while(1)
{
char account[20];
char password[8];
char stand_pass[8]=“qwer”;
int flag;
printf("===同学你好,欢迎来到登陆界面\n");
printf(“请输入账户:”);
scanf("%s",account);
printf(“请输入密码:”);
scanf("%s",password);
flag=strcmp(stand_pass,password);
if(flag == 0)
{
printf(“密码输入正确!\n”);
Student();
break;
}
if(flag == 1)
{
printf(“密码输入错误!”);
break;
}
}
}
password.h
#ifndef _PASSWORD_H
#define _PASSWORD_H
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void Student();
void Teacher();
void password_T();
void password_S();
#endif
先来教师端登陆后的录入功能:
input.c
#include “input.h”
static int n=0;
void Input()
{
FILE *fp;
fp=fopen(“学生信息.txt”,“a+”);
if(fp
NULL)
{
printf(“打开文件失败!\n”);
}
printf(“欢迎进入学生信息录入系统”);
printf("\n请输入要录入的学生信息数:");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
printf("\n请输入第%d个学生的信息:\n",i+1);
printf("\n学号:");
scanf("%d",&stu[i].id);
printf("\n姓名:");
scanf("%s",stu[i].name);
printf("\n性别:");
scanf("%s",stu[i].sex);
printf("\n手机号:");
scanf("%s",stu[i].phonenum);
printf("\n数学:");
scanf("%d",&stu[i].Math);
printf("\n英语:");
scanf("%d",&stu[i].English);
printf("\n语文:");
scanf("%d",&stu[i].Chinese);
fprintf(fp,"%d\t%s\t%s\t%s\t%d\t%d\t%d\n\n",stu[i].id,stu[i].name,stu[i].sex,stu[i].phonenum,stu[i].Math,stu[i].English,stu[i].Chinese);
}
fclose(fp);
}

input.h
#ifndef _INPUT_H
#define _INPUT_H
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct student
{
int id;
char name[20];
char sex[5];
char phonenum[15];
int Math;
int English;
int Chinese;
struct student*next;
}stu[100];
void Input();
#endif

重头戏修改功能:修改/添加/删除
modify.c
#include “modify.h”
void modify()
{
display();
struct student *p,*phead,*m;
phead=save();
int n;
int flag=0;
printf(“修改学生信息=\n");
printf(“请输入要修改的学生学号:”);
scanf("%d",&n);
p=phead;
for(m = phead;m!=NULL; m=m->next)
{
if(m->id == n)
{
printf("\t\t已经查到被改学生信息\n");
flag=0;
break;
}
else
flag=1;
}
if(flag
1)
{
printf(”\t\t抱歉没有查到信息\n");
}
if(flag0)
{
int c;
printf("=请选择要修改的内容\n");
printf(" 1.手机号 \n");
printf(" 2.成绩 \n");
printf(“请输入选择:”);
scanf("%d",&c);
if(c
1)
{
printf(“请输入该学生的新手机号”);
scanf("%s",stu->phonenum);
strcpy(m->phonenum,stu->phonenum);
}
if(c==2)
{
printf(“请输入该学生修改后的成绩”);
scanf("%d %d %d",&stu->Math,&stu->English,&stu->Chinese);
m->Math=stu->Math;m->English=stu->English;m->Chinese=stu->Chinese;
}
save_ru(phead);
}

int c;
printf("是否退出:(1/0)");
scanf("%d",&c);
if(c==1) Modify();
else return;

}

void add()
{
struct student *phead,*stu;
int c;
phead=save();
printf("添加学生信息=\n");
printf(“请输入学生的信息:\n”);
printf("\n学号:");
scanf("%d",&stu->id);
printf("\n姓名:");
scanf("%s",stu->name);
printf("\n性别:");
scanf("%s",stu->sex);
printf("\n手机号:");
scanf("%s",stu->phonenum);
printf("\n数学:");
scanf("%d",&stu->Math);
printf("\n英语:");
scanf("%d",&stu->English);
printf("\n语文:");
scanf("%d",&stu->Chinese);
stu->next=phead->next;
phead->next=stu;
save_ru(phead);
printf("\t\t学生信息已存入\n");
printf(“是否退出:(1/0)”);
scanf("%d",&c);
if(c
1) Modify();
else return;
}

void delete_()
{
display();
struct student *p,*q,*phead,*t,*m;
phead=save();
int n;int c;
int flag=0;
printf(“删除学生信息=\n");
printf(“请输入要删除的学生学号:”);
scanf("%d",&n);
p=phead;
for(m = phead;m!=NULL; m=m->next)
{
if(m->id == n)
{
printf("\t\t已经查到学生信息\n");
flag=0;
break;
}
else
flag=1;
}
if(flag
1)
{
printf(”\t\t抱歉没有查到信息\n");
}
if(flag0)
{
if(phead->id
n)
{
phead=phead->next;
}
else
{
while(p->id!=n && p->next!=NULL)
{
t=p;
p=p->next;
}
if(p->idn)
{
t->next=p->next;
}
}
printf("\t\t该同学信息已经被删除\n");
}
save_ru(phead);
printf(“是否退出:(1/0)”);
scanf("%d",&c);
if(c
1) Modify();
else delete_();
}

void Modify()
{
while(1)
{
printf("=学生信息修改系统\n");
printf(" 1.修改信息 \n");
printf(" 2.添加信息 \n");
printf(" 3.删除信息 \n");
printf(" 4.返回主页 \n");
printf(“请输入选择:”);
int m;
scanf("%d",&m);
switch(m)
{
case 1:
modify();
break;
case 2:
add();
case 3:
delete_();
break;
case 4:
Teacher();
break;
}

}
}
modify.h
#ifndef _MODIFY_H
#define MODIFY_H
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include “input.h”
#include “save.h”
#include “display.h”
void add();
void modify();
void delete
();
void Modify();
void Teacher();

#endif

修改,录入函数里都需要调用save.c(保存写入和保存)
save.c
#include “save.h”
void save_ru(struct student h)
{
struct student stu;
FILE
fp;
if((fp=fopen(“学生信息.txt”,“wt”))==NULL)
{
printf(“文件出错,按任意建退出!”);
getchar();
exit(1);
}
for(stu=h->next;stu!=NULL;stu=stu->next)
{
fprintf(fp,"%d\t%s\t%s\t%s\t%d\t%d\t%d\n\n",stu->id,stu->name,stu->sex,stu->phonenum,stu->Math,stu->English,stu->Chinese);
}
fclose(fp);
}
struct student
save()
{
struct studentahead,r,stu;
FILE
f1;
f1=fopen(“学生信息.txt”,“rt”);
ahead=(struct student
)malloc(sizeof(struct student));//让链表头指针指向这块内存的首地址
ahead->next=NULL;
r=ahead;
while(!feof(f1))
{
stu=(struct student
)malloc(sizeof(struct student));
fscanf(f1,"%d %s %s %s %d %d %d\n",&stu->id,stu->name,stu->sex,stu->phonenum,&stu->Math,&stu->English,&stu->Chinese);
r->next=stu;
r=stu;
}
r->next=NULL;
fclose(f1);
return ahead;
}
save.h
#ifndef _SAVE_H
#define _SAVE_H
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include “input.h”
void save_ru(struct student h);
struct student
save();
#endif

排序功能实现
sort.c
#include “sort.h”
void sort()
{
int n;
printf(“学生信息排序=\n”);
printf(" 1.按照数学成绩顺序 \n");
printf(" 2.按照语文成绩排序 \n");
printf(" 3.按照英语成绩排序 \n");
printf(" 4.按照学号排序 \n");
printf(" 5.返回主页 \n");
printf(“请选择:”);
scanf("%d",&n);
system(“CLS”);
switch(n)
{
case 1:
sort_math();
break;
case 2:
sort_chinese();
break;
case 3:
sort_english();
break;
case 4:
sort_id();
break;
case 5:
Teacher();
break;
}

}
void sort_math()
{
struct student *p,*q,*head,*t;
head=save();
int tid;
char tname[6];
int tyw;
int tsx;
int tyy;
for(p=head->next;p->next!=NULL;p=p->next)
{
for(q=p->next;q!=NULL;q=q->next)
{
if(p->MathMath)
{
tid=p->id;
p->id=q->id;
q->id=tid;
strcpy(tname,p->name);
strcpy(p->name,q->name);
strcpy(q->name,tname);
tyw=p->Chinese;
p->Chinese=q->Chinese;
q->Chinese=tyw;
tsx=p->Math;
p->Math=q->Math;
q->Math=tsx;
tyy=p->English;
p->English=q->English;
q->English=tyy;
}
}
}
printf("\t%s\t%s\t%s\t%s\t%s\n",“学号”,“姓名”,“语文”,“数学”,“英语”);
printf("\t-----------------------------------------------\n");
for(t=head->next;t!=NULL;t=t->next)
{
printf("\t%d\t%s\t%d\t%d\t%d\n\n",t->id,t->name,t->Chinese,t->Math,t->English);
}
int c;
printf(“是否退出:(1/0)”);
scanf("%d",&c);
if(c0) sort();
else Teacher();
}
void sort_chinese()
{
struct student *p,*q,*head,*t;
head=save();
int tid;
char tname[6];
int tyw;int tsx;int tyy;
for(p=head->next;p->next!=NULL;p=p->next)
{
for(q=p->next;q!=NULL;q=q->next)
{
if(p->ChineseChinese)
{
tid=p->id;
p->id=q->id;
q->id=tid;
strcpy(tname,p->name);
strcpy(p->name,q->name);
strcpy(q->name,tname);
tyw=p->Chinese;
p->Chinese=q->Chinese;
q->Chinese=tyw;
tsx=p->Math;
p->Math=q->Math;
q->Math=tsx;
tyy=p->English;
p->English=q->English;
q->English=tyy;
}
}
}
printf("\t%s\t%s\t%s\t%s\t%s\n",“学号”,“姓名”,“语文”,“数学”,“英语”);
printf("\t-----------------------------------------------\n");
for(t=head->next;t!=NULL;t=t->next)
{
printf("\t%d\t%s\t%d\t%d\t%d\n\n",t->id,t->name,t->Chinese,t->Math,t->English);
}
int c;
printf(“是否退出:(1/0)”);
scanf("%d",&c);
if(c
0) sort();
else Teacher();
}
void sort_english()
{
struct student *p,*q,*head,*t;
head=save();
int tid;
char tname[6];
int tyw;int tsx;int tyy;
for(p=head->next;p->next!=NULL;p=p->next)
{
for(q=p->next;q!=NULL;q=q->next)
{
if(p->EnglishEnglish)
{
tid=p->id;
p->id=q->id;
q->id=tid;
strcpy(tname,p->name);
strcpy(p->name,q->name);
strcpy(q->name,tname);
tyw=p->Chinese;
p->Chinese=q->Chinese;
q->Chinese=tyw;
tsx=p->Math;
p->Math=q->Math;
q->Math=tsx;
tyy=p->English;
p->English=q->English;
q->English=tyy;
}
}
}
printf("\t%s\t%s\t%s\t%s\t%s\n",“学号”,“姓名”,“语文”,“数学”,“英语”);
printf("\t-----------------------------------------------\n");
for(t=head->next;t!=NULL;t=t->next)
{
printf("\t%d\t%s\t%d\t%d\t%d\n\n",t->id,t->name,t->Chinese,t->Math,t->English);
}
int c;
printf(“是否退出:(1/0)”);
scanf("%d",&c);
if(c0) sort();
else Teacher();
}
void sort_id()
{
struct student *p,*q,*head,*t;
head=save();
int tid;
char tname[6];
int tyw;int tsx;int tyy;
for(p=head->next;p->next!=NULL;p=p->next)
{
for(q=p->next;q!=NULL;q=q->next)
{
if(p->id>q->id)
{
tid=p->id;
p->id=q->id;
q->id=tid;
strcpy(tname,p->name);
strcpy(p->name,q->name);
strcpy(q->name,tname);
tyw=p->Chinese;
p->Chinese=q->Chinese;
q->Chinese=tyw;
tsx=p->Math;
p->Math=q->Math;
q->Math=tsx;
tyy=p->English;
p->English=q->English;
q->English=tyy;
}
}
}
printf("\t%s\t%s\t%s\t%s\t%s\n",“学号”,“姓名”,“语文”,“数学”,“英语”);
printf("\t-----------------------------------------------\n");
for(t=head->next;t!=NULL;t=t->next)
{
printf("\t%d\t%s\t%d\t%d\t%d\n\n",t->id,t->name,t->Chinese,t->Math,t->English);
}
int c;
printf(“是否退出:(1/0)”);
scanf("%d",&c);
if(c
0) sort();
else Teacher();
}
sort.h
#ifndef _SORT_H
#define _SORT_H
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include “input.h”
#include “save.h”
void sort();
void sort_math();
void sort_english();
void sort_chinese();
void sort_id();
void Teacher();
#endif

查看全部信息:
display.c
#include “display.h”
void display()
{
struct student *t,*head;
head=save();
printf("\t%s\t%s\t%s\t%s\t\t%s\t%s\t%s\n",“学号”,“姓名”,“性别”,“手机号”,“语文”,“数学”,“英语”);
printf("\t-----------------------------------------------------------\n");
for(t=head->next;t!=NULL;t=t->next)
{
printf("\t%d\t%s\t%s\t%s\t%d\t%d\t%d\n\n",t->id,t->name,t->sex,t->phonenum,t->Chinese,t->Math,t->English);
}
}
display.h
#ifndef _DISPLAY_H
#define _DIAPLAY_H
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include “input.h”
#include “save.h”
void display();
#endif

学生端主要是查询功能:
find.c
#include “find.h”
void find()
{
system(“CLS”);
int c;
system(“CLS”);
printf(“学生基本信息查询=\n”);
printf(" 1.按照学号查找 \n");
printf(" 2.按照姓名查找 \n");
printf(" 3.返回主页 \n");
printf(“请选择:”);
scanf("%d",&c);
system(“CLS”);
switch©
{
case 1:
find_information();
break;
case 2:
find_score();
break;
case 3:
Login();
break;
}
}
void find_information()
{
struct student *p,*phead,*m;
phead=save();
int n;
int flag=0;
printf(“学生信息=\n");
printf(“请输入要查找的学生学号:”);
scanf("%d",&n);
p=phead;
for(m = phead;m!=NULL; m=m->next)
{
if(m->id == n)
{
printf(“已经查到学生信息\n”);
printf(“学号\t姓名\t性别\t手机号\n”);
printf("---------------------------------\n");
printf("%d\t%s\t%s\t%s\t\n\n",m->id,m->name,m->sex,m->phonenum);
flag=0;
break;
}
else
flag=1;
}
if(flag
1)
{
printf(”\t\t系统中没有这个人!\n");
}
}
void find_score()
{
struct student *p,*phead,*m;
phead=save();
int n;
int flag=0;
printf(“学生信息=\n");
printf(“请输入要查找的学生学号:”);
scanf("%d",&n);
p=phead;
for(m = phead;m!=NULL; m=m->next)
{
if(m->id == n)
{
printf("\n\t\t已经查到学生信息\n");
printf(“学号\t姓名\t数学\t语文\t英语\n”);
printf("-------------------------------------\n");
printf("%d\t%s\t%d\t%d\t%d\t\n\n",m->id,m->name,m->Math,m->Chinese,m->English);
flag=0;
break;
}
else
flag=1;
}
if(flag
1)
{
printf(”\t\t系统中没有这个人!\n");
}
}
find.h
#ifndef _FIND_H
#define _FIND_H
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include “input.h”
#include “save.h”
#include “display.h”
void find();
void find_information();
void find_score();
void Teacher();
void Login();
#endif

  • 8
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值