西安郵電大学C语言课程设计报告题目:相机销售管理系统院系名称:计算机学院专业名称:计算机科学与技术班级:学生姓名:学号(8位):指导教师:设计起止时间:一.设计目的1:数量掌握c语言编程,并灵活营运函数实现不同的功能;2:用c语言编写相机销售管理系统的程序;3:更深入了解c语言,牢记其中各注意事项。二.设计内容相机销售管理系统:参数:相机型号(品牌version),感光器件(sensetization),市场价(price),光学变焦倍数(optical_zoom),最大像素(highest_pixel)。提供的功能:1:系统界面处理(包括密码登陆,密码的修改等);2:系统工作方式,以菜单方式工作;3:商户功能a:相机参数及内容的顺序输出(按市场价高低);b:相机参数及内容的录入与信息的增加——输入;c:相机参数及内容的显示——输出;d:相机参数及内容的选择删除;e:相机参数及内容的修改;f:相机参数及内容的查询与统计(1):按型号(品牌)(2):按感光器件(3):按市场价(4):按光学变焦倍数(5):按像素4:用户功能a:相机参数及内容的显示——输出;b:相机参数及内容的查询与统计(1):按型号(品牌)(2):按感光器件(3):按市场价(4):按光学变焦倍数(5):按像素c:相机参数及内容的顺序输出(按市场价高低)三.概要设计1.功能模块图;密码管理密码登录修改密码商户管理用户管理读文本顺序输出菜单(登录界面、主菜单)进入系统查找信息删除文件修改信息增加文件读文本查找信息顺序输出型号市场价感光器件光学变焦倍数最大像素型号main()主函数2.各个模块详细的功能描述。●主函数:voidmain();●登录菜单:voidheadmean();//进入主系统●进入系统选择服务voidMainMenu();//用户选择系统●选择服务(1):IntCipherTest();//用户密码检验voidRevisalCipher();//密码修改(2):进入主菜单:headmean();●用户选择voidMainMenu();//用户选择系统●正式使用系统voidopensurface_1();//商户管理界面voidc;//客户管理界面●商户管理voidsave_inf(LinklistL);//创建文件voidread_file();//读文件voidinter_sort_s();//商户进入排序操作voidadd_file();//增加文件信息Linklistdelect_mean();//进入删除操作voidamend_file();//进入修改操作voidfind_message_s();//进入商户查找操作●客户管理voidread_file();//读文件voidinter_sort_c();//客户进入排序操作voidfind_message_c();//进入客户查找操作●菜单函数:voidint_mean();//系统主菜单voidinter_mean();//功能主菜单voidsurface_1();//商户菜单voidsurface_2();//用户菜单voidamend_mean();//修改项菜单voidfind_mean();//查找并统计菜单四.详细设计1.功能函数的调用关系图;main()主函数save_inf(LinklistL)headmean()opensurface_1()inter_sort_s()CipherTest()add_file()amend_file()read_file()find_message_s()delect_mean()Opensurface_2()read_file()inter_sort_c()find_message_c()2.各功能函数的数据流程图;执行CipherTest()函数1:密码,执行CipherTest()函数2读取信息函数,执行read_file()函数开始打开文件将文件信息存到链表中输出链表信息结束开始判断输入密码是否正确密码修改结束3:按价格顺序输出,执行sort_s()函数4:增加信息,执行add_file()函数结束开始将文本信息存到链表中保留前驱结点进入排序循环若第i项价格小于其后所比较的交换两个信息改链5:删除信息,执行delect_mean()函数6:修改信息,执行amend_file()函数开始结束将文本信息存到链表中找到要删除的信息将删除信息的前个结点与其后结点相接,释放删除的信息空间保存文本结束开始创见链表添加信息到链表中将链表存到文本中保存文本7:查找信息并统计,执行find_message_s()函数开始结束将文本信息存到链表中选择寻找信息的方式根据查找方式找到所查信息保存文本进入循环查找输出所查找信息语气查找的结果数开始结束将文本信息存到链表中找到要修改的信息将修改项的新信息重新输入保存文本3.重点设计及编码(其中主函数)。1:密码验证与密码修改(实现密码错误时可再次输入)voidRevisalCipher()//密码修改{charc2[6],c[6];printf(请输入新的6位数密码:\n);scanf(%s,c2);printf(请再次输入您的密码:\n);scanf(%s,c);system(cls);if(strcmp(c2,c)==0)printf(密码修改成功!\n);printf(\n);printf(\n);}intCipherTest()//密码管理{charc1[6],c2[]=111111;intm;system(cls);printf(\n\n\n\n);do{printf(请输入您的密码(首次进入为6位初始密码)\n);flushall();scanf(%s,c1);//c1=getchar();if(strcmp(c1,c2)==0){printf(\n);return1;}else{printf(密码输入错误,请重新出入!\n);printf(是否重新输入(重新输入请键入1;退出请键入0):\n);scanf(%d,&m);}flushall();}while(m==1);return0;}2:显示文本信息(将文本信息存到链表中)Linklistread_inf()//从指定文件中读取信息并存入单链表中{Linklisthead;Mobel*p,*s;FILE*fp;charfilename[40];inti=0;system(cls);flushall();printf(读文件请输入文件名(f://b.txt有文件):\n);gets(filename);for(;(fp=fopen(filename,rt))==NULL;){printf(读文件失败,请重新输入文件名:\n);flushall();gets(filename);}3:输出链表信息(要有一个指向指针)voidprint_inf(LinklistL)//输出链表信息{Mobel*p;system(cls);printf(该品牌信息如下:\n);printf(\n);printf(型号最大像素(万)市场价(元)光学变焦倍数感光器件\n);for(p=L-next;p-next!=NULL;p=p-next)printf(%-15s%-15d%-15d%-15d%-5s\n,p-version,p-highest_pixel,p-price,p-optical_zoom,p-sensetization);flushall();printf(\n);}4:顺序输出(排序函数关键在找最大节点的位置时能记录前一节点的位置,并实现链表的重新连接)Linklistsort_price()//排序{Linklisthead;Mobel*pre,*mid,*m,*p;head=read_inf();p=head-next;while(p!=NULL){mid=head-next;if(head-pricehead-next-price){head-next=mid-next;mid-next=head;head=mid;}pre=head;mid=head-next;m=mid-next;while(mid-next!=NULL){if(mid-pricem-price){pre-next=mid-next;mid-next=m-next;m-next=mid;}pre=pre-next;mid=pre-next;m=mid-next;}p=p-next;}returnhead;}5:修改函数主要是对修改项的选择Linklistamend(LinklistL)//修改链表{charversion[10];Mobel*p;//intn;charm;amend_mean();printf(\n);printf(请正确输入要修改内容所对应的型号:\n);flushall();gets(version);p=L-next;//for(p=L;strcmp(p-version,Version)!=0&&p!=NULL;p=p-next)//错在这//;printf(正确:\n);while(p!=NULL&&strcmp(p-version,version))p=p-next;if(p!=NULL){amend_mean();printf(请选择要修改的项目:\n);scanf(%d,&m);printf(\n);switch(m){case1:printf(请输入新型号的内容:\n);flushall();gets(p-version);loop_amend(L);break;case2:printf(请输入最新价格:\n);scanf(%d,&p-price);loop_amend(L);break;case3:printf(请输入最大像素:\n);scanf(%d,&p-highest_pixel);loop_amend(L);break;case4:printf(请输入光学变焦倍数:\n);scanf(%d,&p-optical_zoom);loop_amend(L);break;case5:printf(请输入最大像素的内容:\n);flushall();gets(p-sensetization);loop_amend(L);break;case6:opensurface_1();break;case7:break;default:printf(按任意键返回上一界面);getch();opensurface_1();break;}}else{printf(型号输入错误,无此型号\n);amend(L);}returnL;}6:删除函数中主要是前驱结点与后接结点的链接,并释放所删除项的空间Linklistdelect_link(LinklistL){Mobel*p,*s;charm,version[10];flushall();printf(确定要进行删除文件操作yorn:\n);scanf(%c,&m);if(m=='y'||m=='Y'){s=(Mobel*)malloc(sizeof(Mobel));printf(请输入要删除的型号\n);flushall();gets(version);for(s=L,p=L-next;p!=NULL&&strcmp(p-version,version);s=s-next,p=p-next);if(p!=NULL){s-next=p-next;free(p);printf(删除成功\n);delect_link(L);}else{printf(输入型号错误\n);}}elseif(m=='n'||m=='N'){flushall();printf(按任意键显示删改后内容);getch();print_inf(L);}else{printf(输入错误\n);delect_l