学生信息管理系统(全C版)

1、问题描述

学生信息包括:学号、姓名、性别、年龄、班级等信息。小学生除了包括学生所有信息外,还包括英语、数学和语文成绩。中学生除了包括小学生所有信息外,还包括地理、历史成绩、家庭住址等信息。大学生除了包括学生所有信息外,还包括专业、家庭地址、联系方式等信息。 

2、功能要求  

管理员用户名:admin

管理员密码:123456(输入时以密文形式,如:******)

管理员:

(1)添加普通用户用户名和密码信息。

(2)重置普通用户初始密码。(如:1)

(3)添加功能:程序能够添加不同学生的记录,提供选择界面供用户选择所要添加的类别,要求学号要唯一,如果添加了重复学号的记录时,则提示数据添加重复并取消添加。

(4)查询功能:可根据学号、姓名等信息对已添加的学生记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。

(5)显示功能:可显示当前系统中所有学生的记录,每条记录占据一行。

(6)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意学号的唯一性。 

(7)删除功能:主要实现对已添加的学生记录进行删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。

(8)统计功能:能根据多种参数进行统计。能统计学生人数、按性别统计、按年龄统计等。

(9)保存功能:可将当前系统中各类记录存入文件中,存入方式任意。

(10)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。

普通用户:

(1)修改个人账户密码。

(2)查询功能:可根据学号、姓名等信息对已添加的学生记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。

(3)显示功能:可显示当前系统中所有学生的记录,每条记录占据一行。

   代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<windows.h>
#include<conio.h>
char a0[26]={"admin"};//管理员名称
char b0[26]={"123456"};//管理员登录密码
char xb[26];//用户名 
struct Student_zhanghu//普通用户的账户信息 (OK)
{
	char aa[50];//普通用户名 
	char bb[50];//密码 
	struct Student_zhanghu *next;//指向下一个用户 
};

struct Student_xinxi//学生信息 (OK)
{
	char xuehao[26];//学号 
	char xingming[26];//姓名 
	char xingbie[26];//性别 
	int age;//年龄 
	int banji;//班级 
	int english;//英语成绩 
	int math;//数学成绩 
	int chinese;//语文成绩 
	int geagraphy;//地理成绩
	int history;//历史成绩 
	char address[50];//家庭地址 
	char zhuanye[50];//专业
	char phone[26];//联系方式 
	int phone0;//标记是否为大学生,因为只有大学生输入手机号 
	struct Student_xinxi *next;//指向下一个学生信息 
};


void chuangjianyonghu()//创建用户 (OK)(1) 
{
	FILE *p0;
	char b;
	int i=0;
	struct Student_zhanghu p;
	p0=fopen("账户信息.txt","a");
	printf("请输入用户名:\n");
	scanf("%s",&p.aa);
	printf("请输入密码:\n");
	while(b!=13)
	{
		b=getch();
		if(b!=13)
		{
			putchar('*');
			p.bb[i]=b;
			i++;
		}
	}
	fwrite(&p,sizeof(struct Student_zhanghu),1,p0);
	printf("\n");
	printf("%s用户创建成功\n",p.aa);
	rewind(p0);
	fclose(p0);
}

