版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中南大学程序设计基础实践报告题 目 学生姓名 指导教师 学 院 专业班级 完成时间 目录:第一章 系统描述-21.系统要求和内容-3第二章功能模块-2.1功能模块结构2.2 模块的功能描述第3章 数据结构3.1需要处理的数据3.2数据结构设计第4章 算法主要模块算法第五章运行结果5.1典型界面5.2输入和输出数据第6章 总结6.1设计实践中遇到的问题及解决与思考6.2对程序开发的认识与思考附录参考文献第1章 系统描述1. 1 系统要求和内容分析1.1.1 图书基本信息的录入录入图书的基本信息,包括书号,书名,作者,出版社,并储存在一个结构数组中。图书采购(1)录入图书的采购信息,并保存在采购函
2、数的局部变量中(2)根据采购单价和采购数量自动计算采购金额,并打印采购金额。(3)根据图书编号在书库中搜索,若书库中有当前采购的图书编号,则根据采购数量,增加相应的图书库存量。(4)如果书库中没有当前采购的图书编号,则自动从图书基本资料中把相关信息提取出来,增加到书库;并且根据采购数量,增加相应的书库存量。1.1.3 图书销售(1)输入图书的销售信息,并保存在销售函数的局部变量中(2)根据当前销售的图书编号、销售数量,从图书库存信息中查找销售要求是否合法:若有该图书且数量充足则进行销售;若没有该图书或库存数量不足则报错。(3)根据销售单价和销售数量自动计算销售金额,并打印销售金额。(4)销售时
3、从库存中减去相应的数量。1.1.4 利润计算根据“全部的销售金额 - 全部的采购金额”,计算书店的利润情况。1.1.5 信息查询(1)可根据图书编号或书名,查询图书资料基本信息。 (2)可根据图书编号或书名,查询该图书的库存信息。第2章 功能模块2.1功能模块结构主菜单图书信息查询图书销售模块图书采购模块图书基本信息录入利润计算模块查询图书库存信息查询图书基本信息2.2 模块的功能描述该程序主要分为,一个主菜单,五个模块,最后一个图书信息查询模块下,包含两个小模块,分别查询基本信息和库存信息,查询时,可按书名查询和按图书编号查询。图书基本信息录入模块:用input_info函数录入图书的基本信
4、息,保存在结构数组中。图书采购模块:用book_purchase 函数进行图书的采购,输入图书书号,书名,单价,采购数量,计算并输出采购金额,把图书信息集采购数量添加到库存中。图书销售模块:用book_sale 函数进行图书的销售,输入图书书号,书名,售价,销售数量,计算并输出销售金额,并从库存中扣减相应数量。利润计算模块: 用profit 函数及全局变量销售总额sale_sum,采购总额purchase_sum,计算利润并打印。图书信息查询模块:通过书名或书号搜索查图书基本信息和库存信息,并打印出来。第4章 数据结构3.1需要处理的数据(1).图书资料基本信息:图书编号、书名、作者、出版社、
5、定价等。(2).图书采购信息:采购序号、采购图书编号、采购单价、采购数量、采购金额等。(3).图书销售信息:销售序号、销售图书编号、销售单价、销售数量、销售金额等。(4).图书库存信息:图书编号、书名、作者、库存数量等。3.2数据结构设计3.2.1 用结构体数组bookIN储存图书基本信息:struct bookInfo /*定义结构体用于存储图书基本信息 */long id;char name20;char auther10;char publish20;float prices;bookIN; /*N是宏定义的变量*/3用结构体数组bookSN储存图书库存信息:struct bookSto
6、re /* 定义结构体用于存储图书库存信息 */long id;char name20;char auther10;int bookNum;bookSN; /*N是宏定义的变量*/3.2.2全局变量用全局变量num_s统计库存信息中图书的种类用全局变量 num 统计基本信息中图书的种类用全局变量sale_sum 来统计销售总额用全局变量purchase_sum 来统计销售总额int num_s=0; /*书库中图书种类计数 */int num=0; /*基本信息中图书种类计数*/ float sale_sum=0; /*销售总额 */float purchase_sum=0; /*购买总额 *
7、/3.2.3 局部变量 图书购买函数和图书销售函数中,购买信息和销售信息用局部变量实现。int i,j,purchase_num;long id,purchaseNum;float purchase_prices; /*图书购买信息局部变量*/long id,saleNum;float sale_prices;int j,sale_num; /*图书销售信息局部变量*/算法主要模块算法各函数模块拥有自己独立的功能,能够实现相应的任务,通过对函数的调用来完成总体功能的实现。1. void input_info() /*图书基本信息录入函数 */图书的基本信息录入,函数中用while无限循环实现图
8、书信息的连续录入,并通过用户选择,用break语句来实现退出当前循环。2. void query_info()/*查询基本信息函数 */通过用户输入的选择,用switch 语句实现选择,并根据用户输入的书名或书号调用书名搜索函数(search_bynameInfo() )或书号搜索函数(search_byidInfo() ) ,在基本信息的结构体数组中搜索相关信息并返回数组下表,根据相应下表,用基本信息打印函数(displayInfo()),打印出图书的基本信息。3. void query_store() /*查询图书信息库存函数 */通过用户输入的选择,用switch 语句实现选择,并根据用
9、户输入的书名或书号调用书名搜索函数(search_bynameStore() )或书号搜索函数(search_byidStore() ) ,在库存信息的结构体数组中搜索相关信息并返回数组下表,根据相应下表,用库存信息打印函数(displayStore()),打印出图书的基本信息。4. void book_purchase() /*图书购买函数 */通过用户输入图书购买的信息,调用书号搜索函数(search_idStore()),在库存中搜索相关信息,若库存中有图书信息,则直接在库存中增加相应的库存量,若无图书基本信息,先将图书信息从基本信息中提取到库存中,在增加相应的数量。并打印购买金额。用w
10、hile 的无限循环实现图书的连续购买,用break语句退出购买。5. void book_sale() /*图书销售函数 */ 通过用户输入图书销售的信息,调用书号搜索函数(search_idStore()),在库存中搜索相关图书基本信息,并比较库存量与销售量。若有图书基本信息并且销售量小于等于库存量则进行销售,在库存中减去相应的库存量,并打印销售金额。若无基本信息或库存量不足,则报错。用while 的无限循环实现图书的连续销售,用break语句退出销售。6. void profit() /*利润计算函数 */通过全局变量销售总额sale_sum和购买总额purchase_sum 计算并打印
11、利润。7. int main(void) /*主函数*/用于显示主菜单,并进行选择。第五章运行结果5.1典型界面图1-图书管理系统主界面5.2输入和输出数据图2-基本信息录入图3-图书采购图4-图书销售图5-利润计算图6-图书基本信息查询图7-图书库存信息查询第六章总结6.1设计实践中遇到的问题及解决与思考在这次程序设计中,在更种细节方面我遇到了很多问题。比如说,在编写函数时,我少写了一个“”,调试时程序总是报错“syntax error in the end”,但总是找不到错误,最后在将函数一个个注释掉的情况下才找到了错误之处。但却花费了我大量的时间。还有很多诸如此类的小错误,看似不重要,在
12、实际中却可能造成很大的问题,应该加以注意。6.2对程序开发的认识与思考这次的图书售销管理系统是我做的第一个对我而言较大的程序,从程序的构思到代码实现都是自己做的,难免存在很多问题,特别是程序的具体细节,有点混乱,不过清晰明了。而且一开始在构思的时候,很多问题还没想明白就开始编写代码,犯了编程的大忌。致使在之后的过程中,我总是在不断的改,总是发现没法实现预期的构想。在主体思路构思出来之后,也没有进行算法的验证,使得在程序调试过程中出现大量算法上的逻辑错误,难以调试,不得不重新一步步检查程序的算法,并使得花费了大量的时间。这次程序设计,我觉得我最大的收获就在于,明白了在编写一个较大的程序是,必须先
13、要把主体框架都构思出来,并把算法的实现也想出来,并进行验证确定算法无误之后再进行具体的代码实现。这样不但迅速,而且不会出现重大的逻辑错误。虽然在前期的时候感觉会更慢,实际上,开始具体代码编写之后,会更加的迅速。所以这是更高效的方法。在程序设计中,代码实现只是很小的一部分,最重要的是将一个具体的需求或问题设计算法表达出来。而且不但要解决问题,还要简便,快捷。附录#include<stdio.h>#include<string.h>#include<stdlib.h>#define N 100 struct bookInfo /*定义结构体用于存储图书基本信息
14、*/long id;char name20;char auther10;char publish20;float prices;bookIN;int num_s=0; /*书库中图书种类计数 */int num=0; /*基本信息中图书种类计数*/ float sale_sum=0; /*销售总额 */float purchase_sum=0; /*购买总额 */struct bookStore /* 定义结构体用于存储图书库存信息 */long id;char name20;char auther10;int bookNum;bookSN;void input_info() /*图书基本信息
15、录入函数 */while(1) printf("请输入图书编号:"); scanf("%ld",&bookInum.id); printf("n"); getchar(); printf("请输入图书名:"); scanf("%s",bookI); printf("n"); printf("请输入图书作者:"); scanf("%s",bookInum.auther); printf("n")
16、; printf("请输入图书出版社:"); scanf("%s",bookInum.publish); printf("n"); printf("请输入图书定价:"); scanf("%f",&bookInum.prices); printf("n"); num+; printf("是否继续? y/n n"); getchar(); if(getchar()='n') break;void displayInfo(int i)/*
17、打印图书基本信息函数*/ printf("%10s%20s%10s%20s%10sn","图书编号","书名","作者","出版社","定价"); printf("-n");printf("%10ld%20s%10s%20s%10.2fn",bookIi.id,bookI,bookIi.auther,bookIi.publish,bookIi.prices);void displayStore(int i)/*打印图书库存信
18、息函数 */printf("%10s%20s%10s%10sn","图书编号","书名","作者","库存"); printf("-n");printf("%10ld%20s%10s%10ldn",bookSi.id,bookS,bookSi.auther,bookSi.bookNum);void query_info()/*查询基本信息函数 */int choice3,i; printf("1.按书名查询n"); prin
19、tf("2.按图书编号查询n");scanf("%d",&choice3);switch(choice3) case 1:i=search_bynameInfo();if(i=-1)printf("errorn"); else displayInfo(i);break;case 2:i=search_byidInfo();if(i=-1)printf("errorn"); elsedisplayInfo(i);break; void query_store()/*查询图书库存函数 */printf(&quo
20、t;1.按书名查询n");printf("2.按图书编号查询n");int choice4,i;scanf("%d",&choice4);switch(choice4) case 1:i=search_bynameStore();if(i=-1)printf("errorn"); elsedisplayStore(i);break;case 2: i=search_byidStore();if(i=-1)printf("errorn"); elsedisplayStore(i);break; in
21、t search_bynameInfo() /*通过书名在基本信息结构体数组中找到对应基本信息 */int i;char name20;printf("请输入书名n"); scanf("%s",name);for(i=0;i<num;i+) if(strcmp(bookI,name)=0) return i; return -1;int search_byidInfo()/*通过书号在基本信息结构体数组中找到对应基本信息*/int i;long id;printf("请输入图书编号n");scanf("%l
22、d",&id);for(i=0;i<num;i+) if(bookIi.id=id) return i;return -1;int search_bynameStore() /*通过书名在库存信息结构体数组中找到对应库存信息*/ int i;char name20;printf("请输入书名n"); scanf("%s",name);for(i=0;i<num_s;i+) if(strcmp(bookS,name)=0) return i; return -1;int search_byidStore() /*通
23、过书名在库存信息结构体数组中找到对应库存信息*/int i;long id;printf("请输入图书编号n");scanf("%ld",&id);for(i=0;i<num_s;i+) if(bookSi.id=id) return i;return -1;int search_idStore(long id) /*在库存中搜索 */int i;for(i=0;i<num_s;i+) if(bookSi.id=id) return i;return -1;int search_idInfo(long id)/*在基本信息中搜索 */
24、int i;for(i=0;i<num;i+) if(bookIi.id=id) return i;return -1;void book_purchase() /*图书购买函数 */ int i,j,purchase_num; long id,purchaseNum;float purchase_prices;while(1) printf("请输入采购序号:");scanf("%ld",&purchaseNum);printf("n");printf("请输入采购图书编号:");scanf(&qu
25、ot;%ld",&id);printf("n");printf("请输入采购图书单价:");scanf("%f",&purchase_prices);printf("n");printf("请输入采购图书数量:");scanf("%d",&purchase_num);printf("n");j=search_idStore(id); if(j!=-1) bookSj.bookNum+=purchase_num; else
26、j=search_idInfo(id); bookSnum_s.id=bookIj.id; for(i=0;bookIi!='0'i+) bookSnum_i=bookIi; for(i=0;bookIj.autheri!='0'i+) bookSnum_s.autheri=bookIj.autheri; bookSnum_s.bookNum+=purchase_num; num_s+; purchase_sum+=purchase_num*purchase_prices; printf("采购金额为:%.2fn&q
27、uot;,purchase_num*purchase_prices); printf("是否继续? y/n n"); getchar(); if(getchar()='n'); break; void book_sale() /*图书销售函数 */ long id,saleNum;float sale_prices;int j,sale_num;while(1)printf("请输入销售序号:");scanf("%ld",&saleNum);printf("n");printf("
28、请输入销售图书编号:");scanf("%ld",&id);printf("n");printf("请输入销售图书单价:");scanf("%f",&sale_prices);printf("n");printf("请输入销售图书数量:");scanf("%ld",&sale_num);printf("n");/?j=search_idStore(id);if(j!=-1&&(sale_
29、num<=bookSj.bookNum) bookSj.bookNum-=sale_num; sale_sum+=sale_num*sale_prices; printf("销售金额为:%.2f",sale_num*sale_prices); else printf("销售要求非法!n"); printf("是否继续? y/n n"); getchar(); if(getchar()='n') break;void profit() /*利润计算函数 */ printf("%.2fn",sale_sum-purchase_sum);int main(void) /*主函数*/ int i; int choice; int choice1;for(i=0;i<N ;i+) bookSi.bookNum
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度智慧城市建设中的光缆铺设分包合同2篇
- 二零二五年度充电桩智能监控系统安装合同4篇
- 二零二五版苗圃技术员智慧苗圃建设与运营管理合同3篇
- 二零二五年度面包砖施工安全管理评估合同3篇
- 2025年度绿色能源项目投资与建设合同4篇
- 二零二五年度医疗健康APP数据共享合同3篇
- 二零二五年度某三期护坡桩工程施工合同合同解除与终止合同4篇
- 二零二五年度房地产营销推广合同范本
- 二零二五版抵押贷款合同条款变更对借款合同影响评估3篇
- 二零二五年度农产品市场拓展代理销售合同
- 风电场升压站培训课件
- 收纳盒注塑模具设计(论文-任务书-开题报告-图纸)
- 博弈论全套课件
- CONSORT2010流程图(FlowDiagram)【模板】文档
- 脑电信号处理与特征提取
- 高中数学知识点全总结(电子版)
- GB/T 10322.7-2004铁矿石粒度分布的筛分测定
- 2023新译林版新教材高中英语必修一重点词组归纳总结
- 苏教版四年级数学下册第3单元第2课时“常见的数量关系”教案
- 基于协同过滤算法的电影推荐系统设计
- 消防应急预案流程图
评论
0/150
提交评论