学生成绩管理系统续

续上篇学生成绩管理系统

上一篇博客上放出了我各个界面的源代码,还差一个主函数的源代码
我是将学生,教师,管理员,超级管理员,还有公共函数都分开写,最后再汇总在一个main函数中

main函数

#include"interface.h"//这个头文件中包含了其他所有的头文件还有函数
#include"common.h"//公共函数库,结构体定义都在里面
void xsglxt(void)
{
	while(1)
	{
		interface();//显示初始界面
		switch(getch())
		{
			case 49:student_interface();break;//1.学生入口
			case 50:teacher_interface();break;//2.教师入口
			case 51:administratorsr_interface();break;//3.管理员入口
			case 52:super_administrators_interface();break;//4.超级管理员入口
			case 53:return ;;break;//5.退出

		}
	}
}


int main()
{
	FILE* fpp1=fopen("admin.dat","r");//读文件
	fseek(fpp1,0,SEEK_END);
	long j=ftell(fpp1);
	rewind(fpp1);
	adm_count=j/56;
	for(int i=0;i<=adm_count;i++)
	{
		fread(&admin[i],56,1,fpp1);
	}
	FILE* fap1=fopen("student.dat","r");
	fseek(fap1,0,SEEK_END);
	long j1=ftell(fap1);
	rewind(fap1);
	stu_count=j1/64;
	for(int i=0;i<=stu_count;i++)
	{
		fread(&student[i],64,1,fap1);
	}

	FILE* fwp1=fopen("teacher.dat","r");
	fseek(fwp1,0,SEEK_END);
	long j2=ftell(fwp1);
	rewind(fwp1);
	teacher_count=j2/60;
	for(int i=0;i<=teacher_count;i++)
	{
		fread(&teacher[i],60,1,fwp1);
	}


	xsglxt();
	
	FILE* fap=fopen("student.dat","w");//写文件
	for(int i=0;i<stu_count;i++)
	{
		fwrite(&student[i],sizeof(student[0]),1,fap);
	}
	FILE* fwp=fopen("teacher.dat","w");
	for(int i=0;i<teacher_count;i++)
	{
		fwrite(&teacher[i],sizeof(teacher[0]),1,fwp);
	}
	FILE* fpp=fopen("admin.dat","w");
	for(int i=0;i<adm_count;i++)
	{
		fwrite(&admin[i],sizeof(admin[0]),1,fpp);
	}
}
    因为刚刚学了文件读写,对文件读写函数理解不深,所以我采用的是统一读,统一写入的方式,
在主程序运行前,先将文件中的数据读入系统中,主函数结束时,再重先从头开始写入到文件中
效率不是很高,如果量大的话每一次程序的读和写都会浪费掉巨大的时间。
    其次,由于文件写入是放在主程序的最后,不是实时读写,程序运行的过程中直接退出,会导致
程序运行过程中输入的数据丢失。
    最后,因为我们采用的是二进制方式的读写,所以读文件数据的时候会很不方便。
    在整个项目的过程中,我体会到了合作的好处,以前都习惯一个人埋头苦干,效率不高,这次和
同学一起合作写项目,效率很快,我们小组用了2天的时间,准确的来说用了不到12个小时的时间就
把项目做完了。这是一个人没法做到的。

猜你喜欢

转载自blog.csdn.net/weixin_43716607/article/details/84943057