收藏 分销(赏)

相机销售系统C语言实习报告.docx

上传人:pc****0 文档编号:8957797 上传时间:2025-03-09 格式:DOCX 页数:50 大小:1.10MB
下载 相关 举报
相机销售系统C语言实习报告.docx_第1页
第1页 / 共50页
相机销售系统C语言实习报告.docx_第2页
第2页 / 共50页
点击查看更多>>
资源描述
西安郵電大学 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.各个模块详细的功能描述。 ● 主函数: void main(); ● 登录菜单: void headmean(); //进入主系统 ● 进入系统选择服务 void MainMenu(); //用户选择系统 ● 选择服务 (1):Int CipherTest(); //用户密码检验 void RevisalCipher(); //密码修改 (2):进入主菜单:headmean(); ● 用户选择 void MainMenu(); //用户选择系统 ● 正式使用系统 void opensurface_1(); //商户管理界面 void c; //客户管理界面 ● 商户管理 void save_inf(Linklist L); //创建文件 void read_file(); //读文件 void inter_sort_s(); //商户进入排序操作 void add_file(); //增加文件信息 Linklist delect_mean(); //进入删除操作 void amend_file(); //进入修改操作 void find_message_s(); //进入商户查找操作 ● 客户管理 void read_file(); //读文件 void inter_sort_c(); //客户进入排序操作 void find_message_c(); //进入客户查找操作 ● 菜单函数: void int_mean(); //系统主菜单 void inter_mean(); //功能主菜单 void surface_1(); //商户菜单 void surface_2(); //用户菜单 void amend_mean(); //修改项菜单 void find_mean(); //查找并统计菜单 四.详细设计 1.功能函数的调用关系图; main()主函数 save_inf(Linklist L) 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()函数 结束 开始 将文本信息存到链表中 保留前驱结点 进入排序循环 若第i项价格小于其后所比较的 交换两个信息 改链 4>:增加信息,执行add_file()函数 结束 开始 创见链表 添加信息到链表中 将链表存到文本中 保存文本 5>:删除信息,执行delect_mean()函数 开始 结束 将文本信息存到链表中 找到要删除的信息 将删除信息的前个结点与其后结点相接,释放删除的信息空间 保存文本 6>:修改信息,执行amend_file()函数 开始 结束 将文本信息存到链表中 找到要修改的信息 将修改项的新信息重新输入 保存文本 7>:查找信息并统计,执行find_message_s()函数 开始 结束 将文本信息存到链表中 选择寻找信息的方式 根据查找方式找到所查信息 保存文本 进入循环查找 输出所查找信息语气查找的结果数 3.重点设计及编码(其中主函数)。 1>:密码验证与密码修改(实现密码错误时可再次输入) void RevisalCipher() //密码修改 { char c2[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"); } int CipherTest() //密码管理 { char c1[6],c2[]="111111"; int m; system("cls"); printf("\n\n\n\n"); do { printf(" 请输入您的密码(首次进入为6位初始密码)\n"); flushall(); scanf("%s",c1); // c1 = getchar(); if (strcmp(c1,c2)==0) { printf("\n"); return 1; } else { printf("密码输入错误,请重新出入!\n"); printf("是否重新输入(重新输入请键入1; 退出请键入0):\n"); scanf("%d",&m); } flushall(); } while (m==1); return 0; } 2>:显示文本信息(将文本信息存到链表中) Linklist read_inf() //从指定文件中读取信息并存入单链表中 { Linklist head; Mobel *p,*s; FILE *fp; char filename[40]; int i=0; system("cls"); flushall(); printf("读文件 请输入文件名(f://b.txt有文件):\n"); gets(filename); for(; (fp = fopen(filename,"rt")) == NULL ;) { printf("读文件失败,请重新输入文件名:\n"); flushall(); gets(filename); } 3>:输出链表信息(要有一个指向指针) void print_inf(Linklist L) //输出链表信息 { 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>:顺序输出(排序函数关键在找最大节点的位置时能记录前一节点的位置,并实现链表的重新连接) Linklist sort_price() //排序 { Linklist head; Mobel *pre, *mid, *m, *p; head = read_inf(); p = head->next; while(p != NULL) { mid = head->next; if(head->price < head->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->price < m->price) { pre->next = mid->next; mid->next = m->next; m->next = mid; } pre = pre->next; mid = pre->next; m = mid->next; } p = p->next; } return head; } 5>:修改函数主要是对修改项的选择 Linklist amend(Linklist L) //修改链表 { char version[10]; Mobel *p; // int n; char m; 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) { case 1: printf(" 请输入新型号的内容:\n"); flushall(); gets(p->version); loop_amend(L); break; case 2: printf(" 请输入最新价格:\n"); scanf("%d",&p->price); loop_amend(L); break; case 3: printf(" 请输入最大像素:\n"); scanf("%d",&p->highest_pixel); loop_amend(L); break; case 4: printf(" 请输入光学变焦倍数:\n"); scanf("%d",&p->optical_zoom); loop_amend(L); break; case 5: printf(" 请输入最大像素的内容:\n"); flushall(); gets(p->sensetization); loop_amend(L); break; case 6: opensurface_1(); break; case 7: break; default: printf("按任意键返回上一界面"); getch(); opensurface_1(); break; } } else { printf("型号输入错误,无此型号\n"); amend(L); } return L; } 6>:删除函数中主要是前驱结点与后接结点的链接,并释放所删除项的空间 Linklist delect_link(Linklist L) { Mobel *p,*s; char m,version[10]; flushall(); printf("确定要进行删除文件操作 y or n:\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"); } } else if(m == 'n' || m == 'N') { flushall(); printf("按任意键显示删改后内容"); getch(); print_inf(L); } else { printf("输入错误\n"); delect_link(L); } // printf("是否返回上一界面y or n\n"); return L; } 6>:添加文本信息主要是常见链表 Linklist build_creat() //建立链表 { Linklist L; Mobel *p,*s; char version[10]; int price; int highest_pixel; int optical_zoom; char sensetization[5]; // char sensetization_size; int i = 0; L = (Linklist)malloc(sizeof(Mobel)); // s = (Mobel *)malloc(sizeof(Mobel)); L->next = NULL; p = L; flushall(); printf("请输入第一个型号(000结束):\n"); while(1) { flushall(); gets(version); if(strcmp(version,"000") != 0) { i++; // scanf("%d,%d,%d,%s",&highest_pixel,&price,&optical_zoom,&sensetization); printf("最大像素:"); scanf("%d",&highest_pixel); printf("市场价:"); scanf("%d",&price); printf("光学变焦倍数:"); scanf("%d",&optical_zoom); flushall(); printf("感光器件:"); ; gets(sensetization); // gets(sensetization_size); s = (Mobel *)malloc(sizeof(Mobel)); strcpy(s->version,version); s->highest_pixel = highest_pixel; s->price = price; s->optical_zoom = optical_zoom; strcpy(s->sensetization,sensetization); p->next = s; p = s; printf("请新增第%d个信息的型号(000结束):\n",i+1); } else { p->next = NULL; break; } } printf("共有%d个型号:\n",i); return L; } 五.测试数据及运行结果 1.正常测试数据(3组)及运行结果; 1>:主界面 2>:登陆菜单: 3>:修改密码 4>:进入系统,选择用户身份 5>:进入商户管理界面 6>:读取信息 7>:顺序输出(按价格由高到低) 8>:增加信息 9>:删除信息 10>:查找信息并统计 11>:修改信息 12>:进入客户管理系统 2.非正常测试数据(2组)及运行结果。 1>:密码输入错误可继续输入直到正确 2>:用户选择错误可在继续选择直到正确 3>:文件名输入错误可同样进行反复输入 4>:所查找信息未找到系统会提示输入错误 六.调试情况,设计技巧及体会 1.对自己的设计进行评价,指出合理和不足之处,提出改进方案; 2.对设计及调试过程的心得体会。 经过这两周的实习,确实是对c变成有了更深入的认识。C语言是一种奇妙的语言。 我做的课题是相机销售管理系统。刚开始做课程设计时说实在是不知如何下手,不知该从那方面开始。开始的一周,总在怀疑自己能不能编写出要求的程序来,总想着自己不可以,也就一定程度上开始投机取巧,三天内也只是在某个功能模块里运行处“预期”的结果,当八个模块组合起来却不能运行。放假的两天没怎么运行程序,就在反思,后来终于下决心重新编写程序,我相信我可以的。第二周,正式开始我的程序,将书中相关内容知识反复看了好几遍,并且比较深入的认识到书中的每个相关程序,对于每一模块都认真思考,模块的组合再三认证,讲过4天的努力,终于我做到了,完全是我一个人成果,这真让人兴奋。当然,其间也请教了班里的同学,这里,谢谢你们!!在我编程遇到问题时,是你们不厌其烦的帮我解决,谢谢你们。 这个课题做完后,对c,我也考虑了些。C,这种语言真是奇妙!编译时出现问题,这还好解决,可以直接根据提示找到问题所在,可要是在运行时出现问题,可真不是好解决的。C的要求真的比较苛刻,就是输入输出格式不对也会出现问题,不时出现乱码,就是直接运行不出,这点需注意。变量的类型也同等重要,需谨慎。变成的一些细小问题是要特别注意的,比如说,语句的符号怒该省的必需的有,不能有的绝不能有,中英文的区别,语句中必须是英文字符!所引用的函数必需的在所在的库函数中才能被引用,否则会出现错误。 Flushall(),这个函数,可真不可小视,不仅在gets()函数前必须加此函数外,scanf()有时也需要,否则所输入的数据视为空数据,从而影响到函数无法输入数据。 两周的实习结束,我对c有了更深入的了解,这两周,不仅是对这一年的总结应用,更是下一学年的一个好的开始!! 七.参考文献 八.附录:源代码(电子版) #include<stdio.h> #include<string.h> #include<ctype.h> #include<stdlib.h> #include<io.h> #include<conio.h> #define LEN 100 typedef struct brand_mobel //指针结构体变量 { char version[10]; char sensetization[5]; int price; int highest_pixel; int optical_zoom; // char sensetization; // char sensetization_size; struct brand_mobel *next; }*Linklist,Mobel; //函数声明 void head_mean(); //进入主系统 void int_mean(); //系统主菜单 void MainMenu(); //用户选择系统 void inter_mean(); //功能主菜单 void surface_1(); //商户菜单 void surface_2(); //用户菜单 void amend_mean(); //修改项菜单 void opensurface_1(); //商户管理主界面 void opensurface_2(); //客户管理主界面 Linklist get_L(); //得到链表 int CipherTest(); //用户密码检验 void RevisalCipher(); //密码修改 void save_inf(Linklist L); //创建文件 Linklist build_creat(); //创建链表 Linklist read_inf(); //将文件信息放到链表中 void read_file(); //读文件 void print_inf(Linklist L); //输出链表信息 void add_file(); //增加文件信息 Linklist delect_mean(); //进入删除操作 Linklist delect_link(Linklist L); //删除链表 void amend_file(); //进入修改操作 Linklist amend(Linklist L); //修改链表 void loop_amend(Linklist); //循环修改链表操作 Linklist sort_price(); //链表排序 void inter_sort_s(); //商户进入排序操作 void inter_sort_c(); //客户进入排序操作 void find_message_s(); //进入商户查找操作 void find_message_c(); //进入客户查找操作 void find_mean(); //查找并统计菜单 void save_inf(Linklist L); //将链表信息存入文件中 void find_version(); //型号查找 void find_price(); //价格查找 void find_highest_pixel(); //最高像素查找y void find_optical_zoom(); //光学变焦倍数查找 void find_sensetization(); //感光器件查找 void int_mean() //系统主菜单 { system("cls"); printf("\n\n\n"); printf(" 欢迎进入相机销售管理系统 \n"); //解决 printf("\n"); printf(" 主界面 \n"); printf("\n"); printf(" 1: 用户登录 \n"); printf("\n"); printf(" 2: 退出系统 \n"); printf("\n\n\n"); } void inter_mean() //功能主菜单 { system("cls"); printf("\n\n\n"); printf(" 欢迎进入相机销售管理系统 \n"); printf("----------------------------------------------------------------------\n"); printf("\n"); printf(" 1: 修改密码\n"); printf(" 2: 进入系统\n"); printf(" 3: 返回主菜单\n"); printf(" 4: 退出系统\n"); printf("\n\n"); printf("----------------------------------------------------------------------\n"); printf("\n\n"); } void surface_1() //商户管理主界面 { printf("\n\n"); printf("*************************商户管理主界面*************************\n"); printf("\n"); printf(" 1: 读取信息 \n"); printf(" 2: 顺序输出 \n"); printf(" 3: 增加信息 \n"); //yes printf(" 4: 删除信息 \n"); printf(" 5: 修改信息 \n"); //yes printf(" 6: 查找并统计 \n"); printf(" 7: 返回上一界面 \n"); //yes printf(" 8: 返回主菜单 \n"); printf(" 9: 退出系统 \n"); //yes printf("\n"); printf("****************************************************************\n"); printf("\n"); printf("\n"); flushall(); } void surface_2() //客户管理主界面 { printf("\n\n"); printf("*************************客户管理主界面*************************\n"); printf("\n"); printf(" 1: 读取信息 \n"); printf(" 2: 查找信息 \n"); printf(" 3: 按顺序查看信息 \n"); printf(" 4: 返回上界菜单 \n"); printf(" 5: 退出系统 \n"); printf("\n")
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 应用文书 > 报告/总结

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服