C语言程序设计课程设计报告超市水果信息管理系统.doc

上传人:文库蛋蛋多 文档编号:2384698 上传时间:2023-02-17 格式:DOC 页数:27 大小:197.50KB
返回 下载 相关 举报
C语言程序设计课程设计报告超市水果信息管理系统.doc_第1页
第1页 / 共27页
C语言程序设计课程设计报告超市水果信息管理系统.doc_第2页
第2页 / 共27页
C语言程序设计课程设计报告超市水果信息管理系统.doc_第3页
第3页 / 共27页
C语言程序设计课程设计报告超市水果信息管理系统.doc_第4页
第4页 / 共27页
C语言程序设计课程设计报告超市水果信息管理系统.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《C语言程序设计课程设计报告超市水果信息管理系统.doc》由会员分享,可在线阅读,更多相关《C语言程序设计课程设计报告超市水果信息管理系统.doc(27页珍藏版)》请在三一办公上搜索。

1、 西 安 邮 电 大 学 (计算机学院)高级语言课程设计报告题 目: 超市水果信息管理系统 专业名称: XXXX班 级: XXXX 学生姓名: XXXX学号(8位): XXXXXXX指导教师: XXXX设计起止时间: 2015年12月9日2015年12月18日一 设计目的 熟练掌握C语言课程中学习到的理论知识,通过一个信息管理系统的实现来加强对C语言结构体数组,文件操作的理解,运用C语言的知识解决实际问题。二 设计内容 通过C语言实现一个水果信息管理系统。每一种水果都有对应的编号,名称,保质期(天),库存量(kg)。系统功能包括: 1. 欢迎界面,包括用户名,密码。2. 主界面,有各个模块的选

2、择,如信息录入,信息显示,信息查找,信息排序,信息插入,信息修改,信息删除以及退出系统。可以实现不同的功能。三概要设计1.功能模块图编号与名称是否匹配1. 按库存量排序2. 按编号排序2. 按编号查找1. 按名称查找3. 查找水果信息2. 显示水果信息4. 排序水果信息7. 删除水果信息5. 插入水果信息6. 修改水果信息1. 录入水果信息0. 退出系统根据菜单输入的值选择程序 菜 单登 录 开 始 成功失败NY 继续操作Y退出系统10 2. 各个模块详细的功能描述 (1).登陆模块 输入用户名和密码,若用户名和密码匹配,则进入主菜单中,若不匹配, 继续输入。 (2).录入模块 录入水果信息,

3、包括水果编号,水果名称,保质期(天),库存量(kg)。并输出你 要录入的水果信息。若继续录入选择1,结束录入并返回主菜单选择0。 (3).显示模块 将此时文件所保存的水果信息全部显示,并显示共有多少种水果。这里有一个统计 文件行数的函数,在显示模块中调用。 (4).查找模块 分为按水果名称查找和按水果编号查找。并显示所查找的水果信息。 (5).排序模块 分为按水果库存量排序和按水果编号排序,并显示排序所得结果。 (6).插入模块 输入要插入的水果的信息,并显示在屏幕上,确认是否插入。 (7).修改模块 输入要修改的水果的编号,并输入要修改的水果的名称,判断其是否匹配,若匹配, 则显示其完整信息

4、,并选择修改哪一项,输入要修改的项目的编号,修改成功后, 写入文件;若不匹配,则显示“sorry,没有这个水果的数据”。 (8).删除模块 输入要删除的水果的编号,并输入要删除的水果的名称,判断其是否匹配,若匹配, 则显示其完整信息,并选择是否删除,若删除,则删除成功后,写入文件;若不匹 配,则显示“sorry,没有这个水果的数据”。四. 详细设计1. 功能函数的调用关系图 (1).各功能函数 void menu();/主菜单 void welcome();/登录界面 void input();/ 录入 int line_number(FILE *a); / 统计文件行数 void outpu

5、t_all(); /显示全部数据 void search();/查找 void sort(); / 排序 void write_file(struct drug *p,int n); /重新将数据写入文件 struct drug import();/水果信息 void insert();/ 插入 void alter();/修改 void delect();/删除 (2).功能函数的调用关系 Welcome( )(递归调用) Menu( ) import( )Input( ) (递归调用) Output_all( ) line_number(FILE *a)Main( )Search( ) l

