初尝项目的历程

这篇博客主要是为了纪念一下第一次做项目的感受和一些自己犯的一些错误,用来提醒自己。(第一次写博客,文笔比较稚嫩。)
在这里插入图片描述
在这里插入图片描述

这是项目的主要功能,我在我们团队中主要负责的是管理员和超级管理员的功能,还有部分主界面的实现代码。

管理员模块代码如下:

#include<stdio.h>
#include<getch.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
#include"adm.h"
#include"super_adm.h"
#include"get_cmd.h"
#include “display.h”
#include “stu_tea_adm_struct.h”
extern Student stu[500];
extern Teacher tea[50];
extern Administrator adm[10];
extern int stu_num;
int count=0;
int b[50];//该位置是否有教师

//教师添加模块
int add_tea(void)
{
int x=0,y=0;
if(count >= 50) {printf(“老师个数已满,无法添加\n”);return 0;}
//******************************
while(1)//判断按得键
{
scanf("%d",&y);
if(1y||2y)
{
break;
}
printf(“输入错误,输入1或2!”);
continue;
}
//*****************************
if(1y)//单个添加教师
{
for(int i=count ; i<50 ; i++)
{
if(0 == b[i])
{
printf(“请输入工号:”);
scanf("%s",tea[i].tea_id);
if(-1!=find_tea_id(tea[i].tea_id))
{
x=find_tea_id(tea[i].tea_id);
if(1
tea[x].is_work)
{
puts(“工号重复,添加失败!”);
return 0;
}
else if(2tea[x].is_work)
{
puts(“虽已离职,工号依旧存在,添加失败!”);
return 0;
}
}
strcpy(tea[i].tea_pass_word,“88888888”);
printf(“请输入姓名:”);
scanf("%s",tea[i].name);
printf(“请输入性别(1、男 2、女):”);
scanf("%d",&tea[i].sex);
printf(“请输入年龄:”);
scanf("%d",&tea[i].age);
printf(“请输入工龄:”);
scanf("%d",&tea[i].work_age);
tea[i].is_work=1;
b[i]=1;
puts(“添加成功”);
count++;
return 0;
}
}
}
//*******************************
else if(2
y)//文件导入模块
{
char fname[20];
int fnum=0;
printf(“请输入你想导入的文件:\n”);
scanf("%s",fname);
printf(“请输入你要添加的人数:\n”);
scanf("%d",&fnum);
FILE frp = fopen(fname,“r”);
if(NULL==frp)
{
perror(“fopen”);
sleep(1);
return -1;
}
while(count < fnum )
{
fscanf(frp,"%s %s %d %d %d %d\n",tea[count].tea_id,tea[count].name,&tea[count].sex,&tea[count].age,&tea[count].work_age,&tea[count].is_work);
strcpy(tea[count].tea_pass_word,“88888888”);
b[count]=1;
count++;
}
fclose(frp);
puts(“导入成功!”);
sleep(1);
return count;
}
//
*****************************
}

int find_tea_id(char* str)//查找是否有相同教师工号
{
for(int i=0;i<50;i++)
{
if(0==strcmp(str,tea[i].tea_id)&&b[i])
{
return i;
}
}
return -1;
}

void sear_tea(void)//查找教师信息
{
puts(“请输入工号:”);
char key[20];
gets(key);
int i=find_tea_id(key);
if(-1!=i)
{
puts(“工号 姓名 性别 年龄 工龄”);
printf("%-s %-s %-s %-d %-d\n",tea[i].tea_id,tea[i].name,tea[i].sex == 1 ?“男”:“女”,tea[i].age,tea[i].work_age);
puts(“按任意键返回!”);
getch();
}
else
{
puts(“工号不存在,查询失败!”);
puts(“按任意键返回!”);
getch();
}
}

