C语言课程设计随米打印订单管理系统学院:计算机与信息科学学院学生姓名:谢润发指导教师:王新祥职称教授专业:网络工程班级:1501完成时间:2016-62目录1问题要求及任务描述.....................................................................................31.1题目要求................................................................................................31.2主要任务................................................................................................32解决问题的主要思路和方法.........................................................................42.1关键问题................................................................................................42.2拟采用解决问题的方法........................................................................42.3主要算法和处理流程图........................................................................53程序实现.........................................................................................................63.1程序实现时应考虑的问题....................................................................63.2主要源代码及说明................................................................................64测试或调试...................................................................................................214.1调试过程:..........................................................................................216参考文献:....................................................................................................2731问题要求及任务描述1.1题目要求设计随米打印订单系统,要求订单编号,文件名,打印份数,单双面打印方式,打印状态,送货状态信息,地址信息和联系人电话信息。试设计“随米”打印订单处理系统,使之能提供以下功能:(1)主菜单:进入系统需要密码核实确认,登入系统以菜单的方式工作(2)浏览打印订单信息:可以浏览全部订单信息(3)添加订单信息:可以添加订单信息(以文件形式保存)(4)删除订单信息:可以删除订单信息(5)修改订单信息:可以修改订单人员信息(6)查询订单信息:可以任意查出某种状态的所有订单(7)退出系统1.2主要任务(1)根据题目要求,由于订单信息是存放在文件中,所以应提供文件的输入和输出等操作;(2)应提供一个界面来调用各个功能;(3)功能模块:本人负责程序设计与订单信息浏览、添加、删除功能。42解决问题的主要思路和方法2.1关键问题如何将信息用文本的方式正确的保存下来,再不出错的读取。如何将信息标准化的输出在程序中。(1)为查询订单信息的人提供了一个简单而又真实的情境,使一目了然。(2)提供各种工具,充分发挥网络的共享性、开放性和交互性等特点,让使用者充分发挥其主导作用。(3)利用系统,为消费操作者提供方便快捷的操作,为其搭好支架,很好的引导和帮助使用者的使用。(4)在基本要求达成后,进行创新,如进行删除和插件操作。(5)需要列出程序清单,并加以诠释写出调试程序的方法。2.2拟采用解决问题的方法首先将c文件基础知识了解清楚,即文件的基本标志,文件的分类,文件的缓冲区.熟悉C文件的引用,以及在文件读写时文件使用方式即(r,w,a,rb,wb,ab等)的区别.熟悉使用链表和指针使程序的运行效率更高,熟练输出的操作使得数据的操作更加美观.52.3主要算法和处理流程图开始是否首次进入系统注册管理员账户验证账户密码登录系统账户名密码匹配主菜单添加订单信息浏览订单信息查询订单信息修改订单信息删除订单信息退出系统YNYN是否保存写入数据Y登录次数小于等于3次?YN结束63程序实现3.1程序实现时应考虑的问题要考虑到数据的安全性和数据的读取速度,以及程序的便捷使用性;3.2主要源代码及说明structaccount{//定义账户名和密码结构体charname[20];charpwd[20];};structord//定义订单结构体{charid[10];//订单编号charname[20];//文件名charnum[10];//打印份数chartype[20];//单双面charstatus[10];//打印状态charstatus2[10];//送货状态charaddress[20];//地址charprice[20];//价格charphone[15];//联系人电话};//主要函数intmain(){login();return0;}voidsubmit()//系统首次建立管理员账户7{structaccountadmin;charpwd[20];//用于注册第二次确认密码intflag=0;FILE*fp;if((fp=fopen(account.txt,r))==NULL)//如果没有账户信息新建管理员信息{MessageBox(NULL,无管理员账户请首次建立账户!!!,信息,MB_ICONWARNING);printf(\n\n\t请输入管理员账户名:);scanf(%s,admin.name);do{//两次确认管理员密码是否输入正确printf(\n\n\t请输入管理员密码:);scanf(%s,admin.pwd);printf(\n\n\t请再次输入管理员密码:);scanf(%s,pwd);if(strcmp(admin.pwd,pwd)==0){flag=1;}elseprintf(\n\n\t你输的账户名和密码不匹配请重新输入密码);//}while(flag!=1);printf(\n\n\t注册成功,请牢记你的账户名和密码!);//将注册的账户密码信息保存到文件fp=fopen(account.txt,a);fwrite(&admin,sizeof(structaccount),1,fp);fclose(fp);//关闭指针指向8getchar();getchar();system(cls);}}//登录系统voidlogin(){system(cls);intstaticcount=0;//定义静态变量count统计输入次数charname[20],pwd[20];FILE*fp;structaccountadmin;//用户名和密码submit();printf(\n\n\t\t\t*********************欢迎进入******************);printf(\n\n\t\t\t*********随米打印----送货上床*******);printf(\n\n\t\t\t**********管理系统********);fp=fopen(account.txt,r);fread(&admin,sizeof(structaccount),1,fp);fclose(fp);printf(\n\n\t请输入您的账户名:);scanf(%s,name);printf(\n\n\t请输入您的密码:);scanf(%s,pwd);count++;//比较用户输入的账户名和密码是否匹配if(strcmp(name,admin.name)==0&&strcmp(pwd,admin.pwd)==0){9MessageBox(NULL,登录成功,信息,MB_OK);//信息提示}else{if(count=3)//三次登录系统机会{printf(\n\n\t输入次数错误过多无法登陆系统);}else{printf(\n\n\t你输入的账户名或密码错误按ENTER请重新输入你还有%d机会,3-count);getchar();getchar();//提示重新输入login();}}getchar();getchar();menu();}voidmenu(){system(cls);intoption=0,count=0;printf(\n\n\t\t*******************-随米打印管理-*******************);printf(\n\n\t\t********************主菜单-************************);printf(\n\n\t\t**************1浏览打印订单信息-*******************);printf(\n\n\t\t*****************2添加订单信息-*******************);printf(\n\n\t\t*****************3查询订单信息-*******************);printf(\n\n\t\t*****************4修改订单信息-*******************);10printf(\n\n\t\t*****************5删除订单信息-*******************);printf(\n\n\t\t*****************6退出客房系统-*******************);//用switch来进行选择操作do{if(count==0){printf(\n\n\t请选择你要进行的操作1~6\n);}else{printf(\n\n\t你输入的信息有误请重新选择操作(1~6)\n);}count++;scanf(%d,&option);}while(option=0||option6);switch(option){case1:view();break;case2:add();break;case3:search();break;case4:update();break;case5:del();break;case6:system(exit);break;}}voidview(){system(cls);structordinfo[N];11intcount=0,i;FILE*fp;printf(\n\n\t\t\t*********************欢迎进入******************);printf(\n\nt\t\t\t*********随米打印----送货上床*******);printf(\n\n\t\t\t**********订单浏览系统********);//打开读取文件if((fp=fopen(order.txt,r))==NULL){//说明文件不存在printf(\n\t暂无订单信息)