⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 skt.txt

📁 图书管理
💻 TXT
📖 第 1 页 / 共 2 页
字号:
                   // 学校学生信息管理系统 
/*****************************************************************/
# include "stdio.h"
# include "stdlib.h"
# include "string.h"
# include "conio.h"
# define NAME 20
# define CLAS 20
# define STUDENTMAX 1000 //学生最大人数 
# define PASSWORD "123abc" //系统登陆密码
# define filename "d:\\学生信息.txt" //记录学生信息
# define filename1 "d:\\学生信息1.txt" //记录学生信息(按学号由小到大)
# define filename2 "d:\\学生信息2.txt" //记录学生信息(按总分由高到低) 
/************************学生信息结构体**********************/ 
struct studentsorc //学生信息结构
{
char name[NAME]; //学生姓名 
int ID; //学生学号
char clas[CLAS];//学生班级 
float sorc[3]; //记录学生成绩
};
FILE *sorcfile=NULL; //存学生信息数据文件
/************************函数块声明****************************/ 
int password(); //密码验证
int showmeun(); //系统主菜单显示
int weihumeun(); //维护菜单显示 
void jiansuomeun(struct studentsorc *); //检索菜单显示 
void weihumain(struct studentsorc *); //信息维护主函数 
void inputinfo(struct studentsorc *); //个人信息录入 
void modinfo (struct studentsorc *); //修改信息 
void seasorc1 (struct  studentsorc*); //查找个人信息 
void seasorc2 (struct  studentsorc*); //查找班级信息 
void allabout(struct studentsorc*); //浏览所有信息 
void delinfo(struct  studentsorc*); //删除个人信息 
int sorcdatfile(struct studentsorc*); //信息数据处理文件 
//////////////////////////主函数//////////////////////////////////////////
void main()
{
	struct studentsorc studentmax[STUDENTMAX]; //最大学生人数
	struct studentsorc *p_student; //指向结构指针
	int in,pass;
	p_student=studentmax; //指向结构体 
	pass=password(); //获取用户密码验证
	if(pass==0) return;
	do
	{
		system("cls");
		in=showmeun(); //系统主菜单显示 
		switch(in)
		{
		case 1 : weihumain(p_student); break;
		case 2 : jiansuomeun(p_student); break;
		case 3 : break;
		default: printf("没有此选项,请按任意键返回重新选择!");
			getch();
			system("cls");
			break; 
		}
	}while(in!=3);
	system("cls");
	printf("\n\n\n\n\n\n\n\n\t\t\t");
	printf("谢 谢 使 用 本 系 统 !"); 
	return;
}
/************************密码验证*****************************/
int password()
{
	char pass[20];
	int i=0;
	printf("\n\n\n\n\n\n\n\t\t\t 学生信息管理系统 \n");
	printf("\n\t\t\t 用户名:S.K.T \n");
	printf("\n\t\t\t 密 码:");
	while (1)
	{
		pass[i]=getch();
		if(pass[i]==13) break;
		putchar('*');
		i++;
	}
	pass[i]='\0';
	if(strcmp(pass,PASSWORD)==0) //开始验证 
		return 1;
	system("cls");
	printf("\n\n\n\n\n\n\n\n\t\t\t\t密 码 错 误 !");
	getch();
	system("cls");
	return 0;
}
/***********************系统主菜单************************/
int showmeun()
{
	int in;
	printf("\n\n\n\n");
	printf("\t              欢 迎 登 陆 学 生 信 息 管 理 系 统 !         \n\n\n");
	printf("\t==============================================================\n");
	printf("\t                 学生个人信息管理系统                        \n");
	printf("\t ------------------------------------------------------------\n");
	printf("\t              1.  信  息  维  护                  \n");
	printf("\t                                 \n");
	printf("\t              2. 信  息  检  索                 \n");
	printf("\t                                 \n");
	printf("\t              3. 退 出 系 统                 \n");
	printf("\t                                 \n"); 
	printf("\t==============================================================\n");
	printf("\t 请您正确选择:");
	scanf("%d",&in);
	return in;
}
/************************信息维护主函数**************************************/
void weihumain(struct studentsorc *p_student)
{
	int in;
	do
	{
		system("cls");
		in=weihumeun(); //菜单显示 
		switch(in)
		{
		case 1 : inputinfo(p_student); break;//输入个人信息
		case 2 : modinfo(p_student); break;//修改个人信息
		case 3 : delinfo(p_student); break;//删除个人信息
		case 4 : break;
		default: printf("没有此选项。请您重新输入(1-4)");
			getch();
			system("cls");
			break;
		}
	}while(in!=4);
	system("cls");
	return ;
} 