void mod_tea(void)//修改教师信息
{
puts(“请输入工号:”);
char key[20];
gets(key);
int i=find_tea_id(key);
if(-1!=i)
{
printf(“请输入姓名:”);
gets(tea[i].name);
printf(“请输入性别:”);
scanf("%d",&tea[i].sex);
printf(“请输入年龄:”);
scanf("%d",&tea[i].age);
printf(“请输入工龄:”);
scanf("%d",&tea[i].work_age);
puts(“修改完成!”);
puts(“按任意键返回!”);
getch();
}
else
{
puts(“工号不存在,修改失败!”);
puts(“按任意键返回!”);
getch();
}
}

void res_tea_pass(void)//重置教师密码
{
puts(“请输入工号:”);
char key[20];
gets(key);
int i=find_tea_id(key);
if(-1!=i)
{
strcpy(tea[i].tea_pass_word,“88888888”);
puts(“重置密码成功!”);
tea[i].is_first=1;
puts(“按任意键返回!”);
getch();
}
else
{
puts(“工号不存在,重置失败!”);
puts(“按任意键返回!”);
getch();
}
}

void unlock_tea_acc(void)//解锁已锁定的教师账号
{
puts(“请输入工号:”);
char key[20];
gets(key);
int i=find_tea_id(key);
if(-1!=i)
{
tea[i].is_lock=0;
puts(“解锁成功!”);
puts(“按任意键返回!”);
getch();
}
else
{
puts(“工号不存在,解锁失败!”);
puts(“按任意键返回!”);
getch();
}

}

void del_tea(void)//删除教师记为离职
{
puts(“请输入工号:”);
char key[20];
gets(key);
int i=find_tea_id(key);
if(-1!=i)
{
b[i]=1;
tea[i].is_work=2;
puts(“删除成功!”);
return;
}
else
{
puts(“工号不存在,删除失败”);
}
}

void dis_tea(void)//显示在职教师
{
puts(“工号 姓名 性别 年龄 工龄”);
for(int i=0;i<50;i++)
{
if(1==tea[i].is_work)
{
printf("%-s %-s %-s %-d %-d\n",tea[i].tea_id,tea[i].name,tea[i].sex == 1 ?“男”:“女”,tea[i].age,tea[i].work_age);
}
}
puts(“按任意键返回!”);
getch();
}

void dis_quit_tea(void)//显示离职教师
{
puts(“工号 姓名 性别 年龄 工龄”);
for(int i=0;i<50;i++)
{
if(2==tea[i].is_work)
{
printf("%-s %-s %-s %-d %-d\n",tea[i].tea_id,tea[i].name,tea[i].sex == 1 ?“男”:“女”,tea[i].age,tea[i].work_age);
}
}
puts(“按任意键返回!”);
getch();
}

void adm_cha_pass(int i)//修改密码
{
char pass[20];
puts(“请输入你的旧密码:”);
gets(pass);
if(0strcmp(pass,adm[i].adm_pass_word))
{
puts(“请输入你的新密码:”);
gets(pass);
strcpy(adm[i].adm_pass_word,pass);
adm[i].is_first=1;
puts(“新密码设定成功!”);
puts(“按任意键返回!”);
getch();
}
}
void nor_adm(int i)
{
//**************************************
nor_adm_display();
if(0
adm[i].is_first)//第一次登陆修改密码
{
puts(“修改登录密码”);
puts(“输入你的新密码:”);
scanf("%s",adm[i].adm_pass_word);
adm[i].is_first=1;
puts(“修改成功!”);
sleep(1);
nor_adm_display();
}
//***********************************
while(1)
{
nor_adm_display();
switch(get_cmd(‘0’,‘9’))//功能选择模块
{
case ‘1’:puts(“按1为单个添加教师,按2多个添加”);add_tea();
sleep(1);nor_adm_display;break;
case ‘2’:del_tea();sleep(1);break;
case ‘3’:mod_tea();sleep(1);break;
case ‘4’:res_tea_pass();break;
case ‘5’:unlock_tea_acc();break;
case ‘6’:sear_tea();break;
case ‘7’:dis_tea();break;
case ‘8’:dis_quit_tea();break;
case ‘9’:adm_cha_pass(i);break;
case ‘0’:return;
}
}
}

