《程序设计及C语言大作业.pdf》由会员分享,可在线阅读,更多相关《程序设计及C语言大作业.pdf(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、程序设计及C语言大作业指导东南大学经济管理学院2013年8月目录一、目的与要求.3二、题目与考核.41、经济类题目.42、管理类题目.83、小组考核.11三、模板与案例.131、模板.132、案例.13一、目的与要求一、目的与要求1、目的:大作业是程序设计及C语言课程的综合实验,旨在加强学生的自主学习、收集资料和动手编程的能力,为后续专业课程打好基础。2、授课对象:一年级本科生。3、任务安排:(1)选题:大作业题目分为经济和管理两类,每类有五道题,任选一道题做。经济类的学生只能选经济类的题目,管理类的学生只能选管理类的题目。(2)大作业可独立完成;也可23人为一组共同完成,但每人必须独立完成题
2、目的一个部分。(3)大作业安排在上机时间完成,包括查资料的时间,大约需要24学时。(4)程序设计环境请使用Visual C+6.0,不允许用数据库开发工具。(5)所有程序要求调试通过,有运行结果(多数程序需要把结果保存到文件中)。(6)要求提交大作业报告(Word 文档,书写格式见模板)和程序源代码。所有文件应使用 WinRAR 打包为一个压缩文件。4、时间安排:短学期第一周内,将题目和小组成员信息发到老师邮箱;短学期结束之前,将报告和源程序代码打包上传到作业管理指定的文件夹。二、题目与考核二、题目与考核1 1、经济类题目、经济类题目题目题目1 1:保险公司营销员信息管理系统程序设计:保险公司
3、营销员信息管理系统程序设计随着科技的发展,越来越多的企业也发展起来,公司的员工也越来越多,伴随而来的是企业因员工量大而信息管理更加繁重的问题。开发保险公司营销员信息管理系统,使得企业对员工的信息管理问题得到了改善。保险公司营销员信息管理程序,使实现企业对员工信息的添加、查找、修改和删除等功能,方便了企业的管理,满足了企业的需求。依据课程设计任务书要求,本系统完成以下功能和性能。(1)对营销员信息进行输入并存储档案(2)对营销员信息档案进行输出(3)对营销员信息进行添加(4)对营销员信息进行查找(5)对营销员信息进行修改(6)对营销员信息进行删除题目题目 2 2:银行银行 ATMATM 存取款系
4、统程序设计存取款系统程序设计银行ATM存取款系统业务描述如下:银行ATM存取款系统能为用户提供存款、取款、查询、转账和修改密码的功能。用户通过开户业务在本系统开立银行账户,之后可以通过该银行账户登录ATM系统,在系统中实现存款、取款、查询账户信息、修改密码的操作。本系统各个业务有如下注意点:(1)登录系统用户登录之前,必须在登录界面输入其银行账户,通过其正确输入的银行账户登录系统。(2)开户业务要使用本系统必须首先执行开户业务开立新的银行账户,并且将此新开的银行存储于文件当中。同时,系统以身份证号码作为开户的充分条件,即一个身份证号码只能开立一次银行账户。(3)存款业务客户登陆系统后,选择存款
5、业务,即可以将输入的存款金额存入相应的账户。(4)取款业务客户登陆系统后,选择取款业务,即可以将输入的取款金额从相应的银行账户取出,但其取款金额必须大于目前的账户余额。(5)查询业务客户登陆系统后,可以选择查询业务,查询账户余额。(6)转账业务客户登陆系统后,可以选择转账业务进行转账。注意的是转账的目的账户必须是本系统已经存在的银行账户。(7)修改密码客户登陆系统后,可以选择修改密码,进行密码修改。题目题目 3 3:个人股票管理系统:个人股票管理系统该系统要求建立一个时间段内某股民的投资情况管理系统,并具有排序、查找、计算、显示等功能。功能要求:(1)股票账户信息应包括:股票代码,股票名称,持
6、仓数目,当前价,涨跌幅,浮动盈亏,账户总值,剩余资金等(2)需要实现的功能建立5支给定股票的信息结构数组,包括股票代码,股票名称,当前价,涨跌幅等。并在统计的时间段以当天的收盘价作为每只股票的当前价进行信息更新和显示实现用户的投资过程,记录买卖过程(通过持仓数目的变化显示)每天更新和显示用户的账户信息计算并显示给定时间段内的盈亏 按盈亏大小进行排序 按股票代码查找该股票的价格变化将该时间段内每天的账户信息内容存为文件。提示:输入信息符合逻辑如股票买入数目必须为100的整数倍,剩余资金不能为负数、不可能有非数字的字符等。题目题目 4 4:个人财务管理系统:个人财务管理系统随着信息技术的发展,我们
7、每个人的生活已经离不开计算机的帮助,为了使我们的生活更加方便和快捷,越来越多的个人应用软件成为人们的重要助手。实际生活总经常要对个人的各项财务收支进行管理,开发该系统的目的是利用计算机对各项财务进行电子化的管理,使我们的理财更加方便和理性化,提升我们的生活质量与品位。对于个人财务管理系统,我们要求满足用户对个人财务的隐私性管理,提供用户对现金的收支进行的操作功能,使得当用户的记录需要修改时,可以方便的添加、修改和删除。功能要求:(1)打开:显示文件中的所有记录,提供分页显示:(2)保存信息;(3)更新:可插入、删除、修改各消费记录;(4)查找:按时间、类别、金额;(5)排序:按时间、类别、金额
8、;(6)可分类统计。题目题目 5 5:银行集成账户管理信息系统:银行集成账户管理信息系统为适应我国经济金融改革的不断深化和市场经济的需求,深入贯彻工会会计制度和中国建设银行工会经费管理办法,严格管理分行工会财务,分行上收了个支行的个人工会经费账户,实行集中核算、分户管理,开发一套工会经费账户管理及核算系统,为分行工会账户下的各支行子账户提供对账单查询打印功能以及利息计算功能等。银行集成账户管理系统及时该系统的主要支撑系统。系统实现的主要参数功能和业务功能:参数功能模块:主账户维护和子账户维护功能(其中主账户维护包括主账户信息的录入、查询、修改、删除,子账户参数维护包括子账户信息的录入、查询、修
9、改和删除);业务功能模块:子账户收款、子账户付款、主账户对账、补录收付款、子账户结息处理、利息清单打印、查询打印子账户对账单。设计银行集成账户管理信息系统,要求模块划分简介清晰,设计各阶段分工明确。2 2、管理类题目、管理类题目题目题目 1 1:生产订单管理系统:生产订单管理系统企业的订单管理是涉及企业生产、企业资金流和企业的经营风险的关键环节。订单管理是企业管理中的源头管理。订单管理至关重要,一个好的订单管理系统可以使企业的管理迈向一个新的台阶。订单管理系统是指接受客户订单信息,以及仓储管理系统发来的库存信息,然后按客户和紧要程度给订单归类,对不同仓储地点的库存进行配置,并确定交付日期的这样
10、一个系统。本题要求设计出一个订单管理系统,该系统能够实现订单的录入、订单的浏览、订单的处理、订单的统计等功能。要求用函数实现各个子功能用户界面 输入:程序正常运行后,屏幕上显示一个文字菜单(根据序号选定相应的操作项目),当用户选定操作项目所对应的序号时,根据应用程序的提示信息,从键盘上输入相应的数据。输出:1)应用程序正常运行后,要在屏幕上显示一个文字菜单 2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。题目题目 2 2:物流配送管理系统设计:物流配送管理系统设计随着社会发展的日新月异,商业往来日渐广泛,物资多样化,以及计算机的普及,对于企业物流配送管
11、理要求逐渐变大。物流配送是销售公司企业的主要后备力量的机构,势必要在物资方面加以严格有序的管理,对各种资源进行信息化管理。这样企业在可以放心的生产和出售产品了。经济效益有大幅度提高,本系统就是针对企业的迫切需要而设计的。1、本题要求设计一个简单的物流配送管理系统,实现物流配送管理最基本的功能。每个物流配送基本信息:物品名称、物品编号、物品出厂地、物品配送地、配送方式、配送个数、配送金额、配送日期(年、月、日)等。2、功能要求:添加:即添加新增的物流配送基本信息。显示:即在屏幕上显示每个物流配送基本信息。存储:即将每个物流配送基本信息保存在一个文件中。查询:按物品名称或物品编号查询每个物流配送基
12、本信息。更改:可更改每个物流配送基本信息。删除:可删除每个物流配送基本信题目题目 3 3:人事管理系统:人事管理系统在企业中,人事管理工作是非常重要的一项工作,它负责整个企业的日常人事安排,人员的人事管理等。高效的人事管理可以提高企业的市场竞争力,使企业具有更强的凝聚力和活力。(1)系统要求:人事管理系统的主要任务是对人事档案进行整理,使得能方便快捷地对人事档案进行查询、统计、更新,并且能按一定要求输出报表。通过该系统,使企业的人事管理工作系统化、规范化、自动化,从而提高企业人事管理的效率。(2)系统模块:信息的录入:包括职工的基本信息(工号、姓名、性别、职务编号、出生日期、地址等)、职工所属
13、部门信息(部门编号、职务编号、备注等)、职工工资信息(职务编号、职务名称、职务工资)信息的修改:当职工信息发生变化时,便于对信息进行修改。信息的插入:该模块主要功能是输入新职工的信息。信息的删除:该模块的主要功能时删除职工信息。信息的查询:该模块提供查询符合某一条件的人事档案的界面,要求包括两种查询方式,一种是按姓名查找,另一种是按职工号查找。题目题目 4 4:超市库存管理系统:超市库存管理系统随着现代生活质量的提高,超市这种便利的服务开始走进我们的生活,同时随着超市涌入我们的生活,如何更便利的对超市进行系统和有序的操作,成为了我们需要考虑的问题,本课题要求运用C语言程序设计一个超市管理系统。
14、需求分析:该超市管理系统的的功能主要有新购物品入库、物品信息删除、物品信息修改、物品信息查询、物品信息浏览功能。不仅如此,还要求能够对商品的价格进行统计,对商品的进货价格、出货价格、以及净利润进行统计。要求在相应的硬盘上面进行存盘以防止部分数据的丢失。为了更加人性化使用此管理系统,还在MENU选项总添加了系统颜色设置功能,使用户可以根据自己的喜好修改操作界面。题目题目 5 5:库存管理系统的设计:库存管理系统的设计在商场中,各种商品的库存量在每天的销售和进货过程中会发生不断的变化,而由于商场是零售经营,所以每天涉及库存的维护是一个比较麻烦的问题,另一方面,受市场和物价的影响,商品的价格也可能发
15、生变化,部分商品也会由于科技的发展,或消费者价值取向,审美观等方面的影响,会被淘汰掉,这个过程中涉及商品的变化和商品价格的变化,没有一个好的库存管理方案,将会是一场灾难,所以库存管理系统是必须的。本题就是运用C语言设计这样一个库存管理系统,从而实现商品的信息维护,其中包括商品的录入、商品的淘汰删除、商品信息的更新(价格和数量)、商品信息的打印等。3 3、小组考核、小组考核小组组成:自由组成,成员不能超过 3 人,分工明确。考核:自评:根据小组成员各自的任务量、难易程度确定各自的分数(按百分制);教师评分:依据作业总体完成情况、小组成员各自的任务及其完成情况、自评分数确定最终分数。三、模板与案例
16、三、模板与案例1 1、模板、模板报告格式由封面、目录及报告正文组成。封面:题目名称,小组成员学号、姓名及专业,完成时间正文:参照下面案例的样式2 2、案例、案例家庭财务管理系统一一 案例描述案例描述1总体描述家庭财务管理系统主要是对家庭成员的收入,支出,进行添加,删除,查询等操作,并能统计总收入和总支出。该软件给家庭成员提供了一个管理家庭财务的平台。2模块描述1)菜单设计:本系统提供简单易操作的界面。有提示,帮助用户根据需要对家庭财务管理系统进行操作。2)添加模块:根据实际的收入或支出,添加相应的记录,条数不限。3)查询模块:可以选择不同关键字输入,查找该条记录。4)删除模块:若某条记录错误或
17、者不需要则可以删除。5)显示模块:按照添加的先后顺序依次把记录显示在屏幕上,并显示总收入和总支出以及余额。6)退出模块:退出财务管理系统并保存文件。二二 界面设计界面设计界面有相应的选择,根据自己的需要对该管理系统进行添加,查找,删除,显示功能操作。本软件界面友好,不难操作,用户可根据自己的需要按提示进行。三三 模块化设计方案模块化设计方案1 1系统主要函数及功能系统主要函数及功能1)DataInit 函数:功能为数据初始化将数据从硬盘传到2)add 函数:功能为添加收入或支出的记录3)search 函数:功能为查找联系人输入关键字,从文件中搜索相应的记录并显示出来。4)delete_rec
18、函数:功能为删除记录若某条记录错误或者不需要则可以删除。5)show 函数:功能为显示记录将添加的记录显示在屏幕上。6)quit 函数:功能为保存信息退出系统2 2主函数调用各功能函数流程主函数调用各功能函数流程内存。开始打开文件,载入信息用户菜单界面1添加记录2查询记3删除记录4显示记录0退出保存结束四四 数据结构描述数据结构描述struct F_Dataint year;/年int month;/月int data;/日期float amout;/金额char name20;/姓名int type;/收入或支出类型char comment100;/备注struct F_Data*next;
19、/定义一个指针;该数据结构为链表,是一种动态进行存储分配的结构。链表的每一个一个节点中包含了一个指针变量,用它存放下一个结点的地址,环环相扣,中间决不能断开,该指针指向一个 structF_Data类型的数据。链表中各元素在内存中可以不是连续存放的。五五 算法设计算法设计添加添加开始输入年月月份0&月份next=head;head=p;在写删除模块是也遇到了类似的问题。看了书上的一个例题,里面有两个指针,可是我的代码中只有一个,怎么办呢?模仿了书上的写法,第一次以失败告终,经过很多种修改后总结出失败的原因是该指针定义错误,针对该错误,经过很多的尝试终成功了。在显示函数中,自我感觉没有错误了,可
20、是每次在“一共收入,一共支出,当前余额”后面都显示了一长串数字,在快放弃时终于发现自己犯了一个很可笑的错,printf 语言中居然用了取地址符,真是苦笑不得。在保存函数中叶犯了一些常见的错,在写入文件中居然用了 fscanf 语句,因此,一开始打开该系统时总是什么记录也没有,后来老师给我指出了这个错误,在修改之后还是不能显示之前的记录,请教其他同学后才发现主函数中没有调用数据导入函数,在修改之后,一个系统就完成了。我们也有了一些感慨:我们平时的一些基础学习真的很重要.总而言之,这次的报告让我们获益匪浅。3 3 自评得分自评得分某某同学:98某某同学:92某某同学:89附页(源代码附加注释)附页
21、(源代码附加注释)以下是添加模块代码void add()system(cls);/*清屏*/struct F_Data*p=NULL;/*定义 pNode 为 struct F_Data 类型指针*/p=(struct F_Data*)malloc(sizeof(struct F_Data);/*运行时动态调整所占内存的大小*/printf(请输入年份:);scanf(%d,&p-year);printf(请输入月份:);scanf(%d,&p-month);if(p-month0)&(p-monthdata);printf(请输入金额:);scanf(%f,&p-amout);printf(
22、请输入姓名:);scanf(%s,p-name);printf(收入按 1,支出按 0:);scanf(%d,&p-type);printf(请输入类型:);scanf(%s,p-comment);p-next=head;/*插入一个结点*/head=p;Recordcount+;/*结点数加一*/system(PAUSE);/*停顿*/在菜单界面选择“添加”选项,界面会依次显示年份,月份,且限定月份为112,再显示日期,金额,姓名,type,类型逐个填写,然后返回到菜单界面。以下是查询模块代码void search()system(cls);/*清屏*/char name20;int typ
23、e;int choice;struct F_Data*p=NULL;/*定义 pNode 为 struct F_Data 类型指针*/printf(1 按姓名查找n2 按类型查找n);printf(请输入你的选择:);scanf(%d,&choice);if(choice=1)printf(请输入姓名:);scanf(%s,name);for(p=head;p!=NULL;p=p-next)/*从链表的第一个结点到尾结点*/if(strcmp(p-name,name)=0)/*如果输入的name和结点中的name一样*/printf(%dt,p-year);printf(%dt,p-month
24、);printf(%dt,p-data);printf(%.2ft,p-amout);printf(%st,p-name);printf(%dt,p-type);printf(%sn,p-comment);if(choice=2)printf(请输入类型:1 收入 0 支出n);scanf(%d,&type);for(p=head;p!=NULL;p=p-next)if(p-type=type)/*如果输入的type和结点中的type一样*/printf(%dt,p-year);printf(%dt,p-month);printf(%dt,p-data);printf(%.2ft,p-amou
25、t);printf(%st,p-name);printf(%dt,p-type);printf(%sn,p-comment);system(PAUSE);/*停顿*/在菜单界面选择“查询”选项,界面会让你选择查找的方式:1 按姓名查找 2 按类型查找,用户可以根据自己的需要进行选择,按1 就输入联系人的姓名,按 2 就输入类型,系统会进行查询,如果有就显示该条记录。以下是删除模块代码void delete_rec()system(cls);/*清屏*/char name20;float amout;int choice;struct F_Data*p=NULL,*q=NULL;/*定义 p 和
26、 q 都为 struct F_Data 类型指针*/p=head;/*p 指向第一个结点*/q=head;/*q 指向第一个结点*/printf(请输入要删除者的姓名:);scanf(%s,name);printf(请输入金额:);scanf(%f,&amout);for(;q!=NULL;q=q-next)/*q指针从链表的第一个结点到尾结点*/if(head-amout=amout)&(strcmp(head-name,name)=0)/*如果头结点符合要求*/printf(%dt,q-year);printf(%dt,q-month);printf(%dt,q-data);printf(
27、%.2ft,q-amout);printf(%st,q-name);printf(%dt,q-type);printf(%sn,q-comment);printf(确认删除?n 1 是n 2 否n);scanf(%d,&choice);if(choice=1)head=q-next;/*删除头结点*/Recordcount-;/*结点数减一*/else break;else if(q-amout=amout)&(strcmp(q-name,name)=0)/*/printf(%dt,q-year);printf(%dt,q-month);printf(%dt,q-data);printf(%.
28、2ft,q-amout);printf(%st,q-name);printf(%dt,q-type);printf(%sn,q-comment);printf(确认删除?n 1 是n 2 否n);scanf(%d,&choice);if(choice=1)p-next=q-next;/*删除一个结点*/如果结点符合要求Recordcount-;/*结点数减一*/else break;else p=q;/*p 后移一 个位子*/system(PAUSE);/*停顿*/选择删除选项后,界面会让使用者输入要删除者的姓名及金额,并根据输入的信息显示该条记录,并且为了防止意外删除而有提示是否删除,经使用
29、者再三确认后便删除该记录。以下是显示模块void show()system(cls);/*清屏*/struct F_Data*p=NULL;/*定义 p 和 q 都为 struct F_Data 类型指针*/float j=0.0,i=0.0,w=0.0;for(p=head;p!=NULL;p=p-next)/*从链表的第一个结点到尾结点*/printf(%dt,p-year);printf(%dt,p-month);printf(%dt,p-data);printf(%.2ft,p-amout);printf(%st,p-name);printf(%dt,p-type);printf(%sn,p-comment);if(p-type=1)j+=p-amout;/*把 type=1 记录中的金额全部加给j*/else i+=p-amout;printf(一共收入:%.2fn,j);printf(一共支出:%.2fn,i);w=j-i;printf(当前余额:%.2fn,w);system(PAUSE);/*停顿*/在界面选择显示选项后,屏幕上会把每条记录依次显示出来,并把总收入和总支出及目前余额也统计并显示出来。
限制150内