/***********************信息维护子菜单*************************/
int weihumeun()
{
	int in;
	system("cls");
	printf("\n\n\n");
	printf("\t\t====================================================\n");
	printf("\t\t         信  息  维  护                  \n");
	printf("\t\t  ------------------------------------------------  \n");
	printf("\t\t         1.录入个人信息             \n");
	printf("\t\t                             \n");
	printf("\t\t         2.修改个人信息             \n");
	printf("\t\t                             \n");
	printf("\t\t         3.删除个人信息             \n");
	printf("\t\t                             \n");
	printf("\t\t         4.退出系统               \n");
	printf("\t\t====================================================\n");
	printf("\t\t 请您正确选择:");
	scanf("%d",&in);
	return in;
}
////////////////////////////////////信息检索子菜单/////////////////////////////
void jiansuomeun(struct studentsorc *p_student)
{
	int in;
	do
	{
		system("cls");
		printf("\n\n\n\n");
		printf("\t\t==============================================\n");
		printf("\t\t          信   息   检   索                  \n");
		printf("\t\t --------------------------------------------\n");
		printf("\t\t      1. 按姓名或学号查找            \n");
		printf("\t\t                         \n");
		printf("\t\t     2. 按班级查找                \n");
		printf("\t\t                         \n");
		printf("\t\t     3. 浏览所有信息               \n");
		printf("\t\t                         \n");
		printf("\t\t     4. 退出系统                  \n");
		printf("\t\t==============================================\n");
		printf("\t\t  请您正确选择: ");
		scanf("%d",&in);
		switch(in)
		{
		case 1 : seasorc1(p_student); break;
		case 2 : seasorc2(p_student); break;
		case 3 : allabout(p_student); break;
		case 4 : return ; //返回
		default: printf("没有此选项,请正确选择!"); break;
		}
	}while(1);
}
/************************个人信息录入*************************/
void inputinfo(struct studentsorc *p_student)
{
	int count=0;
	char ch;
	system("cls");
	if((sorcfile=fopen(filename,"ab+"))==NULL) //打开或新建成绩数据文件 
	{
		printf("不能找开文件,请确认磁盘已满或文件是否存在");
		getch();
		return;
	}
	rewind(sorcfile); //指向文件头读取数据
	while(!feof(sorcfile))
	{
		fread(&p_student[count],sizeof(struct studentsorc),1,sorcfile);
		count++;
	}
	while(count<STUDENTMAX)
	{
		printf("请输入第%d个学生的姓名:",count);
		scanf("%s",p_student[count-1].name);
		printf("请输入该学生的学号:");
		scanf("%d",&p_student[count-1].ID); 
		printf("请输入该学生的班级:");
		scanf("%s",p_student[count-1].clas);
		printf("请输入该学生的3科成绩\n");
		printf("——————————————————————————————\n");
		printf("\n语文: ");
		scanf("%f",&p_student[count-1].sorc[0]);
		printf("\n数学: ");
		scanf("%f",&p_student[count-1].sorc[1]);
		printf("\n英语: ");
		scanf("%f",&p_student[count-1].sorc[2]);
		printf("——————————————————————————————\n"); 
		fwrite(&p_student[count-1],sizeof(struct studentsorc),1,sorcfile);//写入文件
		count++;
		printf("确定要继续输入下一个学生的成绩吗(y/n):");
		getchar();
		ch=getchar();
		if(ch=='n'||ch=='N')
		{
			system("cls");
			fclose(sorcfile);
			return;
		}
	}
}
/////////////////////////////学生信息修改////////////////////////////////////////////
void modinfo(struct studentsorc *p_student)
{
	char name[NAME],clas[CLAS],ch,c;
	int count,i,j,ID,newID,choice;
	float sorc;
	count=sorcdatfile(p_student);
	if(!count)
	{
		printf("读取数据失败,请确认数据是否存在或文件是否损害");
		getch();
		system("cls");
		return ;
	}
	printf("请输入要修改的学生学号:");
	scanf("%d",&ID);
	for(i=0;i<count;i++)
		if(ID==p_student[i].ID)
		{
			printf("学号为%d的学生成绩表\n",ID);
			printf("——————————————————————————\n");
			printf("\n学号: %d\n",p_student[i].ID);
			printf("\n姓名: %s\n",p_student[i].name);
			printf("\n班级: %s\n",p_student[i].clas);
			printf("\n语文: %.2f\n",p_student[i].sorc[0]);
			printf("\n数学: %.2f\n",p_student[i].sorc[1]);
			printf("\n英语: %.2f\n",p_student[i].sorc[2]);
			printf("——————————————————————————\n");
			printf("确定要把该学生的信息修改吗?(y/n):");
			getchar();
			c=getchar();
			getchar();
			if(c=='N'||c=='n')
			{
				system("cls");
				return;
			}
			printf("请选择要修改的个人信息:1.姓名  2.学号 3.班级 4.成绩\n");
			printf("choose:");
			scanf("%d",&choice);
			getchar();
			if(choice==1)
			{
				printf("请您输入该学生的新姓名:");
				gets(name);
				system("cls");
				printf("\n\n\n\n\t\t\t确定要把该学生的姓名修改吗?(y/n):");
				ch=getchar();
				getchar();
				if(ch=='y'||ch=='Y')
					strcpy(p_student[i].name,name); //修改姓名
				else
				{
					system("cls");
					return;
				}
			}
			else if(choice==2)
			{
				printf("请您输入该学生的新学号:");
				scanf("%d",&newID);
				system("cls");
				printf("\n\n\n\n\t\t\t确定要把该学生的学号修改吗?(y/n):");
				getchar();
				ch=getchar();
				getchar();
				if(ch=='y'||ch=='Y')
					p_student[i].ID=newID;
				else
				{
					system("cls");
					return;
				}

			}
			else if(choice==3)
			{
				printf("请您输入该学生的新班级:");
				gets(clas);
				system("cls");
				printf("\n\n\n\n\t\t\t确定要把该学生的班级修改吗?(y/n):");
				ch=getchar();
				getchar();
				if(ch=='y'||ch=='Y')
					strcpy(p_student[i].clas,clas);
				else
				{
					system("cls");
					return;
				}
			}
			else if(choice==4)
			{
				printf("请选择要修改的科目成绩:1.语文  2.数学 3.英语\n");
				scanf("%d",&j);
				if(j==1)
				{
					printf("请重新输入语文成绩: ");
					scanf("%f",&sorc);
					system("cls");
					printf("\n\n\n\n\t\t\t确定要把该学生的语文成绩修改吗?(y/n):");
					getchar();
					ch=getchar();
					getchar();
					if(ch=='y'||ch=='Y')
						p_student[i].sorc[0]=sorc;
					else
					{
						system("cls");
						return;
					}
				}
				else if(j==2)
				{
					printf("请重新输入数学成绩: ");
					scanf("%f",&sorc);
					system("cls");
					printf("\n\n\n\n\t\t\t确定要把该学生的数学成绩修改吗?(y/n):");
					getchar();
					ch=getchar();
					getchar();
					if(ch=='y'||ch=='Y')
						p_student[i].sorc[1]=sorc;
					else
					{
						system("cls");
						return;
					}
				}
				else if(j==3)
				{
					printf("请重新输入英语成绩: ");
					scanf("%f",&sorc);
					system("cls");
					printf("\n\n\n\n\t\t\t确定要把该学生的英语成绩修改吗?(y/n):");
					getchar();
					ch=getchar();
					getchar();
					if(ch=='y'||ch=='Y')
						p_student[i].sorc[2]=sorc;
					else
					{
						system("cls");
						return;
					}
				}
				else
				{
					printf("没有此科目,返回.......!");
					getch();
					system("cls");
					return ;
				}
			}
			else
			{
				printf("没有此选项,返回.......!");
				getch();
				system("cls");
				return ;
			}
			sorcfile=fopen(filename,"wb"); //把修改后的重新写入文件
			for(i=0;i<count;i++)
				if(fwrite(&p_student[i],sizeof(struct studentsorc),1,sorcfile)!=1)
				{
					fclose(sorcfile); //写入失败关闭文件 
					printf("\t\t\t修改失败,返回.......!");
					getch();
					system("cls");
					return ;
				}
				fclose(sorcfile);
				printf("\t\t\t修改成功,返回.......!");
				getch();
				system("cls");
				return ;
		}
		printf("没有找到该学生,返回.......!");
		getch();
		system("cls");
		return ;
}
/************************删除学生成绩******************************/
void delinfo(struct studentsorc *p_student)
{
	int i,count,n=0,in,stuID;
	char tempname[NAME];
	count=sorcdatfile(p_student);
	if(!count)
	{
		printf("读取数据失败!请确认已成功录入功或文件是否损害!");
		getch();
		system("cls");
		return ;
	}
	if((sorcfile=fopen(filename,"wb"))==NULL)
		{
			printf("不能找开文件,请确认磁盘已满或文件是否存在!");
			getch();
			return ;
		}
	printf("请选择你操作的选项: 1. 按姓名查找删除 2. 按学号查找删除");
	scanf("%d",&in);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -