C语言课程设计订单管理系统.pdf

上传人:tbuqq 文档编号:5493550 上传时间:2020-05-23 格式:PDF 页数:28 大小:347.55KB
返回 下载 相关 举报
C语言课程设计订单管理系统.pdf_第1页
第1页 / 共28页
C语言课程设计订单管理系统.pdf_第2页
第2页 / 共28页
C语言课程设计订单管理系统.pdf_第3页
第3页 / 共28页
C语言课程设计订单管理系统.pdf_第4页
第4页 / 共28页
C语言课程设计订单管理系统.pdf_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《C语言课程设计订单管理系统.pdf》由会员分享,可在线阅读,更多相关《C语言课程设计订单管理系统.pdf(28页珍藏版)》请在三一文库上搜索。

1、实用文案 标准文档 C语言课程设计 随米打印订单管理系统 学院:计算机与信息科学学院 学生姓名:谢润发 指导教师:王新祥职称教授 专业:网络工程 班级: 1501 完成时间: 2016-6 2 目录 1 问题要求及任务描述 3 1.1 题目要求 3 1.2 主要任务 3 2 解决问题的主要思路和方法 4 2.1 关键问题 4 2.2 拟采用解决问题的方法 4 2.3 主要算法和处理流程图 5 3 程序实现 6 3.1 程序实现时应考虑的问题 6 3.2 主要源代码及说明 6 4 测试或调试 . 22 4.1 调试过程: . 22 6 参考文献: 28 3 1 问题要求及任务描述 1.1 题目要

2、求 设计随米打印订单系统, 要求订单编号 , 文件名 , 打印份数 , 单双面打印方式 , 打印状态 , 送货状态信息 , 地址信息和联系人电话信息。 试设计“随米”打印订单 处理系统,使之能提供以下功能: (1) 主菜单 :进入系统需要密码核实确认,登入系统以菜单的方式工作 (2) 浏览打印订单信息:可以浏览全部订单信息 (3) 添加订单信息:可以添加订单信息(以文件形式保存) (4) 删除订单信息:可以删除订单信息 (5) 修改订单信息:可以修改订单人员信息 (6) 查询订单信息:可以任意查出某种状态的所有订单 (7) 退出系统 1.2 主要任务 (1) 根据题目要求,由于订单信息是存放在

3、文件中,所以应提供文件的输入 和输出等操作; (2) 应提供一个界面来调用各个功能; (3) 功能模块 : 本人负责程序设计与订单信息浏览、添加、删除功能。 4 2 解决问题的主要思路和方法 2.1 关键问题 如何将信息用文本的方式正确的保存下来,再不出错的读取。 如何将信息标 准化的输出在程序中。 (1) 为查询订单信息的人提供了一个简单而又真实的情境,使一目了然。 (2) 提供各种工具,充分发挥网络的共享性、开放性和交互性等特点,让使 用者充分发挥其主导作用。 (3) 利用系统,为消费操作者提供方便快捷的操作,为其搭好支架,很好的 引导和帮助使用者的使用。 (4) 在基本要求达成后,进行创

4、新,如进行删除和插件操作。 (5) 需要列出程序清单,并加以诠释写出调试程序的方法。 2.2 拟采用解决问题的方法 首先将 c 文件基础知识了解清楚 , 即文件的基本标志 , 文件的分类 , 文件的 缓冲区 . 熟悉 C文件的引用 , 以及在文件读写时文件使用方式即(r,w,a,rb,wb,ab 等)的区别 . 熟悉使用链表和指针使程序的运行效率更高, 熟练输出的操作使得数据的操 作更加美观 . 5 2.3 主要算法和处理流程图 开始 是否首次进 入系统 注册管理员 账户 验证账户密 码登录系统 账户名密码 匹配 主菜单 添加订单信 息 浏览订单信 息 查询订单信 息 修改订单信 息 删除订单

5、信 息 退出系统 Y N Y N 是否保存 写入数据 Y 登录次数 小于等于 3 次 ? Y N 结束 6 3 程序实现 3.1 程序实现时应考虑的问题 要考虑到数据的安全性和数据的读取速度, 以及程序的便捷使用性 ; 3.2 主要源代码及说明 struct account /定义账户名和密码结构体 char name20; char pwd20; ; struct ord /定义订单结构体 char id10; / 订单编号 char name20; / 文件名 char num10; /打印份数 char type20; / 单双面 char status10; /打印状态 char st

