这次我们来聊一聊本人写的第一个项目---图书管理系统。虽然项目难度不高,但是得对c语言要有一个深刻的认识和可以熟练的运用。这个项目基本上用到了c语言的所有内容,这也是这段时间对自身学习成果的检验。话不多说,我们来看看具体的项目内容和操作。
首先是项目要求,我们需要有超级管理员、普通管理员和会员读者这三个用户界面和各自的登录密码,其次是各自需要完成的功能,这里读者在自己写的时候可以添加和完善,力求做到人性化,这里就不多说了。
然后就说一说自己拿到这个项目之后自己的一些想法吧。首先我自己的脑海里有了一个大的框架,我准备先把总的框架搭起来,先分类好,每个部分需要干什么事,然后再有针对性的去各个实现具体功能。比如先把几个用户的登录界面先搭起来,这样条理就比较清晰,效率也高一些。
当然,在开始写时,我们第一步是写头文件,把我们需要用到的头文件可以全部写在一起,也可以分类一下,把与同一个文件有关系的头文件写在一起。具体的功能实现这里不再描述,每个人的逻辑思维也不同,大家可以自由发挥。以超级管理员为例:
用户登录界面
void show_main(){//界面
printf("----------------------------------------\n");
printf("******欢迎登陆指针信息图书管理系统!****\n");
printf("[1]超级管理员界面\n");
printf("[2]普通管理员界面\n");
printf("[3]会员界面\n");
printf("[0]退出\n");
printf("----------------------------------------\n");
printf("请操作:");
}
void run_main(){//运行程序
while(1){//一直循环
system("clear");//清屏
show_main();//进入界面
int opt =0;
char ppt=0;
int i;
scanf("%d",&opt);
scanf("%*c",&ppt);
switch(opt){//条件判断
case 1:
for(i=0;i<3;i++){
if(init_super() ==1){
run_super();
break;
}else{
printf("密码错误");
}
printf("\n");
}
break;
case 2:
for(i=0;i<3;i++){
if(init_general() ==1){
run_general();
break;
}else{
printf("密码错误");
}
printf("\n");
}
break;
case 3:
run_member();
break;
case 0:
return;
}
}
}
void run_super(){//运行
load_manager("mag.dat");
while(true){
int opt =0;
show_super();
scanf("%d",&opt);
system("clear");
Manager m= {};
switch(opt){
case 1:
scan_manager(&m,i);
add_manager(&m);
break;
case 2:
delete_manager();
break;
case 3:
change_manager(pm);
break;
case 4:
find_manager(pm);
break;
case 5:
list_manager();
break;
case 0:
save_manager("mag.dat");
return;break;
default:
printf("操作无效!\n");
}
}
}
void show_super(){//界面
printf("-----------------------------------------\n");
printf("************超级管理员界面***************\n");
printf("[1]添加普通管理员\n");
printf("[2]删除普通管理员\n");
printf("[3]修改普通管理员\n");
printf("[4]查找普通管理员\n");
printf("[5]列出所有管理员\n");
printf("[0]退出\n");
printf("-----------------------------------------\n");
printf("请操作:");
}
其次我们来看看超级管理员界面(对普通管理员的增删改查)
void scan_manager(Manager *pm,int i){//输入数据
pm->no=i;
printf("请输入管理员密码:");
scanf("%s",pm->password);
printf("请输入管理员姓名:");
scanf("%s",pm->name);
printf("请输入管理员年龄:");
scanf("%d",&pm->age);
printf("请输入管理员岗位:");
scanf("%s",pm->post);
printf("添加成功!\n");
}
void find_manager(Manager *pm){//查找管理员
printf("请输入你要查找的员工编号\n");
int find_no=0;
scanf("%d",&find_no);
pm=pm+find_manager_to(pm,find_no);
printf("编号 密码 姓名 年龄 岗位\n");
show_manager_in_fo(pm);
}
void delete_manager(){//删除管理员
if(mcnt==0){
printf("当前无管理员!\n");
return;
}
int m_no=0;
printf("请输入你要删除的管理员编号:");
scanf("%d",&m_no);
*(pm+find_manager_to(pm,m_no))=*(pm+mcnt-1);//删除
mcnt--;
printf("删除成功\n");
}
void change_manager(Manager *pm){//修改
int m_no;
printf("请输入要修改的管理员编号:");
scanf("%d",&m_no);
int i=find_manager_to(pm,m_no);
while(true){
system("clear");
printf("请输入要修改的管理员信息:\n");
printf("1.姓名 2.年龄 3.岗位 0.返回上一层\n");
int m_c;
scanf("%d",&m_c);
switch(m_c){
case 1:
printf("请输入姓名:\n");
scanf("%s",(pm+i)->name);
printf("修改成功\n");
break;
case 2:
printf("请输入年龄:\n");
scanf("%d",&(pm+i)->age);
printf("修改成功\n");
break;
case 3:
printf("请输入岗位:\n");
scanf("%s",(pm+i)->post);
printf("修改成功\n");
break;
case 0:
return;
default:
printf("输入无效,请重新输入\n");
}
// getch();
}
}