项目个人体会

个人体会

项目任务:

这次的学生成绩管理系统,做了管理员和超级管理员的任务,对于老师这种看起来可能比较难的任务,担心自己并不能好好实现它该有的功能,实现了管理员和超级管理员对于下级账号的添加、删除、解锁、重置等功能,对于密码的修改,界面的排版、编辑。

#include"hanshu.h"
#include"admin_menu.h"
#include"fuzhu.h"
#include"hanshu1.h"
#include"super_admin.h"
#include"teacher.h"

int k;
int year2 = 2018;

//添加教师
void teacher_add(void)
{
	system("clear");
	puts("----教师添加----");
	printf("\n请选择添加方式(1.单个添加/2.批量添加)");
	char ch=getch();
	if(49 == ch)
	{
		if(k>100)
		{
			show_msg("\n教师已满",1);
		}
		else
		{
			for(int i=k;i<100;i++)
			{
				if(0 == tea[i].number)
				{
					printf("\n");
					printf("请输入工号:");
					scanf("%s",tea[i].id);
					//tea[i].id = m;
					printf("\n请输入姓名:");
					scanf("%s",tea[i].name);
					printf("\n请输入性别:");
					scanf("%s",tea[i].sex);
					printf("\n请输入出生年份:");
					scanf("%d",&tea[i].year);
					printf("\n请输入入职年份:");
					scanf("%d",&tea[i].year1);
					puts("\n添加教师成功!\n");
					tea[i].number = 1;
					tea[i].age=(year2-tea[i].year);
					tea[i].work=(year2-tea[i].year1);
					strcpy(tea[i].pass,"123456");
					k++;
					return;
				}
			}
		}
	}
	if(50 == ch)
	{
		printf("\n");
		FILE* frp = fopen("teacher.dat","r");
		if(NULL != frp)
		{
			//int i=k;
			while(k++<100)
			{
				fscanf(frp,"%s %s %s %d %d",tea[k].id,tea[k].name,tea[k].sex,&tea[k].year,&tea[k].year1);
				if(feof(frp))
				{
					break;
				}
				tea[k].number = 1;
				tea[k].age=(year2-tea[k].year);
				tea[k].work=(year2-tea[k].year1);
				strcpy(tea[k].pass,"123456");
				// printf("%s %s %s %d %d\n",tea[i].id,tea[i].name,tea[i].sex,tea[i].age,tea[i].work);
			}
		}
		show_msg("\n教师添加成功",1);
		return;
	}
}

//删除教师
void teacher_del(void)
{
	system("clear");
	printf("请输入要删除的教师姓名");
	char key[20];
	gets(key);
	int index = _find_name(key);
	if(-1 != index)
	{
		tea[index].number = -1;
		show_msg("\n删除成功",1);
		return;
	}
	if(-1 == index)
	{
		show_msg("教师已离职",1);
		return;
	}
}

//修改教师信息
void teacher_change(void)
{
	system("clear");
	printf("请输入要修改的教师姓名:");
	char key[20];
	gets(key);
	int index = find_tea_id(key);
	if(-1 != index)
	{
		printf("\n工号:%s 姓名:%s 性别:%s 年龄:%d 工龄:%d\n",tea[index].id,tea[index].name,tea[index].sex,tea[index].age,tea[index].work);
		printf("请输入要修改的信息:\n");
		puts("请输入新名字:");
		scanf("%s",tea[index].name);
		printf("\n请输入新年龄:");
		scanf("%d",&tea[index].age);
		puts("\n请输入新工龄:");
		scanf("%d",&tea[index].work);
		show_msg("\n修改成功\n",1);
		return;
	}
}

//重置教师密码
void teacher_password_reset(void)
{
	system("clear");
	printf("请输入要重置密码的教师姓名:");
	char key[20];
	gets(key);
	int index = _find_name(key);
	if(-1 != index)
	{
		strcpy(tea[index].pass,"123456");
		show_msg("密码重置成功",1);
		return;
	}
	if(-1 == index)
	{
		show_msg("查无此人",1);
		return;
	}
}

//解锁教师帐号
void teacher_au_unlock(void)
{
	system("clear");
	printf("请输入要解锁帐号的教师姓名:");
	char key[20];
	gets(key);
	int index = _find_name(key);
	if(-1 != index)
	{
		if(1 == tea[index].lock)
		{
			tea[index].lock = 0;
			show_msg("\n解锁成功",1);
			return;
		}
		if(0 == tea[index].lock)
		{
			show_msg("\n该帐号未锁定",1);
			return;
		}
	}
}

//查询教师
void teacher_find(void)
{
	system("clear");
	printf("请输入要查询的教师姓名:");
	char key[20];
	gets(key);
	for(int i=0;i<100;i++)
	{
		if(strstr(tea[i].name,key))
			printf("工号:%s 姓名:%s 性别:%s 年龄:%d 工龄:%d\n",tea[i].id,tea[i].name,tea[i].sex,tea[i].age,tea[i].work);
	}
	key_continue();
	return;
}

//显示在职教师
void teacher_act_show(void)
{
	system("clear");
	puts("----在职教师-----");
	for(int i=0;i<100;i++)
	{
		if(tea[i].number>0)
			printf("工号:%s 姓名:%s 性别:%s 年龄:%d 工龄:%d\n",tea[i].id,tea[i].name,tea[i].sex,tea[i].age,tea[i].work);
	}
	key_continue();
}

//显示离职教师
void teacher_quit_show(void)
{
	system("clear");
	puts("----离职教师----");
	for(int i=0;i<100;i++)
	{
		if(-1 == tea[i].number)
			printf("工号:%s 姓名:%s 性别:%s 年龄:%d 工龄:%d\n",tea[i].id,tea[i].name,tea[i].sex,tea[i].age,tea[i].work);
	}
	key_continue();
}

//修改密码
void admin_password_change(int i)
{
	system("clear");
	puts("----密码修改----");
	puts("请输入新密码:");
	char key1[20];
	char key2[20];
	gets(key1);
loop:	puts("请再输入一遍:");
	gets(key2);
	if(strcmp(key2,key1) != 0)
	{
		show_msg("\n两次密码不一致",1);
		goto loop;
	}
	else
	{
		strcpy(adm[i].password,key1);
		show_msg("\n密码修改成功",1);
		return;
	}
}

所遇困难:

虽然管理员和超级管理员的功能跟上次的电话簿项目很类似,但是在自己写代码的时候还是会经常碰到问题,比如有时跳转不出来,不能反悔上级界面,在写.h文件的时候由于自己只写了一份,接下来的都是复制,导致了头文件里的文件名都重复了,没有改成所在的文件名,在整合编译的时候疯狂出警告,提醒函数未声明,找了半天还是找不到问题所在,去看.c文件的头文件添加,发现都已经加了,但是为什么还会有这种问题,最后还是请教大师兄,发现了文件名的问题,在小组分工时,由于没有好好的商讨结构体的变量,导致在写的时候,自己用的结构体变量没有在对方的结构体里,一直跳出错误,还要自己再去进行添加。

个人总结:

在写项目的时候,还是要先进行一个系统的讨论,将各种细节,布局,将一个整体的框架构建好,商讨好函数名,防止函数名的冲突,规范代码,能更好的在后面调试时找出问题所在,而不是看一天都不知道哪里出错。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值