C语言编写的学生信息管理系统
数据结构如下
学号 | 姓名 | 性别 | 年龄 | 数学 | 计算机 | 总分 |
---|---|---|---|---|---|---|
int | char | char | int | float | float | float |
实现功能如下:
(1)添加学生信息
(2)浏览学生信息
(3)查询学生信息
(4)删除学生信息
(5)按总分排序
(6)退出系统
要求执行完某一功能后能返回主菜单,系统实现密码登录,密码保存在TXT文本文件中。
需要在根目录下创建一个pwd.txt的文本文档存放密码,默认为123.
程序运行截图
主菜单
展示输入所有信息
排序后
源代码
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
#include <string.h>
#define length 20
#define N 5
typedef struct student{
int student_No;
char name[length];
char sex[length];
int age;
float math;
float cmpter;
float total;
}Stu;
Stu stu[N];
int i;
int login();
void display();
void insert();
void show();
void quqry();
void delet();
void sort();
int login(){
int pwd,pwd1;
printf("\n");
printf("\n");
printf(" 欢迎进入学生管理系统\n");
printf(" 请输入登录密码\n");
printf("\n");
scanf(" %d",&pwd);
FILE *fp;
fp=fopen("pwd.txt","r");
fscanf(fp,"%d",&pwd1);
if(pwd==pwd1){
system("cls");
printf("密码正确\n");
Sleep(1000);
system("cls");
return 1;
}
system("cls");
printf("密码错误");
Sleep(1000);
system("cls");
return 0;
}
void display(){
int choice;
printf(" 欢迎进入学生管理系统\n");
printf("(1)添加学生信息\n");
printf("(2)浏览学生信息\n");
printf("(3)查询学生信息\n");
printf("(4)删除学生信息\n");
printf("(5)按总分排序\n");
printf("(6)退出系统\n");
scanf("%d",&choice);
switch(choice){
case 1:{
system("cls");
insert();
break;
}
case 2:{
system("cls");
show();
break;
}
case 3:{
system("cls");
quqry();
break;
}
case 4:{
system("cls");
delet();
break;
}
case 5:{
system("cls");
sort();
break;
}
case 6:{
exit(0);
break;
}
}
}
void insert(){
printf("添加第%d位同学的信息,共%d个\n",i+1,N);
printf("数据间用tab分隔\n");
printf("学号\t姓名\t性别\t年龄\t数学\t计算机\n");
scanf("%d\t%s\t%s\t%d\t%f\t%f",&stu[i].student_No,&stu[i].name,&stu[i].sex,&stu[i].age,&stu[i].math,&stu[i].cmpter);
stu[i].total=stu[i].math+stu[i].cmpter;
i++;
printf("\n按任意键返回主菜单");
getch();
system("cls");
display();
}
void show(){
printf("以下是当前所有学生的信息,共%d个\n",i);
printf("学号\t姓名\t性别\t年龄\t数学\t计算机\t总分\n");
for(int j=0;j<i;j++){
printf("%d\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\n",stu[j].student_No,stu[j].name,stu[j].sex,stu[j].age,stu[j].math,stu[j].cmpter,stu[j].total);
}
printf("\n按任意键返回主菜单");
getch();
system("cls");
display();
}
void quqry(){
int choice;
printf("根据什么查询?\n");
printf("(1)学号\n");
printf("(2)姓名\n");
scanf("%d",&choice);
switch(choice){
case 1:{
int sno;
printf("请输入学号\n");
scanf("%d",&sno);
printf("查询结果为:\n");
for(int j=0;j<i;j++){
if(sno==stu[j].student_No){
printf("学号\t姓名\t性别\t年龄\t数学\t计算机\t总分\n");
printf("%d\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f",stu[j].student_No,stu[j].name,stu[j].sex,stu[j].age,stu[j].math,stu[j].cmpter,stu[j].total);
}
}
break;
}
case 2:{
char name_1[length];
printf("请输入姓名\n");
scanf("%s",&name_1);
printf("查询结果为:\n");
for(int j=0;j<i;j++){
if(strcmp(name_1,stu[j].name)==0){
printf("学号\t姓名\t性别\t年龄\t数学\t计算机\t总分\n");
printf("%d\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f",stu[j].student_No,stu[j].name,stu[j].sex,stu[j].age,stu[j].math,stu[j].cmpter,stu[j].total);
}
}
break;
}
}
printf("\n按任意键返回主菜单");
getch();
system("cls");
display();
}
void delet(){
int choice;
printf("根据什么删除?\n");
printf("(1)学号\n");
printf("(2)姓名\n");
scanf("%d",&choice);
switch(choice){
case 1:{
int sno;
printf("请输入学号\n");
scanf("%d",&sno);
for(int j=0;j<i;j++){
if(sno==stu[j].student_No){
for(int k=j;k<i;k++){
stu[k]=stu[k+1];
}
}
}
break;
}
case 2:{
char name[length];
printf("请输入姓名\n");
scanf("%s",&name);
for(int j=0;j<i;j++){
if(strcmp(name,stu[j].name)==0){
for(int k=j;k<i-1;k++){
stu[k]=stu[k+1];
}
}
}
break;
}
}
i--;
printf("删除成功\n");
printf("\n按任意键返回主菜单");
getch();
system("cls");
display();
}
void sort(){
Stu stu_temp;
for(int j=0;j<i;j++){
for(int k=j;k<i-1;k++){
if(stu[k].total<stu[k+1].total){
stu_temp=stu[k];
stu[k]=stu[k+1];
stu[k+1]=stu_temp;
}
}
}
printf("排序成功\n");
printf("按任意键返回主菜单");
getch();
system("cls");
display();
}
int main(){
while(1){
if(login())
break;
}
display();
return 0;
}