6、atus210; / 送货状态 char address20; /地址 char price20; / 价格 char phone15; /联系人电话 ; / 主要函数 int main() login(); return 0; void submit() /系统首次建立管理员账户 7 struct account admin; char pwd20; /用于注册第二次确认密码 int flag=0; FILE *fp; if(fp=fopen(“account.txt“,“r“)=NULL) / 如果没有账户信息新 建管理员信息 MessageBox(NULL,“无 管 理 员 账 户 请

7、首 次 建 立 账 户 !“,“信 息 “,MB_ICONWARNING); printf(“nnt请输入管理员账户名 :“); scanf(“%s“,admin.name); do / 两次确认管理员密码是否输 入正确 printf(“nnt请输入管理员密码 :“); scanf(“%s“,admin.pwd); printf(“nnt请再次输入管理员密码 :“); scanf(“%s“,pwd); if(strcmp(admin.pwd,pwd)=0) flag=1; else printf(“nnt你输的账户名和密码不匹配请重新输入密码 “);/ while(flag!=1); prin

8、tf(“nnt注册成功 , 请牢记你的账户名和密码!“); / 将注册的账户密码信息保存到文件 fp=fopen(“account.txt“,“a“); fwrite( 8 fclose(fp);/关闭指针指向 getchar(); getchar(); system(“cls“); / 登录系统 void login() system(“cls“); int static count=0; / 定义静态变量 count 统计输入次数 char name20,pwd20; FILE *fp; struct account admin; / 用户名和密码 submit(); printf(“nn

9、ttt*欢迎进入 *“); printf(“nnttt* 随 米 打 印 -送 货 上 床 *“); printf(“nnttt* 管 理系 统 *“); fp=fopen(“account.txt“,“r“); fread( fclose(fp); printf(“nnt请输入您的账户名: “); scanf(“%s“,name); printf(“nnt请输入您的密码: “); scanf(“%s“,pwd); count+; 9 / 比较用户输入的账户名和密码是否匹配 if(strcmp(name,admin.name)=0 /信息提示 else if(count=3)/三次登录系统机会

10、 printf(“nnt输入次数错误过多无法登陆系统“); else printf(“nnt你输入的账户名或密码错误按ENTER 请重新输入 “,3-count); getchar(); getchar(); / 提示重新输入 login(); getchar(); getchar(); menu(); void menu () system(“cls“); int option=0,count=0; printf(“nntt*-随米打印管理 -*“); printf(“nntt*主菜单 10 -*“); printf(“nntt*1浏览打印订单信息 -*“); printf(“nntt*2添

11、加订单信息 -*“); printf(“nntt*3查询订单信息 -*“); printf(“nntt*4修改订单信息 -*“); printf(“nntt*5删除订单信息 -*“); printf(“nntt*6退出客房系统 -*“); / 用 switch 来进行选择操作 do if(count=0) printf(“nnt请选择你要进行的操作16n“); else printf(“nnt你输入的信息有误请重新选择操作(16)n“); count+; scanf(“%d“, while(option6); switch(option) case 1:view();break; case 2

12、:add();break; case 3:search();break; 11 case 4:update();break; case 5:del();break; case 6:system(“exit“);break; void view() system(“cls“); struct ord infoN; int count=0,i; FILE *fp; printf(“nnttt*欢迎进入 *“); printf(“nntttt* 随 米 打 印 -送 货 上 床 *“); printf(“nnttt* 订 单 浏 览 系 统 *“); / 打开读取文件 if(fp=fopen(“or

13、der.txt“,“r“)=NULL)/说明文件不存在 printf(“nt暂无订单信息 “); else / 如果能打开文件 , 则循环读取文件中数据 while(!feof(fp)/feof:file end of fread( count+; fclose(fp); 12 printf(“nn打印单号 t打印文件名 t打印数量 t单/ 双面 t打印 状态t 配送状态 t 配送宿舍 t 联系电话 “);/遍历数据 for(i=0;i0) for(i=0;icount-1;i+) if(strcmp(info.id,infosi.id)=0) / 判断订单单号是否 已经存在 printf(“

14、nt该编号已经存在请重新输入“); break; while(icount-1); printf(“nnt请输入联系人电话号码 :“); /用户输入信息 scanf(“%s“, printf(“nnt请输入打印文件名 :“); scanf(“%s“, 14 printf(“nnt请输入订单数量(份) :“); scanf(“%s“, printf(“nnt请输入打印单双面类型 :“); scanf(“%s“, printf(“nnt请输入配送宿舍地址 :“); scanf(“%s“, strcpy(info.status,“未打印 “); strcpy(info.status2,“未配送 “)

15、; flag=MessageBox(NULL,“ 你 确 定 要 添 加 此 次 信 息 吗 ?“,“信 息 确 认 “,MB_YESNO|MB_ICONWARNING); / 存入数据文件 printf(“nn打印单号 t打印文件名 t打印数量 t单/ 双面 t打印状态 t 配送状态 t配送宿舍 t 联系电话 “); printf(“nn%-8st%-8st%-8st%-8st%-8st%-8st%-8st%-8s“,info. id,info.name,info.num,info.type,info.status,info.status2,info.address ,info.phone)

16、; if(flag) fp=fopen(“order.txt“,“a“); fwrite( fclose(fp); printf(“nt数据添加成功 “); getchar(); getchar(); menu(); 15 void search() system(“cls“); struct ord infosN,infoN; FILE *fp; int count=0,i=0,j=0,total=0; char status10; printf(“nnt*欢 迎 随 米 打 印 管 理 系 统 *“); printf(“nnt-查询订单信息 -“); if(fp=fopen(“order.

17、txt“,“r“)=NULL) printf(“暂无订单信息 !“); else while(!feof(fp) fread( count+; fclose(fp); printf(“nnt请输入要查询订单的状态:“); scanf(“%s“,status); for(i=0;icount-1;i+) if(strcmp(status,infosi.status)=0) 16 infototal=infosi; total+; if(strcmp(status,infosi.status2)=0) infototal=infosi; total+; if(total=0) printf(“nn

18、t暂无此状态的订单 “); else printf(“nn打印单号 t打印文件名 t打印数量 t单/ 双面 t打印状态 t 配送状态 t配送宿舍 t 联系电话 “); for(j=0;jtotal;j+) printf(“nn%-8st%-8st%-8st%-8st%-8st%-8st%-8st%-8s“,info j.id,infoj.name,infoj.num,infoj.type,infoj.status,infoj.st atus2,infoj.address,infoj.phone); getchar(); getchar(); menu(); 17 void update() s

19、ystem(“cls“); struct ord infosN; FILE *fp; int count=0,i=0,j=0,flag=0,flag2=0; int print=0,send=0; /订单状态 2 个 char id10; printf(“nnttt*欢迎进入 *“); printf(“nnttt* 随 米 打 印 -送 货 上 床 *“); printf(“nnttt* 订 单 管 理 系 统 *“); if(fp=fopen(“order.txt“,“r“)=NULL)/读取文件数据是否存在 printf(“nt暂无订单信息 .“); else while(!feof(fp

20、) fread(/将数据循环存 入数组中 count+; fclose(fp); printf(“nt请输入要管理的订单编号 :“); 18 scanf(“%s“,id); for(i=0;icount-1;i+) if(strcmp(infosi.id,id)=0) printf(“nn打印单号 t打印文件名 t打印数量 t单/ 双面 t 打印状态 t配送状态 t 配送宿舍 t联系电话 “); printf(“nn%-8st%-8st%-8st%-8st%-8st%-8st%-8st%-8s“,infos i.id,infosi.name,infosi.num,infosi.type,inf

21、osi.status,infos i.status2,infosi.address,infosi.phone); flag2=MessageBox(NULL,“ 将订单标记为已打印状态请选择是, 将订 单标记为未打印状态请选择否“,“ 信息确认 “,MB_YESNO|MB_ICONWARNING); if(flag2=6) strcpy(infosi.status,“已打印 “); printf(“nnt订单%s已打印 “,infosi.id); flag=1; else strcpy(infosi.status,“未打印 “); printf(“nnt标记为未打印 “); break; if

22、(i=count-1) 19 printf(“nt对不起暂无该订单信息 “); else if(flag=1) / 已经被打印的订单才能被标记为已配送 flag2=MessageBox(NULL,“ 将订单标记为已配送状态请选择是, 将订 单标记为未配送状态请选择否“,“ 信息提示 “,MB_YESNO|MB_ICONWARNING); if(flag2=6) strcpy(infosi.status2,“已配送 “); printf(“nnt订单%s已配送 “,infosi.id); else strcpy(infosi.status2,“未配送“); printf(“nnt标记为未配送 “

23、); fp=fopen(“order.txt“,“w“); for(i=0;icount-1;i+) fwrite( fclose(fp); printf(“nt订单管理成功 “); getchar(); getchar(); menu(); 20 void del() system(“cls“); struct ord infosN; FILE *fp; int count=0,i=0,j; char roomid10; printf(“nnttt*欢迎进入 *“); printf(“nnttt* 随 米 打 印 -送 货 上 床 *“); printf(“nnttt* 删 除 上 订 单

24、信 息 *“); if(fp=fopen(“order.txt“,“r“)=NULL) printf(“暂无订单信息无法删除 !“); else while(!feof(fp) fread( count+; fclose(fp); printf(“nnt请输入要删除的订单编号:“); scanf(“%s“,roomid); for(i=0;icount-1;i+) 21 if(strcmp(infosi.id,roomid)=0) break; if(i=count-1) printf(“nnt你输入的订单编号不存在;“); else fp=fopen(“order.txt“,“w“); fo

25、r(j=0;jcount-1;j+) if(j=i) continue; else fwrite( printf(“nnt删除客房成功 ;“); fclose(fp); getchar(); getchar(); menu(); 22 4 测试或调试 4.1 调试过程: (1) 登入系统界面 首次进入系统要求注册账户 非首次系统要求输入账户名及密码登录系统 23 (2) 主界面 ( 输入正确账户名即密码进入主界面) (3) 浏览全部订单信息 如果没有订单信息 24 有订单信息 (4) 添加订单信息 25 确定订单信息 : (5) 删除订单竞聘信息 26 (6) 查询订单 (7) 5 小结 5.

26、1本问题解决方法及程序实现小结 问题: 删除订单操作时虽然系统显示已经删除, 但是在浏览订单时发现并没 有删除 小结:几个月前和室友一起开了打印店, 我们的服务宗旨是随米打印送货上 门. 因此有时订单量过大 , 会出现配送混乱的现象 , 由此想设计一个系统来管理所 有订单 . 经过 C 语言的学习我和室友一起设计了此系统, 首先我遇到的问题是在 关于文件操作的方面的知识的缺失. 在自己有关文件操作知识和老师的指导下一 步步完善此系统 , 在编写过程中在删除订单这一功能实现时发现虽然提示输出已 经删除但是在系统浏览时还是发现订单存在, 最终使用 debug 调试发现在循环写 入数据时出错最终改正

27、. 同时在输出所有数据的时候由于结构体包含数据多, 订 单信息中的文件名又不是统一字数导致输出杂乱无章, 最终在输出时统一宽度使 得界面美观有规则 . 课程设计它是一项任务,更是一种挑战和历练。在课程设计中,我着重对C 语言不足方面的知识进行了分析与理解,在这一过程中对文件的操作有了很大的 提高. 27 5.2 尚未解决的问题及下一步工作思路 系统有待进一步改善,尚未解决的问题: 在注册和登录系统的时候应该将密码隐藏起来而不是使用明文的方式以 增加系统的安全性。 系统保存在硬盘的文件没有使用加密文档而是简单的二进制编码,这样容 易泄露用户信息,同时在系统生成的文件并没有设置文件的读取权限可自由删 除,可能会导致信息的丢失 28 6 参考文献: 1 谭浩强 . C程序设计北京:清华大学出版社,2005 2 谭浩强 . C程序解与上机指导 M 北京:清华大学出版社, 2005 3 谭浩强 . C程序设计教程北京:清华大学出版社,2007 4 高寿福 . PHP程序设计导论 M 北京: 科海电子出版社 ,2003

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1