超级管理员模块代码如下:

#include <stdio.h>
#include <string.h>
#include <getch.h>
#include <stdlib.h>
#include"adm.h"
#include"super_adm.h"
#include “stu_tea_adm_struct.h”
#include<time.h>
#include “display.h”
#include “get_cmd.h”
extern Student stu[500];
extern Teacher tea[50];
extern Administrator adm[10];
extern int stu_num;

int super_count=0;
char a[10];
//**********************************
int find_adm_id(char* str)//查找管理员id是否存在
{
for(int i=0;i<10;i++)
{
if(0strcmp(str,adm[i].adm_id)&&a[i])
{
return i;
}
}
return -1;
}
//*********************************
void add_adm(void)//添加管理员
{
if(super_count>=10)
{
printf(“管理员个数已满,无法添加\n”);
return;
}
for(int i=0;i<10;i++)
{
if(0
a[i])
{
printf(“请输入管理员账号:”);
scanf("%s",adm[i].adm_id);
if(-1!=find_adm_id(adm[i].adm_id))
{
puts(“账号重复,输入失败!”);
return;
}
strcpy(adm[i].adm_pass_word,“88888888”);
puts(“管理员添加成功”);
adm[i].is_alive=1;
a[i]=1;
super_count++;
return;
}
}
}
//********************************
void del_adm(void)//删除管理员
{
puts(“请输入管理员帐号:”);
char key[20];
gets(key);
int i=find_adm_id(key);
if(-1!=i)
{
adm[i].is_alive=0;
puts(“删除成功!”);
a[i]=0;
super_count–;
return;
}
else puts(“账号不存在”);
}
//*******************************
void res_adm_pass(void)//重置管理员密码
{
puts(“请输入管理员帐号:”);
char key[20];
gets(key);
int i=find_adm_id(key);
if(-1!=i)
{
strcpy(adm[i].adm_pass_word,“88888888”);
puts(“重置密码成功”);
adm[i].is_first=1;
puts(“按任意键返回!”);
getch();
}
else
{
puts(“账号不存在,重置失败!”);
puts(“按任意键返回!”);
getch();
}
}
//****************************
void unlock_adm_acc(void)//解锁锁定的管理员帐号
{
puts(“请输入管理员帐号:”);
char key[20];
gets(key);
int i=find_adm_id(key);
if(-1!=i)
{
adm[i].is_lock=0;
puts(“解锁成功!”);
puts(“按任意键返回!”);
getch();
}
else
{
puts(“账号不存在,解锁失败!”);
puts(“按任意键返回!”);
getch();
}
}
//**************************
void dis_all_adm(void)//显示所有管理员
{
puts(“管理员id”);
for(int i=0;i<10;i++)
{
if(1==adm[i].is_alive)
{
printf("  %s\n",adm[i].adm_id);
}
}
puts(“按任意键返回!”);
getch();
}
//*********************************
void super_adm(void)
{
while(1)
{
sup_adm_display();
switch(get_cmd(‘1’,‘6’))//选择功能模块
{
case ‘1’:add_adm();sleep(1);break;
case ‘2’:del_adm();sleep(1);break;
case ‘3’:res_adm_pass();break;
case ‘4’:unlock_adm_acc();break;
case ‘5’:dis_all_adm();break;
case ‘6’:return;break;
}
}
}

出现的错误(已解决):

  1. 在文件导入之后无法进行单个添加
  2. 删除一个账号后可以注册一个相同账号,删除的那个会被覆盖
  3. 文件无法导入
  4. 还有部分细节问题
  5. 团队代码整合时函数命名重复

感想:第一次做项目,经验不足,考虑东西细节时不够全面仔细,出现很多小错误,希望可以为自己以后多积累点经验。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值