6、ine_number(FILE *a) write_file(struct drug *p,int n) Insert( ) line_number(FILE *a) write_file(struct drug *p,int n) alter( ) line_number(FILE *a) line_number(FILE *a) Sort( ) write_file(struct drug *p,int n) Delect() line_number(FILE *a) write_file(struct drug *p,int n) 开 始 2.各功能函数的数据流程图 (1).登陆 定义用

7、户名数组char name10,定义密码数组char code10,定义变量i。 输入用户名与密码 用户名与密码是 否匹配 N Y进入主菜单 开 始 (2).录入 定义一个结构体类型的水果,定义一个文件,定义一个变量f调用import()函数实现录入水果信息,并把水果信息存在文件中 继续录入 1 0 返回主菜单 (3) 显示 开 始 定义一个文件,定义一个结构体类型的指针变量,定义变量n,i和choice 打开文件,并调用line_number(FILE *a)函数从文件中读取存入的水果信息,并打印在屏幕上 输入1 Y N继续输入,为1止 返回主菜单 (4). 查找 开 始 定义一个文件,定义

8、变量n,i,j,choose,choice及num.定义一个结构体类型的指针变量,定义char name10 打开文件,并调用line_number(FILE *a)函数从文件中读取存入的水果信息 按水果名 称查找还是按水果 编号查找 按水果名称查找 1 2按水果编号查找 输入1 Y N继续输入,为1止 返回主菜单 (5)排序 开 始 定义一个文件,定义变量n,i,j及choice。定义结构体数组类型的指针变量和普通变量打开文件,并调用line_number(FILE *a)函数 从文件中读取存入的水果信息 按水果库存量排序 或按水果编号排序 1 2按水果编号排序按水果库存量排序 是否保 存到

9、文件中 1 2 不 保 存 保 存 输入1继续输入,为1止返回主菜单 (6).插入 开 始 定义一个文件,定义变量n,i,j,choose,choice及num.定义一个结构体类型的指针变量打开文件,并调用line_number(FILE *a)函数 输入要插入的水果信息通过比较得到正确的插入位置,并插入 是否确认其插入 输入错误,请重新输入写入文件中 1 2 (7)修改 开 始 定义一个文件,定义变量n,i,j,choose,choice及num.定义一个结构体类型的指针变量,定义char name10 打开文件,并调用line_number(FILE *a)函数 从文件中读取存入的水果信息

10、 输入水果编号,输入水果名称 判断编号与名 称是否匹配输入错误,请重新输入显示水果信息 Y N选择要修改的项目,并输入其编号已正确修改,并保存在文件中 (8) 删除 开 始 定义一个文件,定义变量n,i,j,k,r,choose,choice及num.定义一个结构体类型的指针变量,定义char name10打开文件,并调用line_number(FILE *a)函数 从文件中读取存入的水果信息 输入水果编号,输入水果名称 判断编号与名 称是否匹配 显示水果信息 Y N输入错误,请重新输入 是否删除 已正确删除,并保存于文件中请输入1,继续操作 Y N 3.重点设计及编码int line_num