void xueshengxinxishuru()//学生信息输入 (OK) 
{
	FILE *p0,*p1;
	p1=fopen("学生信息.txt","r");
	struct Student_xinxi hf,p;
	int a,i;
	scanf("%d",&a);
	if(a==1)//小学生信息 
	{
		printf("请输入学号:\n");
		scanf("%s",&p.xuehao);
		while(fread(&hf,sizeof(struct Student_xinxi),1,p1)==1)//判断学号是否重复 
		{
			if(strcmp(hf.xuehao,p.xuehao)==0)
			{
				printf("警告:数据添加重复!\n");
				printf("请重新输入学号:\n");
				scanf("%s",&p.xuehao);
				rewind(p1);
			}
		}
		rewind(p1);
		fclose(p1);
		printf("请输入姓名:\n");
		scanf("%s",&p.xingming);
		printf("请输入性别:\n");
		scanf("%s",&p.xingbie);
		printf("请输入年龄:\n");
		scanf("%d",&p.age);
		printf("请输入班级:\n");
		scanf("%d",&p.banji);
		printf("请输入英语成绩:\n");
		scanf("%d",&p.english);
		printf("请输入数学成绩:\n");
		scanf("%d",&p.math);
		printf("请输入语文成绩:\n");
		scanf("%d",&p.chinese);
		p.history=0;
		p.geagraphy=0;
		p.phone0=0;
	}
	if(a==2)//中学生信息 
	{
		printf("请输入学号:\n");
		scanf("%s",&p.xuehao);
		while(fread(&hf,sizeof(struct Student_xinxi),1,p1)==1)//判断学号是否重复 
		{
			if(strcmp(hf.xuehao,p.xuehao)==0)
			{
				printf("警告:数据添加重复!\n");
				printf("请重新输入学号:\n");
				scanf("%s",&p.xuehao);
				rewind(p1);
			}
		}
		rewind(p1);
		fclose(p1);
		printf("请输入姓名:\n");
		scanf("%s",&p.xingming);
		printf("请输入性别:\n");
		scanf("%s",&p.xingbie);
		printf("请输入年龄:\n");
		scanf("%d",&p.age);
		printf("请输入班级:\n");
		scanf("%d",&p.banji);
		printf("请输入英语成绩:\n");
		scanf("%d",&p.english);
		printf("请输入数学成绩:\n");
		scanf("%d",&p.math);
		printf("请输入语文成绩:\n");
		scanf("%d",&p.chinese);
		printf("请输入地理成绩:\n");
		scanf("%d",&p.geagraphy);
		printf("请输入历史成绩:\n");
		scanf("%d",&p.history);
		printf("请输入家庭地址:\n");
		scanf("%s",&p.address);
		p.phone0=0;
	}
	if(a==3)//大学生信息 
	{
		printf("请输入学号:\n");
		scanf("%s",&p.xuehao);
		while(fread(&hf,sizeof(struct Student_xinxi),1,p1)==1)//判断学号是否重复 
		{
			if(strcmp(hf.xuehao,p.xuehao)==0)
			{
				printf("警告:数据添加重复!\n");
				printf("请重新输入学号:\n");
				scanf("%s",&p.xuehao);
				rewind(p1);
			}
		}
		rewind(p1);
		fclose(p1);
		printf("请输入姓名:\n");
		scanf("%s",&p.xingming);
		printf("请输入性别:\n");
		scanf("%s",&p.xingbie);
		printf("请输入年龄:\n");
		scanf("%d",&p.age);
		printf("请输入班级:\n");
		scanf("%d",&p.banji);
		printf("请输入专业名称:\n");
		scanf("%s",&p.zhuanye);
		printf("请输入家庭地址:\n");
		scanf("%s",&p.address);
		printf("请输入联系方式:\n");
		scanf("%s",&p.phone);
		p.phone0=1;
		p.geagraphy=0;
		p.history=0;
		p.math=0;
		p.english=0;
		p.chinese=0;
	}
	p0=fopen("学生信息.txt","a");
	fwrite(&p,sizeof(struct Student_xinxi),1,p0);
	rewind(p0);
	fclose(p0);
	
	system("cls");//清屏函数 
	printf("%s信息录入成功!\n",p.xingming);
	printf("欢迎您,尊敬的管理员%s\n",a0);
	printf("0:退出管理员账户\n");
	printf("1:创建新的普通用户\n");
	printf("2:重置普通用户初始密码\n");
	printf("3:用户信息查询\n");
	printf("4:显示所有学生记录\n");
	printf("5:学生记录编辑\n");
	printf("6:学生记录删除\n");
	printf("7:学生信息统计\n");
}

void chongzhi()//重置用户函数 (OK)(2)
{
	char name[50],bb[50]={"000000"};
	scanf("%s",&name);
	FILE *p,*pr;
	p=fopen("账户信息.txt",&
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值