




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中南大学Central South University课程设计报告题 目: 设 计 者: 专业班级: 学 号: 指导教师: 所属院系: 2011年6月30日目录1、 课程设计的目的.12、 设计任务要求.13、 总体设计方案.24、 软件设计.45、 系统软件的调试及使用操作说明.56、 源程序清单.67、 课程设计总结228、 参考文献.221、 课程设计的目的本次“C语言程序设计实践”课程设计,是基于“C语言程序设计基础”课程学习内容的重要实践环节。它是根据教学计划的要求,在教师的指导下,对学生实施程序设计训练的必要过程,是对前期课堂学习内容的综合应用及其效果的检验和提高。通过课程设计的实践环节的教学,可以加深学生对所学内容的综合运用能力,同时也可以通过查询相关资料,培养学生自学能力,提高学习兴趣,增强学生程序设计能力,使学生得到很好的锻炼,为以后的学习打下坚实的基础。2、 设计任务要求 本次“C 语言程序设计实践”课程设计,是基于“C 语言程序设计基础”课程学习内容的重要实践环节,其主要目的在于,通过综合程序课程设计,培养和提高学生的独立分析问题、解决实际问题的能力和计算机语言编程能力。本次课程设计时间为2 周,要求每位同学在为期两周的时间段内,独立完成相关设计题所规定的任务(上机时数为20 学时)。进度安排建议如下:1、阅读设计题目、任务内容,规划设计进度,并进行软件的各相关功能模块的规划设计。2、在Turbo C(或Visual C+6.0)环境下,用结构化程序设计思想进行C 语言程序设计、功能模块调试(7-9 天)。 相关管理系统设计题的基本功能要求:l 数据文件管理功能:创建新文件、管理老文件。l 输入添加/插入记录:能够完成对任意一条记录输入、添加或插入数据表中,并保存到数据文件中。l 显示、查询记录:能够打开已存在的数据表文件,根据用户要求按所给记录关键字显示、查询一个或多个相关联记录的各项信息。l 修改记录:能够打开已存在的数据表文件,并对确定的任意记录进行修改,在修改过程中,应显示记录信息,给出确认提示,并对更新的记录信息进行文件保存。l 删除记录:能够打开已存在的数据表文件,可以删除数据表中的任一记录,要求具备逻辑删除(具有恢复功能)和物理删除功能,并对新的数据表信息进行文件保存。l 统计功能:能够打开已存在的数据表文件,对数据表中与某关键字匹配的相关记录进行数据统计(包括:总数、平均值、分段信息),例如:按课程得分为100、9099、8089、7079、6069 和不及格学生的人数,以及所占百分比。l 排序:对记录进行排序。例如:按某门课程的成绩排序,或按成绩总分进行排序等。在正确、合理的软件功能规划的基础上,进行各功能模块的设计。建议用文件包含或工程文件形式,进行逐个模块的功能调试与功能实现。切忌将多个功能模块混合一起进行调试。自顶向下,逐步细化、逐步求精,对于给定问题进行透彻的了解和详细的分析的基础上,把问题分解成若干个按顺序执行的逻辑部分,称为“模块”。每个子任务如果仍很复杂,还可以再分解为若干个子任务。如此逐层分解,对于每个模块的设计都采用这种“自顶向下、逐步细化”的方法,将它们分解成为基本结构为止。当一个程序的规模比较庞大,层次和模块比较多时,不要每次都将所有模块按顺序执行一遍,最好在每一层,至少在最高几层都设一个“菜单”。为方便用户操作,“菜单”技术已广泛使用在计算机的系统软件中,具体做法是:程序首先把各功能说明及相应代号以菜单形式显示在屏幕上,然后由用户在键盘上输入所选的功能代号,程序自动转去调用相应的功能模块进行处理。3、总体设计方案设计题目:材料管理系统设计内容:调研、选择一个典型仓库材料信息管理案例,实现材料库存、领用信息信息管理。每种材料的记录信息,包括:编号、名称、单价、入库数量、库存数量、出库数量、保管人、进货时间、出货时间和备注等。 开始设计流程图: 退出 添加函数 显示函数 排序函数 修改函数 查找函数 删除函数打开排序文件 统计函数 恢复函数 系统初始化创建新文件 显示和选择主菜单 主菜单:分别执行添加、显示、查找、删除、修改、排序、恢复、统计、打开排序文件等功能。程序代码如下: menu1() /*huanying*/ menu2() /*caidanhanshu*/printf(t n);printf(t n);printf(t *KECHEN SHEJI* n);printf(t n);printf(t *CAILIAO GUANLI XITONG* n);printf(t n);printf(t *DIANQI XINXILEI* n);printf(t n);printf(t*n);printf(t* 1. The information of add stuff *n);printf(t* 2. The information of all stuff *n);printf(t* 3. search stuff *n);printf(t* 4. Delete the information *n);printf(t* 5. Revise the information *n);printf(t* 6. Arrange the information *n);printf(t* 7. The information has been deleted *n);printf(t* 8. The cuont of the information *n);printf(t* 9. manage the file *n);printf(t* 0. Break *n);printf(t*n);在程序中应用结构体链表思想,将材料信息串起来,方便进行各个功能块的建立。其程序代码如下:struct material /*定义材料结构体类型*/int num; /*编号*/char name20; /*名称*/int price; /*单价*/int inamount; /* 入库数量*/int saveamount; /*库存数量*/int outamount; /*出库数量*/char storekeeper20; /*保管人*/int intime; /*入库时间*/int outtime; /*出库时间*/char instruction20; /*备注*/ int delet ; /*删除*/work50;static n=1;int f,g=1,e;FILE *fp1;char fname20; /*文件名*/4、 软件设计添加函数部分:在系统数据为空时,应用输入函数,依次输入材料的编号、名称、单价、入库数量、 库存数量、出库数量、保管人、入库时间、出库时间、备注等信息。当序号为零时 退出。 显示函数部分:使用输出函数,直接显示出整个材料库的情况。 查找函数部分:以材料的编号为查找依据,在整个链表里依次判断。若指针指向为空,则判定无 此材料;若输入序号与指针所指序号相同,就输出此材料信息。结束一次查找后, 则进行是否进行下一次查找的判断。删除函数部分:以材料的编号和名称为查找依据,在整个链表里依次判断。若指针指向为空,则判 定无此材料;若输入序号与指针所指序号相同,就询问时逻辑删除还是物理删除。 若是逻辑删除,则先判定回收站是否还有空位,若没有则提示无法逻辑删除,若 有则执行任务。若是物理删除,则不需要判定回收站情况,直接执行任务。删除方 式均是使前一个结点的链表指针跳过它,直接指向它的下一个结点。 修改函数部分:以图书的名称和单价为查找材料的依据,在整个链表里依次判断。若没找到相 应信息,则做出提示并结束;若找到相应信息,则进入重新输入材料信息的界 面,进行修改。结束一次修改后,则进行是否进行下一次修改的判断。 排序函数部分:根据材料的单价和数量进行排序。 恢复函数部分:先判断逻辑删除的结点的地址指针是否为空。若为空,则提示没有可恢复的 数据;若不为空,则显示可恢复信息的材料的编号供选择。若输入的号码不符合, 则提出错误,当成功恢复后再次询问是否继续恢复。 统计函数部分:使用了for循环。可对每种材料的情况,所有材料的累计单价和种类数,进 行了统计。打开文件函数部分:以文件夹名为查找依据,若输入的名称与保存的名称不符则提示出错,若名 称相符,则用输出文件显示保存的所有材料的信息。5、 系统软件的调试及使用操作说明(1) 、进入系统进入菜单后通过选择进行操作。(2) 添加文件根据系统提示进行有关材料信息的输入。(3) 显示函数输入完成后,通过显示函数列出所输入的材料信息。(4) 查找函数根据系统提示,通过材料名称或编号对材料的信息进行查找。(5) 修改函数根据系统提供信息对材料信息进行修改,修改成功后将材料信息进行保存。(6) 排序函数根据系统提供信息,以材料的单价或数量对其进行排序。(7) 恢复函数对进行了操作了的材料信息进行恢复处理。(8) 统计函数根据材料的单价对所有的材料进行统计处理。6、 源程序清单#includestruct materialint num;char name20;int price;int inamount;int saveamount;int outamount;char storekeeper20;int intime;int outtime;char instruction20;int total;int delet ; work50;static n=1;int f,g=1,e;FILE *fp1;char fname20;jianli() /*创建新文件*/int i,x=0;FILE *fp;system(cls);menu1();menu2();printf(ttt Input the fname!); scanf(%s,fname);fp=fopen(fname,rb);for(i=0;i50;i+)fread(&worki,sizeof(struct material),1,fp); if(worki.total!=0)x+; fclose(fp);n=x;r()int i;FILE *fp;if(fp=fopen(fname,rb)=NULL) printf(nnttcannot open file!n); printf(num/name/price/inputamount/Save/Output/keeper/intime/outtime/instructionn);for(i=0;in;i+) fread(&worki,sizeof(struct material),1,fp); if(worki.delet=0) printf(%-4d %-5s %-6d %-9d %-5d %-7d %-5s %-5d %-6d %-7sn,worki.num,,worki.price,worki.inamount,worki.saveamount,worki.outamount,worki.storekeeper,ime,worki.outtime,worki.instruction); fclose(fp);r1()int i;FILE *fp;if(fp=fopen(fname,rb)=NULL)printf(nnttcannot open file!n);printf(num/name/price/inputamount/Save/Output/keeper/intime/outtime/instructionn);for(i=0;in;i+)fread(&worki,sizeof(struct material),1,fp);if(worki.delet=1)printf(%-4d %-5s %-6d %-9d %-5d %-7d %-5s %-5d %-6d %-7sn,worki.num,,worki.price,worki.inamount,worki.saveamount,worki.outamount,worki.storekeeper,ime,worki.outtime,worki.instruction);fclose(fp);display2() /*显示所有信息*/int i,d=0;FILE *fp;fp=fopen(fname,rb);system(cls);menu1();printf(Follows is the information of all material!n);for(i=0;in;i+)fread(&worki,sizeof(struct material),1,fp);printf(num/name/price/inputamount/Save/Output/keeper/intime/outtime/instructionn);for(i=0;in;i+)if(worki.delet=0)d+;printf(%-4d %-5s %-6d %-9d %-5d %-7d %-5s %-5d %-6d %-7sn,worki.num,,worki.price,worki.inamount,worki.saveamount,worki.outamount,worki.storekeeper,ime,worki.outtime,worki.instruction); if(d=0)printf(Failed!try it again!n);printf( Press any figure key to return!n);scanf(%d,&i);display1() /*显示信息*/int i;int d=0;printf( This is the information after arrang:n);printf(num/name/price/inputamount/Save/Output/keeper/intime/outtime/instructionn);for(i=0;in;i+)if(worki.delet=0)d+;printf(%-4d %-5s %-6d %-9d %-5d %-7d %-5s %-5d %-6d %-7sn,worki.num,,worki.price,worki.inamount,worki.saveamount,worki.outamount,worki.storekeeper,ime,worki.outtime,worki.instruction); if(d=0)printf( Failed!try it again!n);system(pause);save() /*保存函数*/FILE *fp;int i; system(cls);menu1(); printf( Press 1 to save in the same Press 2 to save in anothern); scanf(%d,&e);while(1)if(e=1) if(fp=fopen(fname,w)=0) printf(cannot openn);return; for(i=0;in;i+) if(fwrite(&worki,sizeof(struct material), 1,fp)!=1) printf(error!n);break; else if(e=2) printf(input jianli file name!n); scanf(%s,fname); if(fp=fopen(fname,w)=0) printf(cannot openn);return; for(i=0;in;i+) if(fwrite(&worki,sizeof(struct material), 1,fp)!=1) printf(error!error!n);break; else printf(error!n); fclose(fp);system(cls);menu1();printf(OK!nn);system(pause);slect()int d,i;system(cls);menu1();menu2();scanf(%d,&d); if(d=1)add();slect();else if(d=2)display2();slect();else if(d=3)cha();slect();else if(d=4)delet();slect();else if(d=5)modify();slect();else if(d=6)order();slect();else if(d=7)recy();slect();else if(d=8)tongji();slect();else if(d=9)jianli();slect();else if(d=0)printf(exit!nn);exit(); else printf(error!n);slect();cha() /*查询*/ int i,num,c,suc=0,suc1;char name20;FILE *fp;fp=fopen(fname,rb);for(i=0;in;i+)fread(&worki,sizeof(struct material),1,fp);while(1)system(cls);menu1();printf( You have two way to see:n);printf( Press 1 to see it by name Press 2 to see it by numbern);scanf(%d,&c);system(cls);menu1(); if(c=1) printf( Input the name n); scanf(%s,name);break; else if(c=2) printf( Input the numbern); scanf(%d,&num);break; else while(1) system(cls);menu1();printf( errors!n); printf( Press 0 to try again Press 1 to returnn ); scanf(%d,&suc); if(suc=0|suc=1) break; else continue; if(suc=1)break; if(suc!=1) for(i=0;in;i+) if(strcmp(name,)=0|num=worki.num)&worki.delet=0)break; if(in) system(cls);menu1(); printf(num/name/price/inputamount/Save/Output/keeper/intime/outtime/instructionn); printf(%-4d %-5s %-6d %-9d %-5d %-7d %-5s %-5d %-6d %-7sn,worki.num,,worki.price,worki.inamount,worki.saveamount,worki.outamount,worki.storekeeper,ime,worki.outtime,worki.instruction); printf( Press any figure key to continue!n); scanf(%d,&i); else system(cls);menu1(); printf( Im sorry!It can not be found.!nn,i); printf(Press any figure key to continue!n); scanf(%d,&i); while(1) system(cls);menu1(); printf( Press 0 to try again Press 1 to returnn ); scanf(%d,&suc1); if(suc1=0|suc1=1) break; else printf( error!nn,i); printf( Press any figure key to continue!n); scanf(%d,&i); if(suc1=0) cha(); if(suc1=1) printf(bye!n); system(pause); else printf(bye!n);add() /*添加*/int e,i,num,c,h,suc=0,suc1;char name20;int a;while(suc=0)if(n50)a=n;n+;worka.delet=0;elsefor(i=0;in;i+) if(worki.delet=2)break; a=i;worka.delet=0;while(1)printf( The file has the following information:nn);system(cls);menu1();r();printf( Input the number:n);scanf(%d,&worka.num);for(h=0;hn;h+)if(h=a)h+;if(worka.num=workh.num)&workh.delet=0)break;if(hn)system(cls);menu1();printf( It is repeat! Input again!n); printf( Press any figure key to continue!n);scanf(%d,&i);else break; system(cls);menu1();r();while(1)printf( Input the name:n);scanf(%s,&);for(h=0;hn;h+)if(h=a)h+;if(strcmp(,)=0&workh.delet=0)break;if(hn)system(cls);menu1();printf( It is repeat! Input again!n); printf( Press any figure key to continue!n);scanf(%d,&i);else break;system(cls);menu1();r();printf( Input the price:n);scanf(%d,&worka.price);system(cls);menu1();r();printf( Input the inamount:n);scanf(%d,&worka.inamount);system(cls);menu1();r();printf( Input the saveamount:n);scanf(%d,&worka.saveamount);system(cls);menu1();r();worka.outamount=worka.inamount-worka.saveamount;printf( Input the storekeeper:n);scanf(%s,&worka.storekeeper);system(cls);menu1();r();printf( Input the intime:n);scanf(%d,&ime);system(cls);menu1();r();printf( Input the outtime:n);scanf(%d,&worka.outtime);system(cls);menu1();r();printf( Input the instruction:n);scanf(%s,&worka.instruction);system(cls);menu1();r();worka.delet=0;system(cls);menu1();r();while(1)printf(n);printf( Press 1 to save Press 2 to input againn);scanf(%d,&e);if(e=1)save();suc=1;break;else if(e=2)n-;break;else system(cls);menu1();printf( errors!Try it again!n);while(e=1)system(cls);menu1(); printf( press 0 to continue Press 1 to returnn); scanf(%d,&suc); if(suc=0|suc=1)break; else system(cls);menu1();printf( errors!Try it again!nn);if(suc=1)break;delet() /*删除*/char j;int e,i,num,c,suc=0;char name20;system(cls);menu1();r();while(1)printf( Input the information of the material you want to delete:name or number?n);printf(n);printf( Press 1 to input name Press 2 to input numbern);scanf(%d,&c);system(cls);menu1();r();if(c=1) printf( Input the namen); scanf(%s,name);break; else if(c=2) printf( Input the numbern); scanf(%d,&num);break; else while(1) printf(Errors!n); printf( Press 0 to input again Press 1 to confirmn ); scanf(%d,&suc); if(suc=0|suc=1) break; else continue; if(suc=1)break;if(suc!=1) for(i=0;in;i+) if(strcmp(name,)=0|num=worki.num)&worki.delet=0)break; if(i=n)system(cls);menu1(); printf( Im sorry! It can not be found.!nn,i); printf( Press any figure key to continue!n); scanf(%d,&i);while(1)system(cls);menu1(); printf( Press 0 to continue Press 1 to return 1n);scanf(%d,&e); if(e=0|e=1)break; else system(cls);menu1();printf( Errors!nn,i); printf( Press any figure key to continue!n);scanf(%d,&i); if(e=0)delet(); else printf(bye!n); modify() /*修改*/ char name20;int i,e=1,a,h; system(cls);menu1(); r(); printf( Input the name of the material you want to revise!n); scanf(%s,name); for(i=0;in;i+) if(strcmp(,name)=0&worki.delet=0)break; if(in)system(cls);menu1(); printf( The number you want to modify is num:%d, modify 0 drop modify 1n,worki.num); scanf(%d,&e); if(e=0) while(1) printf( Input the number:n); scanf(%d,&worki.num); for(h=0;hn;h+) if(h=i)h+; if(worki.num=workh.num)&workh.delet=0)break; if(hn) printf( It is repeat! try it again!n); else break; system(cls);menu1(); printf(The name of the material you want to modify is:%s, modify 0 drop modify 1n,); scanf(%d,&e); if(e=0) while(1) printf( Input the name:n); scanf(%s,&); for(h=0;hn;h+) if(h=i)h+; if(strcmp(,)=0&workh.delet=0)break; if(hn) printf(It is repeat! try it again!n); else break; system(cls);menu1();printf(The price of the material you want to modify is:%d, modify 0 drop modify 1n,worki.price);scanf(%d,&e);if(e=0)printf( Input the price:n);scanf(%d,&worki.price);system(cls);menu1();printf(The inamount of the material you want to modify is:%d, modify 0 drop modify 1n,worki.inamount);scanf(%d,&e);if(e=0)printf( Input the inamount:n);scanf(%d,&worki.inamount);system(cls);menu1();printf(The saveamount of the material you want to modify is:%d, modify 0 drop modify 1n, worki.saveamount);scanf(%d,&e);if(e=0)printf( Input the saveamount:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云南省沧源佤族自治县2025年上半年事业单位公开遴选试题含答案分析
- 河北省临西县2025年上半年公开招聘城市协管员试题含答案分析
- 2025版土地征用拆迁补偿买卖合同范本
- 2025年度房地产纠纷调解居间合同范本:房地产纠纷调解居间服务协议
- 2025年度货物装卸车辆承运合同
- 2025年退休返聘技术人员企业研发合作协议
- 2025年水利工程打井合同范本与水资源管理协议
- 2025年彩钢房安装及售后服务合同范本
- 2025年度古建筑修复砌墙工程合同样本
- 2025年度保健品代理销售合同规范汇编
- 液压车间生产管理制度
- 南城一中高三年级工作计划
- 企业重组改变组织结构以提高效率
- 植保无人机应急处置预案
- 湖北十堰生产实习报告
- 《中国古代的服饰》课件
- 行业标准项目建议书
- 新人教版高中数学选择性必修第一册全套精品课件
- 夏米尔350Pedm火花机快速入门操作
- 人教新版高中物理必修说课实验练习使用多用电表
- 全国公共英语等级考试PETS一级词汇表word版下载(大全)
评论
0/150
提交评论