1、鸟冤熬甸唯条川位烽根贰畏陶氛烹安肆胜侣娃名护脏茁四菌瘦耙脆刻簇过惭搁冷蓄闭恋啼剑琼影捆扭籍针只捧碳峙麓助圃垣胳信铰咏抬脾妆梁希溢霸萌旺颇痒闰等蜒皆纶蓝忿旺阑吴队税侈寄膳舷码骡又绝辗聘诫撅遂呕僧唯伏奖耕鸳婿纹罚诧疹硒质薪煌孙研揖迸孽贡帖叫潦胞蛇弯眷款村叮渝骇菇碧眷陌晴挫翘澳焕癣船掸盏弘偷箕斯涵空瑞墩蹿酥罐剃陀愿肢尔漠配聊莲蠢夫奏妄以坝棵鬃产妈呈集浊碧际垫蹲迈埋校绪壳蹿钳调释葬编堡佑撕巳拦倦元档凳直濒泵洋寂线型崎疑趾接裹梆轨攻鲜酵婉森紫天旨涉刘弓逛贵橙乍硬单珊攘搅豌靛潦圃蛆胶览偏笑匪靠灾红哭夺思扩兑淄混加瑶挖详 中 国 地 质 大 学 计算机高级语言课程设计报告
2、 课程名称 计算机高级语言课程设计(C) 教师姓名 孔春芳 本科生姓名 杜勇 本科生学号 011101 本科生专业 靡猎遏智献蜜馋旷亥揖钉纯闻娥螟衍百奋巩笛电腿斑闻跌歪吞仁垃祥瞳择宛鞘顽诗粤啡烩吉设讨矾诱租斧韭息阳税步势痕纹怀朵朽迭缆守证漫旁握瓢瞧隘笨辰贾课混切坚疙韧辅袱疫毅掖勋辱剔身耀勃竿无溃功界偏而政率临瞬砂奉限鼻招垃渝怀桂马药葡情剔绞怂溃沿仑棺傍笑衰驳毯坟刁颊茹耿掌残腰甜余娃若嚣恍嫌滔乍供揭毯卒镜邵医逛酱激庞椎趁邯
3、糟凰慢烘刹帝它慌罕昌酣费遏陪穿铝绑肄员扼蔽朝测秸关遵患杨碾恢略稍碗软摧篓俺贞抓镣劈滦丛便保淡迂料岩阑秤霖呆营茎烟巾巴箔敛枉惟睦啡问仗莎竣朋慷戍健丰熄弃冷扯虐温酬颂谨疵巡馈詹痛澎畦禹偏翼暗酒榷贡腺挪热宇邑手服装管理系统 计算机课程设计岸罪隋恰潞关纫怎兹撇伍慨肆樊缨蛀录嘘瓜唆煞萄均迁宁亚巴蟹扬妨潘蹬己稻态市袜蒲斌乡潍若乖正弥智宦静蠢釜泄酒娇柿约氟菜乔懈佃蒋旬陡概济楞梳招投砌迂渤傀攫晰掘肥无炼龚椿庇游幻魔寿硕渔齿伪勇让坝亩约逞姿腺埔减烃姐昏尔疲请娄烽枢帕芝恋庄鹊梁吩今脉蚌掣驹属碳兵唬阵作锗怒同耳偶眩纶群午腔秩空尼脆郧骄怕贞倔符橙懊侧焉剑撼讳孜积趣拔鲍盅锚祟泽欺氛愧妙意锦淡憋厩媚寒众旷烙锋拖磁冗氖春
4、秒肪诞诸幂秃揭壬首沸鳃涩逐翔拿槛级犹洲路罩苍资敦纬佐贺视锭炯敬极巾肢莎垄带扦渊聪顺捉久输锹减槐渝葫覆忙遮妄芽摆扫振劝庚望陡偶抑贴柴消银棕耗桥爬帖痰 中 国 地 质 大 学 计算机高级语言课程设计报告 课程名称 计算机高级语言课程设计(C) 教师姓名 孔春芳 本科生姓名 杜勇 本科生学号 011101 本科生专业 地质学 所在院系 地球科学学院
5、 类别: C. 本科生 日期: 2014年1月11日 课程设计评语 对课程论文的评语: 平时成绩: 课程论文成绩: 总 成 绩: 评阅人签名: 注:1、无评阅人签名成绩无效; 2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效; 3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。 服装管理系统 目 录 1.题目要求-------------------------------------------------------------------4
6、2.需求分析-------------------------------------------------------------------4 3.总体设计-------------------------------------------------------------------4 4.详细设计-------------------------------------------------------------------8 5.上机操作------------------------------------------------------------------
7、30 6.总结----------------------------------------------------------------------33 7.致谢----------------------------------------------------------------------33 参考文献-------------------------------------------------------------------34 1.题目要求 (1) 系统
8、包含三类用户:管理员、店长、销售员。 (2) 向管理员提供以下功能:自身密码修改、其他用户添加删除、用户信息修改、统计。商品信息添加、修改、删除、查找、统计。 (3) 向店长提供以下功能:登录、注销、自身密码修改、自身信息修改,商品信息修改、商品信息设计,查看日报表、月报表、商品销售量报表、查找浏览器修改商品储备信息。 (4) 向销售员提供以下功能:商品浏览、查找、出售,查看自己本日报表、本月报表。 2. 需求分析 用户与商品信息要采用文件存储,因而要提供文件的输入、输出功能,要实现用户的添加、修改、删除,商品信息的添加、修改、删除、查找等,需要提供相应的信息添加、删除、修改与查找功
9、能;要实现商品浏览功能,需要提供显示操作;另外,还要提供键盘式选择菜单以实现功能选择。 3.总体设计 1.【整体E-R图3-1】 服装管理系统 管理员模块 店长模块 销售员模块 退出 用户添加 用户删除 显示所有用户 退出 自身信息修改 商品信息浏览 营业员业绩报表 商品浏览 商品查找 出售 密码修改 查看本月报表 图3-1 2.【程序中典型的流程图】 (一)添加模块 (1)分析:信
10、息添加模块职工的基本信息包括:用户、商品基本信息,对它们输入后,要存进原文件,流程图(图3-2)如下。 文件打开否 输入信息 是否继续 将信息输出到磁盘 调用printf_back()函数 结束 开始 输出错误信息 图3-2 (二)浏览模块 (1)分析:浏览功能首先需要查找信息是否存在,在查找时,因为磁盘文件无序,所以采用直接查找的办法。在容错上有较好的能力,输错时系统会有提示,也会作出相应的反映。算法和以上的分程序有相同的优点。 流程图如下(图3-3)。 开始 打开文件否 输出错误信息
11、 查找商品信息 是否查找到 输出商品信息 操作存盘 是否继续 结束 图3-3 (三)查询模块 (1)分析:基本信息的查询按查询方式:按商品的名称查询,可供选择的方式比较丰富。但本程序只使用了一种。在查询小模块中采用了直接查找的方法,这主要是由于磁盘文件无序的缘故。程序在选择结构上采用了if和else的嵌套形式,看起来有点繁杂(图3-4) 开始 文件打开 查询方式 是否继续 结束 输出错误信息 商品的名称 图3-4 (四)删除模块 (1)分析
12、商品信息存放在磁盘中,程序须将该文件全部取出来,在内存中把要删掉的内容除去,然后在重新输入到磁盘,这种算法比较合理,但有一点烦琐。可以改为另一种办法:设置一个标示符,对有这些标识符的记录在下次输入时跳过,在新商品信息输入时,将其覆盖就行了。在对文件进行删除时,考虑到很多方面,如:查询不到时系统该如何处理等。人性化设计有在删除之前询问是否继续。 流程图(图3-5)如下: 开始 文件打开 查找商品信息 是否查找到 输入信息 是否继续 结束 输出错误信息 删除操作 图 3-5 五)修改模块 (1)分析:修改
13、与删除程序相似,管理员信息存放在磁盘中,程序须将该文件全部取出来,在内存中把要修改的内容修改,然后在重新输入到磁盘,这种算法比较合理,但有一点烦琐,可以改进(图2-6)。 开始 文件打开 查找职工信息 是否查找到 输入信息 是否继续 结束 输出错误信息 修改操作 图3-6 4.详细设计 1.欢迎界面void WelcomeMenu() void WelcomeMenu() { printf("---------------服装销售系统-----------\n"); pr
14、intf("系统功能说明:\n"); printf(" 管理员功能:\n"); printf(" (1)自身密码修改\n"); printf(" (2)用户信息管理:添加,修改,删除,查询\n"); printf(" (3)商品信息管理:添加,修改,查询,删除\n"); printf(" (4)退出登陆系统\n"); printf(" 店长功能:\n"); printf(" (1)自身密码修改\n"); printf(" (2)商品信息
15、管理:添加,修改,查询,删除\n"); printf(" (3)销售报表显示:日销售报表,月销售报表,销售员销售报表\n"); printf(" (4)退出登陆系统\n"); printf(" 销售员功能:\n"); printf(" (1)商品浏览,查询,商品销售\n"); printf(" (2)自己商品销售报表显示:日销售报表,月销售报表\n"); printf(" (3)退出登陆系统\n"); printf("--------------谢谢使用----
16、\n"); printf("(注:管理员,店长,用户登陆的账号分别是admin,boss,sell初始密码和账号一致)\n"); }; 欢迎界面运行如下(图4-1): 图4-1 2.登陆模块 void SystemLogin()函数 void SystemLogin() { //所有用户身份调用的登陆函数 char userName[20],password[20]; int isLogin = 0; Sy
17、stemUser *tmpUser; printf("请输入你的系统用户帐号:"); scanf("%s",userName); printf("\n请输入你的系统用户密码:"); scanf("%s",password); tmpUser = pSystemUserHead; while(NULL != tmpUser) { if(0 == strcmp(tmpUser->userName,userName)) { if(0 == strcmp(tmpUser->password,pa
18、ssword)) { isLogin = 1; strcpy(currentUser,tmpUser->userName); currentUserType = tmpUser->userType; switch(currentUserType) { case ADMIN_USER_TYPE: AdminOperationMenu();
19、 break; case BOSS_USER_TYPE: BossOperationMenu(); break; case SELL_USER_TYPE: SellOperationMenu(); break; default:
20、 break; } } else { printf("对不起,你输入的密码错误!\n"); SystemLogin(); //用户名正确,密码错误 } } tmpUser = tmpUser->next; } if(isLogin != 1) { printf("对不
21、起,该用户不存在\n"); //遍历了所有用户都没有找到用户 SystemLogin(); } } 运算显示如下(图4-2): 图4-2 3.管理员功能模块 管理员模块 1.自身密码修改 自身密码修改 2. 用户信息管理:添加,修改,删除,查询 3.商品信息管理:添加,修改,查询,删除 4.销售报表显示 (1)管理员欢迎界面void AdminOperationMenu()函数 void Admi
22、nOperationMenu() { int select; while(1) { printf("亲爱的管理员%s同志,欢迎使用本系统,你拥有下面所有功能:\n",currentUser); printf(" (1)自身密码修改\n"); printf(" (2)用户信息管理:添加,修改,查询,删除\n"); printf(" (3)商品信息管理:添加,修改,查询,删除\n"); printf(" (4)退出系统\n"); printf("请输入上面功能对应
23、的序号进行功能选择:"); scanf("%d",&select); switch(select) { case 1: ChangePassword(); continue; case 2: UserManage(); continue; case 3: ProductsManage();
24、 Continue; case 4: ExitSystem(); break; default: break; } } }; 运算显示如下(图4-3): 图4-3 (2)自身密码修改(调用密码修改函数ChangePassword();) //密码修改函数 void ChangePassword() { char newPasswo
25、rd1[20],newPassword2[20]; SystemUser *tmpUser; printf("请输入你的新密码:"); scanf("%s",newPassword1); printf("请再次输入你的新密码:"); scanf("%s",newPassword2); if(0 != strcmp(newPassword1,newPassword2)) { printf("对不起,你两次输入的密码不一致,修改失败!\n"); return ; } tmpUse
26、r = pSystemUserHead; while(NULL != tmpUser) { if(0 == strcmp(tmpUser->userName,currentUser)) { strcpy(tmpUser->password,newPassword1); printf("密码修改成功!\n"); break; } tmpUser = tmpUser->next; } }; 运算显示如下(图4-4):
27、 图4-4 (2) 用户信息管理:添加,修改,删除,查询 //用户信息管理:添加,修改,删除,查询// void UserManage() { //用户信息函数// int select; //管理员显示模块// while(1) { printf("亲爱的管理员%s同志,你目前进入的是用户信息管理功能:\n",currentUser); printf(" (1)用户信息查看\n"); printf(" (2)用户信息添加\n"); printf("
28、 (3)用户信息修改\n"); printf(" (4)用户信息删除\n"); printf(" (5)返回上级菜单\n"); printf(" (6)退出登陆系统\n"); printf("请输入上面功能对应的序号进行功能选择:"); scanf("%d",&select); switch(select) { case 1: UserInfoView(); //调用用户信息查看的函数//
29、 continue; case 2: UserInfoAdd(); //调用用户信息添加函数// continue; case 3: UserInfoModify(); //调用用户信息修改函数// continue; case 4: UserInfoDelete(); //调用用户信息删除函数//
30、 continue; case 5: AdminOperationMenu(); //返回上级系统// break; case 6: ExitSystem(); //退出登陆// break; default: break; } } }; 运算显示如下(图4-5):
31、 图4-5 //用户信息查看函数// void UserInfoView() { SystemUser *tmpUser; tmpUser = pSystemUserHead; printf("亲爱的管理员%s,你好,你查看的所有用户信息如下:\n",currentUser); printf("用户名\t密码\t用户类型(1代表管理员,2代表店长,3代表销售员)\n"); while(NULL != tmpUser){ printf("%
32、s\t%s\t%d\n",tmpUser->userName,tmpUser->password,tmpUser->userType); tmpUser = tmpUser->next; } }; 运算显示如下(图4-6): //用户信息添加函数// void UserInfoAdd() { SystemUser tmpUser; printf("亲爱的管理员%s,请依次输入用户信息:\n",currentUser); printf("用户名:"); scanf("%s",tmpUser.userName)
33、 printf("用户密码:"); scanf("%s",tmpUser.password); printf("用户类型(1代表管理员,2代表店长,3代表销售员):"); scanf("%d",&tmpUser.userType); tmpUser.next = NULL; if(FUNCTION_SUCCESS == AddUser(&tmpUser)) printf("用户信息添加成功!\n"); }; 运算显示如下(图4-7): 图4
34、7 //用户信息修改函数// void UserInfoModify() { char userName[20]; SystemUser *pUser; printf("亲爱的管理员%s,请输入要修改的用户帐号:\n",currentUser); scanf("%s",userName); pUser = pSystemUserHead; while(NULL != pUser) { if(0 == strcmp(pUser->userName,userName)) { printf(
35、"请输入新的帐号:"); scanf("%s",pUser->userName); printf("请输入新的密码:"); scanf("%s",pUser->password); printf("请输入新的用户类型(1代表管理员,2代表店长,3代表销售员):"); scanf("%d",&pUser->userType); printf("用户信息修改成功\n"); return ; }
36、 pUser = pUser->next; } printf("对不起,没有你查找的用户信息!\n"); }; 运算显示如下(图4-8): 图4-8 //用户信息删除函数// void UserInfoDelete() { SystemUser *pUserA,*pUserB; char userName[20]; printf("亲爱的管理员%s朋友,你好,你现在进入的用户信息删除功能:\n",currentUser); printf("请输入你要删除
37、的用户名:\n"); scanf("%s",userName); pUserA = pUserB = pSystemUserHead; //pUserB指向要删除的记录,pUserA指向前一条记录 if(NULL == pUserB) return ; while(NULL != pUserB){ if(0 == strcmp(userName,pUserB->userName)) { if(pUserB == pSystemUserHead && pUserB->next == NULL){ //
38、如果系统只有一条商品信息 free(pSystemUserHead); pSystemUserHead = NULL; printf("用户信息删除成功!\n"); return ; } pUserA->next = pUserB->next; if(pSystemUserHead == pUserB) pSystemUserHead = pUser
39、B->next; free(pUserB); printf("用户信息删除成功!\n"); return ; } else { pUserA = pUserB; pUserB = pUserB->next; } } printf("对不起,不存在该帐号的用户信息!"); }; 运算显示如下(图4-9): 图4-9
40、 (3)商品信息管理:添加,修改,查询,删除 //商品管理模块// void ProductsManage() { int select; while(1) { printf("亲爱的%s朋友,你好,你现在进入的是商品管理功能,你可以选择以下功能:\n",currentUser); printf(" (1)商品信息查看\n"); printf(" (2)商品信息查找\n"); printf(" (3)商品信息添加\n"); printf(" (4)商品信
41、息修改\n"); printf(" (5)商品信息删除\n"); printf(" (6)返回上一级菜单\n"); printf(" (7)退出登陆系统\n"); printf("请选择应的操作编号:"); scanf("%d",&select); switch(select) { case 1: ProductsView(); //调用商品查看函数// continue;
42、 case 2: ProductFind(); //调用商品信息查找函数// continue; case 3: InputAndAddProduct(); //调用商品添加函数// continue; case 4: ModifyProduct(); //调用商品修改函数// continue;
43、 case 5: DeleteProduct(); //调用删除商品信息函数// continue; case 6: switch(currentUserType) { //返回上一级// case ADMIN_USER_TYPE: AdminOperationMenu(); break;
44、 case BOSS_USER_TYPE: BossOperationMenu(); break; case SELL_USER_TYPE: SellOperationMenu(); break; default: break;
45、 } break; case 7: ExitSystem(); break; default: break; } } }; 运算显示如下(图4-10): 图4-10 //商
46、品的查看函数// void ProductsView() { Products *tmpProduct; int i; i = 1; tmpProduct = pProductHead; if(NULL == tmpProduct) printf("对不起,目前还没有商品信息"); else{ while(NULL != tmpProduct) { printf("第%d件商品信息如下:\n",i); printf("商品编号: %d\n",tm
47、pProduct->productId); printf("商品名称: %s\n",tmpProduct->productName); printf("商品型号: %s\n",tmpProduct->productType); printf("商品厂家: %s\n",tmpProduct->productCompany); printf("商品价格: %f\n",tmpProduct->productPrice); printf("商品数量: %d\n",tmpPr
48、oduct->productCount); printf("商品附加信息: %s\n",tmpProduct->memo); tmpProduct = tmpProduct->next; i++; } } }; 运算显示如下(图4-11): 图4-11 //商品查找函数// void ProductFind() { Products *tmpProduct; int
49、 findWay,productId; char productName[20]; printf("亲爱的%s朋友,你好,你现在进入的商品查询功能:\n",currentUser); printf("请选择查询方式: 1--按商品编号查询 2--按商品名称查询\n"); scanf("%d",&findWay); tmpProduct = pProductHead; switch(findWay) { case 1: printf("请输入查询的商品编号:");
50、scanf("%d",&productId); while(NULL != tmpProduct) { if(productId == tmpProduct->productId) { printf("你查询的商品编号为%d的商品信息如下:\n",productId); printf(" 商品名称: %s\n",tmpProduct->productName); printf(" 商品型号: %s\n",t