11、ber(FILE *a) / 统计文件行数 int n; char ch; n = 0; while(ch = fgetc(a) != EOF) if(ch = n) n +; rewind(a); /重新定位文件指向文件开头 return n;void write_file(struct drug *p,int n) /重新将数据写入文件 FILE *fp; int i; if(fp = fopen(data.txt,w) = NULL) printf(打开文件失败n); exit(0); for(i=0;in;i+) fprintf(fp,%dt%st%dt%dn,pi.num,pi.na

12、me,pi.save_day,pi.inv); printf(写入文件成功n); fclose(fp); /删除信息模块void delect() FILE *fp; int n,i,j,k=0,r; int choose,choice; int num; int flag=0; struct drug *p; char name10; system(cls); if(fp = fopen(data.txt,r) = NULL) printf(打开文件失败n); exit(0); n = line_number(fp); p = (struct drug *)malloc(n *(sizeof

13、(struct drug); for(i=0;in;i+) if(fscanf(fp,%d%s%d%dn,&pi.num,pi.name,&pi.save_day,&pi.inv) = EOF) printf(error); fclose(fp); printf(nnt请输入水果编号:); scanf(%d,&num); printf(nt请输入水果名称:); scanf(%s,&name); for(j=0;jn;j+) if(num = pj.num) & (strcmp(name,pj.name) = 0) printf(nnt水果编号t水果名称t保质期tt库存量 nn); printf

14、(t%dtt%stt%dtt%dnn,pj.num,pj.name,pj.save_day,pj.inv); printf(确认删除: 是(1),否(0) : ); scanf(%d,&choose); flag =1; if(choose=1) for(r=j;rn;r+) pr=pr+1; k+; printf(nn已正确删除n); write_file(p,n-k); free(p); if(flag = 0) printf(ntSORRY!没有这个水果的数据n); printf(nnn请输入1,继续操作: ); scanf(%d,&choice); while(choice!=1) p

15、rintf(n输入错误,请重新输入:); scanf(%d,&choice); 五测试数据及运行结果1、正常测试数据及运行结果2、 异常测试数据及运行结果 六调试情况,设计技巧及体会1、改进方案 刚开始编写的代码功能简单,不太人性化,没有考虑全面,在不断深入 了解后,实现其可能的诸多情况。如,对于水果的信息排序问题,不但 可以用库存量排,还可以用水果编号进行排序,对于水果的修改和删除 在输入其编号和名称匹配的情况下才可以进行下一步操作。这些都是考 虑到了现实生活中的可能出现的情况。2、 体会 在逐渐完善函数模块的过程中,不断地考虑可能出现的情况,希望程序 可以趋于完善,更加合适于社会上的需求,

16、而不是单纯的C语言代码, 自己在做这个系统时,遇到很多问题,比如文件的读取与写入,TXT文 件中出现乱码,程序运行的不理想等等诸多问题。但在询求身边同学的 帮助及网上查资料后,对问题有了很好的解决,也使我对C语言的结构 体数组以及文件的操作有了深入的了解。通过实践的学习,我认识到学好计 算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机 方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己 便好地学好计算机。同时我们随时都要培养自己的动手能力,只有这样,才能更好 的适应这个日新月异的飞速发展的社会。七 参考文献 附录 源代码#include #incl

17、ude #include #includevoid menu();/主菜单void welcome();/登录界面void input();/ 录入int line_number(FILE *a); / 统计文件行数void output_all(); /显示全部数据void search();/查找 void sort(); / 排序void write_file(struct drug *p,int n); /重新将数据写入文件struct drug import();/水果信息void insert();/ 插入void alter();/修改void delect();/删除int f

18、lag1 = 1;struct drug int num;/水果编号 char name10;/水果名称 int save_day;/水果有效期 int inv;/水果库存量;/主函数int main() int choice; welcome(); while(flag1) system(cls); menu(); scanf(%d,&choice); if(choice7) printf(输入错误,请重新选择n); menu(); scanf(%d,&choice); switch (choice) case 1:input();break; /输入 case 2:output_all()

19、;break;/ 显示 case 3:search();break; /查找 case 4:sort();break;/ 排序 case 5:insert();break;/ 插入 case 6:alter();break;/修改 case 7:delect();break;/删除 case 0:flag1 = 0;break;/退出 return 0;/登陆模块void welcome() int i; char name10; char code10; printf(nnn); printf( (.) n); printf( +-oOOo-(_)-oOOo-+ nn); printf( 欢

20、 迎 使 用. n); printf( n); printf(nnnnnn 用户名: ); gets(name); printf(nnn 密码: ); for(i=0;i水果编号: );scanf(%d,&a.num);printf(n -水果名称: );scanf(%s,a.name);printf(n -有效期(天): );scanf(%d,&a.save_day);printf(n -库存量(kg): )scanf(%d,&a.inv);printf(nn您输入的水果数据为:nn);printf( 水果编号 水果名称 保质期 库存量nn);printf(%d %s %d %dnn,a.n

21、um,a.name,a.save_day,a.inv);return a;int line_number(FILE *a) / 统计文件行数int n;char ch;n = 0;while(ch = fgetc(a) != EOF) if(ch = n) n +;rewind(a); /重新定位文件指向文件开头return n;/显示信息模块void output_all() FILE *fp;int n;int i;struct drug *p;int choice;system(cls);if(fp = fopen(data.txt,r) = NULL) printf(打开文件失败n); exit(0);n = line_number(fp); printf(n *

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号