1、在容错上有较好的能力,输错时系统会有提示,也会作出相应的反映。算法和以上的分程序有相同的优点。流程(三)查询模块基本信息的查询按查询方式:按商品的名称查询,可供选择的方式比较丰富。但本程序只使用了一种。在查询小模块中采用了直接查找的方法,这主要是由于磁盘文件无序的缘故。程序在选择结构上采用了if和else的嵌套形式,看起来有点繁杂,没有用switch语句直观明了,这个地方可以改成更好的。(四)删除模块商品信息存放在磁盘中,程序须将该文件全部取出来,在内存中把要删掉的内容除去,然后在重新输入到磁盘,这种算法比较合理,但有一点烦琐。可以改为另一种办法:设置一个标示符,对有这些标识符的记录在下次输入
2、时跳过,在新商品信息输入时,将其覆盖就行了。在对文件进行删除时,考虑到很多方面,如:查询不到时系统该如何处理等。人性化设计有在删除之前询问是否继续。流程图五)修改模块修改与删除程序相似,管理员信息存放在磁盘中,程序须将该文件全部取出来,在内存中把要修改的内容修改,然后在重新输入到磁盘,这种算法比较合理,但有一点烦琐,可以改进。四、题目分析1、按照系统需要三类用户用它作为主函数:int main() user *use; DRESS *dress; ADMIN *adm; use=(user *)malloc(200*sizeof(user); userIntiate(use); adm=(AD
3、MIN *)malloc(sizeof(ADMIN); adminIntiate(adm); dress=(DRESS *)malloc(500*sizeof(DRESS); dressIntiate(dress); while(1) if(first(use,adm,dress)=3) continue; 2、三类用户的选择登陆为int *first(user *use,ADMIN *adm,DRESS *dress) int chose; int temp,temp2; system(cls); printf( /=功能菜单=/n / /n / 1,销售员登陆 /n / 2,店长登陆 /n
4、 / 3,管理员登陆 /n /=/nn /=请选择服务的种类=/n scanf(%d,&chose); if(chose5) 你的选择出现错误!按任意键重新的进入选择菜单!n system(pause continue; switch(chose) case 1: if(userload(use)=1) usermenu(use,dress); system( break; case 2: if(monload(use)=1) monmenu(use,dress); case 3: temp=adminload(adm); if(temp=1) temp2=adminmenu(adm,use,
5、dress); return 3; continue; default: exit(0); /while()3、当选择管理员的时候就用如下程序,注明(管理员的初始账号是admin,密码是123456)int regnew(user *use) char name21; char pass7=0; int i,j; int type; 用户名:%sname); 密 码: for(i=0;iname,name)=0)pass,pass)=0) 登陆成功! strcpy(usertemp.username,name); 输入的用户名或者密码有误!1,重新登陆 2,退出登陆!chose2); if(c
6、hose2=1) break; else if(chose=0) break;int adminpass(ADMIN *adm) char pass20=0; char pass220=0; 请输入新的管理员密码:nnn 请再次输入新的管理员密码: pass2i=getch(); if(strcmp(pass,pass2)!nn 两次输入的新的密码不一样,请重新的输入!nnn elsen 密码修改成功!下一次管理员登陆请使用新的密码! strcpy(adm-pass,pass); int adminout() int chose; 你确定要注销吗? 1,注销 0,取消nn=0&=1) 你的选项
7、出现了错误,请重新的输入!pasue 管理员账户注销完毕! nnnn else return 0;int out() 真的要退出系统吗?退出后信息会全部的丢失!1,退出 0,取消 if(chose=1)exit(0); else return 1;int adminmenu(ADMIN *adm,user *use,DRESS *dress) int chose1;n 在线用户: %snn,usertemp.username); /=用户功能菜单=/n / 1,添加用户 /n printf( / 2,删除用户 /n / 3,统计用户 /n / 4,添加商品 /n / 5,删除商品 /n / 6
8、,查找商品 /n / 7,商品统计 /n / 8,修改密码 /n / 9,注销账户 /n / 0,退出系统 /nchose1); if(chose19) switch(chose1) case 1: system( regnew(use); deluser(use); useall(use); case 4: adddress(dress); case 5: deldress(dress); case 6: finddress(dress); case 7: dressall(dress); case 8: if(adminpass(adm)=1) continue; case 9: if(a
9、dminout()=1) return 3; case 0: if(out()=1) continue;int userload(user *use) for(i=0; if(usei.type=0) if(strcmp(usei.username,name)=0) if(strcmp(usei.pass,pass)=0)这里面包含了管理员的十个功能选项。4,选择销售员和店长,(注明第一次运行时本来没有销售员和店长,需要管理员添加。)int userout() 销售员账户注销完毕! strcpy(usertemp.username, / system(int sold(user *use,DR
10、ESS *dress) char name20; int num; int i; int j; int k; 请输入要出售的商品的名称:n 请输入出售的数量:num); for(k=0;kk+) if(strcmp(usek.username,usertemp.username)=0)500; if(strcmp(dressi.name,name)=0) if(dressi.nownum) break; dressi.now=dressi.now-num;nnn 商品 %s已经销售出了 %d件n,name,num); for(j=0;j100;j+) if(usek.mdbj.flag=0) strcpy(usek.mdbj.name,name); usek.mdbj.flag=1; usek.mdbj.total=num; 商品出售出现错误!请重新操作!void mounth(user *use) strcpy(name,usertemp.username); for(j=0; if(usei.mdbj.flag=1) 商品名称: %s ,出售数量 : %dn,usei.mdbj.name,usei.mdbj.total);int us
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2