资源描述
C语言课程设计参考材料、资管理系统1、需求分析工资信息存放在文件中,提供 文件的输入、输出等操作;要实现 浏览功能,提供显示、排序操作; 而查询功能要求实现查找操作;另 外还应该提供键盘式选择菜单以 实现功能选择。2、总体设计整个系统可以分为信息输入、 信息添加、信息浏览、信息排序、 信息查询和信息统计模块。3、详细设计资信息采用结构体数组:Struct S alary_Infoint资卡号Char姓名int月份float应发资float水费float电费Card No;name 20;month;Init_Salary;Water_Rate;Electric Rate;tax;floatFinal_Salary;税金float实发资SIMAX; /SIMAX中每 个数组元素对应个职资信 息(1)主函数提供输入、处理 和输出部分的函数调用,各功能模 块采用菜单方式选择。(2)输入模块按照工资卡号、姓名、月 份、应发资、水费、电费的顺序 输入信息,税金和实发资根据输 入的信息进行计算得到,这些信息 被录入到文件中。文件操作函数:fopen, fwrite, fclose.税金的计算:if(应发资二800)税金=0;else if (应发资800&应发 资二1400)税金二(应发资800) *5%;else if (应发资1400)税金二(应发资4400)*10%;实发资=应发资-水费-电费- 税金。(3)添加模块增加新的职资信息,从键 盘输入并逐条写到原来的输入文 件中,采用追加而不是覆盖的方式 (以“ ab”方式打开文件)。(4)浏览模块分屏显示职资信息,可以 指定10个1屏,按任意键显示下 屏。通过菜单选择按照工资卡号 还是姓名浏览。如果按照卡号浏 览,则显示的记录按照卡号升序输 出;按照姓名浏览则按照字典序输 出(调用排序模块的排序功能)。(5)排序模块排序模块提供菜单选择,实现 按照工资卡号升序、实发资降序 以及姓名字典序排序。排序方法可 以选择冒泡排序、插入排序、选择 排序等。(6)查询模块实现按照工资卡号和姓名的 查询,采用基本的查找方法即可。(7)统计模块输入起止月份,按照职卡号 和月份查询记录,把起止月份之间 的实发资金额累加。附加:思考在数据输入及添加 模块尾部添加排序功能,使得文件 中的数据按照卡号排序。这样在查 询模块和统计模块可以采用二分 查找以提高效率。二、校际运动会管理系统1、需求分析要记录比赛结果,可以查看参 赛学校的信息和比赛项目信息,因 而要实现文件的输入和输出功能; 用户可以查询各个学校的比赛成 绩,查看参赛学校信息和比赛项目 信息等,因而要提供查找和显示功 能;另外还应该提供键盘式选择菜 单以实现功能选择。2、总体设计系统被设计为信息输入模块、 比赛结果录入模块和查询模块三 个模块。3、详细设计数据结构采用结构体数组,包 括学校、项目、运动员三个结构体。Struct athlete(Char name20; 姓名Int age;年龄Char From20; 来自学 校 Athlete;运动员结构体Struct item(Char name20;项目名Int* weight; 在 运行时根据用户的输 入动态分配空间(各项目名次取法不同, weight所指空间依次 存放第一名得分、第二 名得分等)Athlete* player; 指向获 奖运动员信息的指针Item; 项目结构体Struct university(Char name20; 学校名Item *item; 竞赛项 目指针,根据用户输入动态分配空 间Int score;学校得Uni; 学校结构体Item TotalItemItemNum;项目结构体数组Uni AllUni UniNum; / 学校结构体数组(1)主函数提供输入、处理和输出部分的 函数调用,各功能模块采用菜单方 式选择。(2)信息输入模块输入参赛学校总数,M-男子参赛 项目数,W女子参赛项目数。把参赛学校信息和项目信息以及 运动员信息录入文件(fwrite),建 立三个文件。例如第i个项目:Scanf(u%s9TotalItemi.name);输入项目名Ch=Getchar();通过输入 1,2, 3来选择项目名次取法Switch(ch)(Case 1: n=5;break;Case 2: n=3; break;Case 3: printf(u 取前几 名? ”,&n); break;Default: break;Totalltemi.weight=new intn;Totalltemi .athlete=NULL;/指向获奖运动员信息,初始化为空然后写入文件:fp二fopen(“item.txtJwb);fwrite(&Totalltemi ,sizeof(Item) 91 P);学校信息和运动员信息的录入与 此类似。(2)比赛结果录入模块通过菜单选择进入比赛结果 录入模块,更改Totalltemi.athlete 的值,并把获奖名单保存到项目文件中。项目文 件格式为:项目名项目权值(按 照第一名、第二名给出权值)获 奖运动员信息(按照第一名、第二名.给出)(3)查找模块查找学校信息文件,生成团体 总分报表;用基本查找算法查询参 赛学校信息(按照校名查找)或者 比赛项目信息(按照项目名)。三、学生学籍信息管理系统设计 1、需求分析学生基本信息、学生成绩基本 信息要存入文件当中,因而要提供 文件的输入输出操作;查询功能要 求提供查找和显示操作;删除功能 要求实现删除操作;排序功能要求 实现排序操作;另外还应该提供键 盘式选择菜单以实现功能选择。2、总体设计整个系统可以设计为数据录入 模块、数据查询模块、数据删除模 块和数据排序模块。3、详细设计设计学生基本信息和学生成绩 基本信息结构体数组。Struct(int stuNo;学号char name20; 姓名char sex2;性别int domNum; 宿舍号int tel; 电话号码JStuInfo;学生基本信息结构体Struct(int stuNo; 学号char courseNo; 课程编号 char courseName; 课程名称 int creditHour; 学分Int triGrade; 平时成绩Int experiGrade; 实验成绩Int examGrade; 卷面成绩Float totalGrade; 综合成绩Float finalCreHour; 实得学分 StuGraInfo; 学生成绩基本信息 结构体(1)数据录入模块学生基本信息文件可以在磁 盘建立,采用写文件方式录入学生 成绩基本信息。综合成绩和实得学 分通过计算得到。(2)查询模块通过菜单选择查询功能,再选择 学生基本情况查询和成绩查询,若 选择前者,再通过菜单选择学号、 姓名或宿舍号码,按照基本查找算 法查找A.TXT,然后把查找结果输 出若选择后者,则先在A.TXT中 查找学号对应的姓名,再在B.TXT 中查找该学生的课程情况,并统计 科目和实得总学分,输出结果。(fread和查找算法的应用) (3)删除模块通过菜单选择删除学生的功能, 输入要删除学生的学号,则分别在 A.TXT和B.TXT中查找该生信 息,删除之;或者输入学生的姓名, 先在A.TXT中得到该生的学号, 删除该生信息,再在B.TXT中删 除该学号对应的信息。注意:C语 言中没有直接删除信息的函数,需 要自己实现,可以采取读出数据, 判断数据(如果不删除,则进入缓 冲区,否则删除),写入数据(把 缓冲区中的数据写入文件)的步骤 进行。(4)排序模块通过菜单选择排序依据,采用排 序算法(冒泡、插入、选择等)对 数据进行排序并输出结果。首先要 读文件(fread)。四、种简单的英文词典排版系统 实现1、需求分析运行结果以文本形式存储,因 而要提供文件的输入输出操作;检 查重复单词要提供查找操作;按 A-Z的顺序排版,要提供排序操 作;添加新单词并重新排版要提供 插入操作。另外通过键盘式菜单实现功能选择。2、总体设计整个系统被设计为单词录入 模块、文件存储模块和单词浏览模 块。其中单词录入模块要完成输入 单词、检查是否重复、排序操作。 文件存储模块把存放单词的数组 中的数据写入文件。单词浏览模块 完成英文词典的输出,即文件的输 出操作。3、详细设计数据结构采用指针数组或二 维数组:char* dictionaryN; 或 char dictionaryN20 其中 N 是 宏定义#define N 100 (表示单词个数)(1)单词录入模块输入个单词,存放在个 临时字符数组中,以空格或回车表 示单词的结束(这也是默认操作), 然后换行输出刚刚输入的单词。采 用插入排序算法的思想把该单词 插入单词数组中,不同的是如果两 个单词相同则不插入。(2)文件存储模块采用fwrite或fprintf把单词 数组输入到文件中。(3)单词浏览模块釆用fread或fscanf把单词从文 件中读出,然后输出。五、通讯录管理系统1、需求分析信息记录要存放到文件中去, 因而要实现文件的输入输出操作;要实现数据的插入、删除、修改和 显示功能,因而要实现插入、删除、 修改和显示操作;要实现按人名或 电话号码进行查询的功能,因而要 提供查找操作;另外还应该提供键 盘式选择菜单以实现功能选择。2、总体设计整个系统可以设计为数据插入 模块、数据修改模块、数据删除模块、数据显示模块和数据查询模 块。3、详细设计采用结构体数组。StructChar name20;Char post20;Int tel;Char email20;人名工作单位电话号码/email 地址JTellnfo;电话簿信息结构体Tellnfo telInfoN; 电话簿信息结构体数组(1)数据插入模块输入数据,然后采用追加方式写 文件(以“Wb”方式打开文件,再用 fwrite 写入)。(2)数据修改模块通过菜单选择修改姓名、电话号 码。可以把要修改的姓名或电话号 码存储在临时变量里面,然后读文 件,找到要修改的记录,把该记录 重新以新的值写入。(3)数据删除模块删除一条记录,则输入要删除的 人名,然后读文件,把文件中读出 来的记录的人名与待删除的人名 比较,如果不匹配,则重新写入文 件;否则舍弃不再写入文件。(4)数据显示模块采用分屏显示,每屏10条记 录。用fread或fscanf读文件,输 出结果。(5)数据查询模块用基本查找算法对电话簿实现按 人名或电话号码的查询(读文件, 把读出记录得相应字段与输入的 查询字段比较),并把结果输出。六、投票程序1、需求分析实现键盘输入投票人数和投 票结果,进行统计时实现排序功 能,输出结果。2、总体设计该程序可以分为数据输入部分 和统计部分。3、详细设计釆用结构体:Struct(Char code; 代号Int score5 得分CandidatesN; 候选人结构 体数组这里#de行ne N 3;采用二维数组,则行方向对应 张投票,列方向对应各候选人得 分。CandidateMN;(1)输入部分Char tmp3; 存放投票的中间变量输入投票人数n;For(i=0;in;+i) 投票(Scanf(u% s”,tmp);If (tmpO=tmp lll tmp l=tmp2lltmp0=tmp2)Printf (该票无效!”);Else(Tmp0号候选人加5分;Tmpl号候选人加3分;Tmp2号候选人加2分;(2)统计部分对候选人按照他们的得分排 序(冒泡、插入、选择等),然后 比较前两名得分是否相同。如果相 同,则显示“重新投票”;否则显 示三个候选者得分并输出“祝贺X 当选冠军”,X为最高分候选者。七、销售管理系统问题分析:数据结构采用结构体,设计便条结 构体:Struct sellNoteInt sellerNo; 销售员代号(1-4)Int proNo;产品代号(15)Float sellMoney; 销售额SNote;便条信息采用文件存储,实现建 立文本文件。主函数输出提示菜单,让用户选 择查看不同信息。(1)个人销售额查看计算上个月每个人每种产品 的销售额。设立coimt45,用来 存储4个销售员的5种产品的销售 额。读文件,把相同销售员的相同 产品的销售额累加,写入count中 最后count国j中存放的就是第 i+1个销售员的第j+1种商品的销 售额。(2)销售额排序类似个人销售额的计算,这里 把个销售员的所有产品的销售 额累加,存放到个临时数组中, 再对数组进行排序即可。(3)产品销售额操作与(2)类似。(4)统计报表可以先采用(1)的操作,再 对 count 数组计算。counti0+countil+counti2+counti3+ counti4既是第 i 个 销售员的销售之和,count0j+ countlj+count2j+count3j+ count4j既是第 j 种 产品的销售之和。所有count国川 的和既是总和。另外注意输出格 式。、学生选修课程系统设计1、需求分析系统以菜单方式工作,因而要 提供键盘式选择菜单以实现功能 选择;由于课程信息要用文件保 存,因而要提供文件的输入输出操作;由于要浏览信息,所以要提供 显示功能;要实现査询功能,故要 提供查找操作。2、总体设计整个系统可以设计为信息输入 模块、信息查询模块以及信息浏览 模块。3、详细设计数据结构采用结构体,这里采 用课程信息结构体和学生选课信 息结构体。Struct(Char courseCode10; 课程 编号Char courseName20; 课程 名称Char courseType10; 课程 类别InttotalPeriod;总学时IntclassPeriod;授课学时IntexperiPeriod;上机学时Float creditHour;学分Int term;开课学期CourseInfoN; 课程信息结 构体StructInt stuNo; 学号;Char courseCode105 课程 编号StuCourInfoN; /学生选课信息 结构体(1)信息输入模块从键盘输入课程信息和学生选 课信息,写入文件。(fwrite, fprintf )(2)信息浏览模块分屏显示课程信息,每屏!0条 课程记录,按任意键继续。从文件 中读数据(fread,fscanf)然后再 显。(3)信息查询模块通过菜单选择查询字段,可以 按照课程编号、课程名称、课程性 质、开课学期、学分对课程信息文 件进行查找,查找算法可以选择基 本查找、二分查找等算法。可以通过菜单选择课程编号, 在学生选课信息文件中查询该课 程学生选修情况。九、飞机订票系统设计1、需求分析航班信息用文件保存,因而要 提供文件的输入输出操作;航班信 息浏览功能需要提供显示操作;要查询航线需要提供查找功能;另外 要提供键盘式选择菜单以实现功 能选择。2、总体设计该系统设计为航班信息输入模 块、航班信息浏览模块和航线查询 模块。3、详细设计数据结构采用结构体数组,设 计航班结构体如下:Struct(Char flightNo10;航班号Char start10;起始站Char end10;终点站Float day;飞行时间Int totalTicket; 预售 票总数Int sellTicket;已售票总数FlightN; 航班结构体(1)航班信息输入模块采用fwrite或fprintf把航班 信息写入航班信息文件。(2)航班信息浏览模块分屏显示航班信息,每屏!0 条记录,按任意键显示下屏。读 文件(采用fread或fscanf)然后 显示即可。(3)航线查询模块通过菜单选择查询方式,提供 按照航班号、起点站、终点站和飞 行时间查询。采用基本查找算法即 可。十、职信息管理系统设计1、需求分析系统要以菜单方式工作,因而 要提供键盘式选择菜单以实现功 能选择;职信息采用文件保存, 因而要提供文件的输入输出操作; 要实现职信息的浏览功能,则要 提供信息显示操作;要实现职信 息查询功能,则要提供查找操作(按学历查询和按职号查询两 种查询方式);要实现职信息删 除、修改功能则要提供文件记录的 删除、修改操作。2、总体设计整个系统被设计为职信息 输入模块、职信息浏览模块、职 工信息查询模块和职信息删除 与修改模块。3、详细设计数据结构采用结构体,设计职 信息结构体:Struct employeeinfoCharjobNo10; 职号Char name20; 姓名Char sex; 性别Int age; 年龄Char eduLevel10; 学历Float salary; 资Char addr; 地址Char telll; 电话JEmpInfo; 职信息结构体(1)职信息输入模块采用fwrite或fprintf把职信息写入航班信息文件。(2)职信息浏览模块分屏显示职信息,每屏10条记 录,按任意键显示下一屏。读文 件(采用fread或fscanf)然后显示即可。(3)职信息查询模块通过菜单选择查询方式,提供 按学历查询和按职号查询两种 查询方式。采用基本查找算法即 可。(4)职信息删除与修改模块 通过菜单选择删除操作,由于C 语言没有提供直接删除文件记录 的函数,因而需要自己实现:读记 录,判断是否要删除(与输入的要 删除的记录比较),如果要删除, 则舍弃;否则重新写入文件。修改 操作于删除操作类似,只是判断是 否是要修改的记录,如果是,则把修改后的记录写入文件,否则直接 写入文件。十、图书信息管理系统设计1、需求分析系统以菜单方式工作,提供键 盘式选择菜单以实现功能选择;图 书信息采用文件保存,因而要提供 文件的输入输出操作;要实现图书 信息的浏览功能,则要提供信息显 示操作;要实现图书信息查询功 能,则要提供查找操作(提供按书 名、作者名查询两种查询方式); 要实现图书信息删除、修改功能则 要提供文件记录的删除、修改操 作。2、总体设计整个系统被设计为图书信息 输入模块、图书信息浏览模块、图 书信息査询模块和图书信息删除 与修改模块。3、详细设计数据结构采用结构体,设计图书 信息结构体:Struct(Char loginNo10; 登录 号Char name20;书名Char author20;作者Char classNo10; 分类 号Char publisher10; 出版 单位Char pubTime20; 出版 时间Float price;价格Jbooklnfo;图书信息结构体(1)图书信息输入模块采用fwrite或fprintf把图书 信息写入图书信息文件。(2)图书信息浏览模块 分屏显示图书信息,每屏!0条记 录,按任意键显示下一屏。读文 件(采用fread或fscanf)然后显 示即可。(3)图书信息查询模块通过菜单选择查询方式,提供 按书名查询和按作者名查询两种 查询方式。采用基本查找算法即 可。(4)图书信息删除与修改模块通过菜单选择删除操作,由于C 语言没有提供直接删除文件记录 的函数,因而需要自己实现:读记 录,判断是否要删除(与输入的要 删除的记录比较),如果要删除, 则舍弃;否则重新写入文件。修改 操作于删除操作类似,只是判断是 否是要修改的记录,如果是,则把 修改后的记录写入文件,否则直接写入文件。十二、图书管理系统设计1、需求分析图书管理信息采用文件保存, 因而要提供文件的输入输出操作5 要实现对图书基本信息的查询,则 要提供查找操作(提供按书名、作 者名查询两种查询方式)和显示操 作;要实现对撤销图书信息的删除 则要提供文件记录的删除操作;办 理借书或还书手续需要提供修改 操作;另外还要提供键盘式选择菜 单以实现功能选择。2、总体设计整个系统被设计为数据输入模 块、数据查询模块、数据删除模 块和数据修改模块。3、详细设计数据结构采用结构体,设计图书 信息结构体:Struct bookManagelnfo(Char bookName20; 图书名称Char bookCode20; /图书编号Float price;图书价格Char author10;/作者Int state;存在状态,0代表可以出借,1代表 已经借出Char borrowerName10; / 借书人姓名Int sex;借书人性别,0代表女,1代表男Char stuNo10;借书人学号JbookMInfo;(1)数据输入模块采用fwrite或fprintf把图书 基本信息写入图书信息文件。(2)数据查询模块通过菜单选择查询方式,提供 按书名查询和按作者名查询两种 查询方式。采用基本查找算法即 可。(3)数据删除模块通过菜单选择删除操作,由 于C语言没有提供直接删除文 件记录的函数,因而需要自己实 现:读记录,判断是否要删除(与 输入的要删除的记录比较),如 果要删除,则舍弃;否则重新写 入文件。(4)数据修改模块办理借书手续时,先要在文 件中查找要借的书的存在状态, 若可以出借,则允许借出,把借 书人姓名、性别和学号添加到该 书的记录中,并把存在状态改为 已经借出;否则,显示“抱歉, 该书已借出“。办理还书手续时, 在文件中查找该书的记录,然后 把存在状态改为允许出借,把借 书人姓名、性别和学号删除。具 体修改操作可以参考删除操作。十三、实验设备管理系统设计1、需求分析实验室设备信息用文件存储, 故要提供文件的输入输出操作;要 能够完成设备的录入和修改,需要 提供设备添加和修改操作;实现对 设备进行分类统计,需要提供排序 操作;实现对设备的查询需要提供 查找操作;另外还要提供键盘式选 择菜单以实现功能选择。2、总体设计整个系统被设计为实验设备 信息输入模块、实验设备信息添加 模块、实验设备信息修改模块、实 验设备分类统计模块和实验设备 查询模块。3、详细设计数据结构采用结构体,设计实验设备信息结构体:Struct equipmentinfo(Char equipCode10; 设备编 号Char equipType20; 设备总 类Char equipName20; 设备名 称float equipPrice;设备价格char buyDate20;设备购入日期int scrap;是否报废,0表示没有报废,1表示报废char scrapDate20;报废日期圧 qulnfo;(1)实验设备信息输入模块采用fwrite或fprintf把实验设 备基本信息写入实验设备信息文 件。(2)实验设备信息添加模块添加设备时,采用fwrite或 fprintf把添加的设备基本信息采 用追加的方式写入设备信息文件。 (3)实验设备信息修改模块修改设备信息,则需要读文件, 判断信息是否是要修改的设备的 信息,如果是,修改,重新写入文 件;否则直接重新写入文件。(4)实验设备分类统计模块根据给定的分类标准(设备种 类、设备名、设备购入日期)对文 件的记录进行排序,排序方法可以 选择冒泡、插入、选择等方法。然 后采用查找算法查找同类设备,采 用基本的数学运算即可统计同类 设备的相关信息,比如数量、价钱(5)实验设备查询模块通过菜单选择查询方式,提供 按设备编号、设备种类、设备名称、 设备购入日期和设备状态为正常(scrap字段值为)这些查询方式查询。采用基本查找算法即可。十四、手机通信录管理系统设计1、需求分析手机通信录采用文件存储,因 而要提供文件的输入输出操作;查 看功能要提供显示操作;增加新数 据的过程要检查是否有重复,存储 空间是否已满,且录入的新数据能 按递增的顺序自动进行条目编号, 因而要提供查找、统计和排序操 作;要提供修改与删除和自动调整 编号功能;另外还要提供键盘式选 择菜单以实现功能选择。2、总体设计整个系统可以设计为数据查看模块、数据添加模块、数据修改模 块、数据删除模块。手机通信录管理系统 I 数据查看模块j r数据添加模块r数据修改模块丨数据删除模块 j L- + T 办公类r个人类丨商务类3、 详细设计数据结构采用结构体,设计通信录结构体:Struct communicationMethodChar name20;Char tel12;Int type;姓名电话号码分类:0表示办公类,1表示个人类,2表示商务类Char email20;电子邮件地址Int num; 条目编号JComMtd;(1)数据查看模块通过菜单选择查看信息,然后 选择办公类、个人类或者商务类, 则显示所选类信息列表。这是个查找与显示的过程,在手机通信录文件中查找type类型符合的 记录,输出。(2)数据添加模块首先,查看信息条数是否超 过15,如果超过,则提示“通信录 已满! ”,返回上级菜单;否则,提 示输入一条记录,将对通信录执行 查找操作,查找姓名和电话号码字 段,如不存在相同的记录,则用 fwrite以追加方式写入文件,并给 记录的条目字段赋值(在检查有无 重复的过程中启动计数),否则提 示“数据已经存在,请重新输入或 者取消。(3)数据修改模块修改通信录信息,则需要读文 件,判断信息是否是要修改的信 息,如果是,修改,重新写入文件; 否则直接重新写入文件。(4)数据删除模块通过菜单选择删除操作,由于C语言没有提供直接删除文件记 录的函数,因而需要自己实现:读 记录,判断是否要删除(与输入的 要删除的记录比较),如果要删除, 则舍弃;否则重新写入文件。十五、简单的行编辑器问题分析:采用二维数组处理,设立二维 数组editMN。M行,每行可存 N个字符。用getchar。输入,单词 之间用空格隔开(空格也会作为字 符存入),当捕获回车字符(n) 时则换行即M+。采用文本形式存储,只需要提供写文件操作即可(fprintf,fwrite 的用法)。查找、替换、修改操作对文件 进行。文件的查找、替换和修改操 作可以参考前面的介绍。十六、银行卡管理系统银行卡信息采用结构体,设立 银行卡信息结构体:Struct creditCard(Char cardNo20; 卡号Char name20;持卡人姓名Char ID20;持卡人身份证号码Char password20; 密码Int flag;标志该卡是否启用(0表不未启用,!表示启 用)Float account;账户金额Int integral;积分JCCard;(1)制卡指申请个银行卡。即 建立一个CCard对象,输入信息 对其初始化。(2)账户信息存储到账户信息文 件中,当制作一新卡时,就把该新 卡追加到账户信息文件。对账户信 息的管理需要实现账户信息查询,用基本的查找算法按卡号对账户信息文件进行查找,并打印输出。 (3)实现卡交易和合法性检查。用户首先依靠卡号和密码登陆(通过查找账户信息文件,来查看卡号 金额,如果28011111二输入金额, 则输出“交易成功!”,并更改和密码是否正确匹配),输入交易account二account输入金额。否则 输出“对不起,您的余额不够!”。(4)实现卡金融交易积分功能。 在把积分初始化为,只需在卡交 易的时候,把交易金额取整加到积 分上。(5)实现卡报表功能。读账户信息文件,分屏输出所有账户的帐号 和交易金额。十七、组数游戏问题分析(1)输入正整数的个数n, 输出n个数连接成的最大的多位 数。找出n个数中最大数字的位 数,然后将所有的数字通过后面补 零的方式扩展成为最大位数。把变 换后的n位数从大到小排序,然后 把添加上的零去掉,按顺序输出的 序列即为所求的最大数字。(2)数据结构采用结构体,由 于正整数的位数不确定,可能非常大,所以数据类型采用字符数组。Struct(char data20;数据char ext_data20; 扩展 数据ElemN;结构体数组N可以在宏定义中定义:#define N 20(3)算法流程输入正整数个数n;Max=0; /Max存储最大位 数備入正整数并计算最大位数For (i=0;iMax) Max=Tmp;)计算扩展数字For (i=0;i score3,如果差值比上一次计算 所得值大,则停止;再往后推,计 算score6与平均值的差值,并与 前面得到的最小差值比较,如果大 于最小差值,则得到最小差值的评 分对应的评委就是最公平的评委;如果小于最小差值,则把最小差值改为score6,并继续比较score7, 直到所得差值比上一次计算所得 值大。(2)具体实现数据结构采用结构体:Struct judge(Float score;评委打分Int judgeNo; 评委号Judge10; 评委结构 体数组核心程序:一次循环处理一个 歌手。While (还有歌手)(输入10个评委的打分For (i=0;i10;+i) (Scanf(u% f & Judgei.score);Judgei.judgeNo=i;)输出最后得分 evenScore=0;For(i=l;i9;+i)evenScore+=Judgei.score;evenScore/=8;评选最公平与最不公平 评委二十、杂志订阅管理软件1、需求分析订户的信息要用文件存储,所 以要提供文件的输入输出操作;要 实现增加新订户的功能,所以要提 供文件的添加操作;要实现对订户 文件的查询,所以要提供文件的查 找操作;要删除已到期的订户记 录,所以要提供文件的删除操作;要统计本期杂志订户数并打印运 算结果,所以要提供统计和显示操 作;另外还要提供键盘式选择菜单 以实现功能选择。2、总体设计该管理软件被设计为数据添加 模块、数据删除模块和数据统计模 块。3、详细设计数据结构选择结构体:Struct subscriberinfoChar name20; 姓名Int sex;性别Char addr20;地址Char tel12;Float price;Int num;Char date10;Jsublnfo;户信息结构体电话号码杂志单价订阅数订阅的期限订(1)数据添加模块用追加的方式采用fwrite或 fprintf把新增订户信息写入订户 信息文件。(2)数据删除模块采用基本的查找算法,查找订户 信息文件,比较当天日期和订阅期 限,如果到期,则删除该订户记录。 删除方法:如果判断该条订户信息要删除,则不再把该条信息写入文 件,继续读下一条订户信息。(3)数据统计模块对本期杂志订户数的统计,就 是读文件,输出订户名、订阅数、 单价,并计算金额(单价订阅数)。(fread 或 fscanf 读文件,printf 输出结果)可以定义变量统计订户 数、订阅数和总金额,最后输出。二十二、人事管理1、需求分析人事档案信息采用文件存储, 因而要提供文件的输入输出操作; 根据学院人事的变动情况,添加删除记录,因而要提供文件的添加删 除操作;根据编号和姓名进项查 询,所以要提供文件的查找操作;高级编辑功能,就是提供文件的修 改操作;统计功能要提供统计操 作;排序功能要提供用排序算法对 文件记录的排序;另外还要提供键 盘式选择菜单以实现功能选择。2、总体设计整体设计为数据输入模块、数 据添加模块、数据删除模块、数据 查询模块、数据修改模块、数据统 计模块、数据排序模块。3、详细设计数据结构采用结构体:Struct personnelArchivelnfoChar No10; 编号Char name10; 姓名Int sex;性别Int age;年龄Charjob10;职务Char post10;职称Char politic10; 政治面貌Char edu_level10; 最高学历Char period10; 任职时间Char start_time10; 来院时间Char type10;人员类别JPAInfo;(1)数据输入模块采用fwrite或fprintf把员 工信息写入人事档案文件。(2)数据添加模块用追加的方式采用fwrite 或fprintf把新增员信息写入人 事档案文件。(3)数据删除模块根据人员编号查找要删除 的人员,从文件中读一条记录,查 看编号是否要删除,如果是,则舍 弃,不再写入文件;否则重新写入 文件。(4)数据查询模块把编号和姓名作为查询字 段,用基本查找算法查找人事档案 文件,把符合查找要求的记录输 出。(5)数据修改模块查找要修改的记录,修改之。 先用fread或fscanf读记录,若是 要修改的记录,则修改信息,把修 改后的信息写入文件;否则直接写 入文件。(6)数据排序模块通过菜单选择年龄或者来院 时间,把数据从文件中读出来,任 意选择种排序算法对记录进行排序,输出排序结果。(7)数据统计模块通过菜单选择统计字段:在职人 数、党员人数、女工人数、高学历 人数、高职称人数。例如选择党员人数,则统计运算 伪码如下:Count=0;记录在职人数While (文件未读完)读一条记录;If(政治面貌是党员)(Count+;输出该条记录;其他字段的统计运算与次类似。二十三、机房机位预约模拟1、数据结构顾客信息结构体:Struct Cuslnfo(Char name20;顾客姓名Int sex;性别Char telll; 电话JCInfo;机位信息结构体:StructInt State6; 机位状 态每2个 小时为 个时间段, 08: 00-20: 00共6个时间段。0 表示有空 机位,1表 示没有空 机位CInfo waitlist6; 各个时间 段的运行 客户Int year;Int month;Int day; 日期JPCInfo;PCInfo info100; 存放 100天的机位信息2、具体实现(1)查询输入时间,则遍历info数组, 查看日期(year/month/day ),女果 日期匹配,则把机位信息输出。(2)机位预订输入日期(或时间段)查询机 位信息文件,如果日期符合,再查 看状态字段,若相应字段为,则 预约(即把该用户信息加入写入机 位waitlist相应时间段中);若相应 字段为L则查看本天其他时间段, 寻找最近空时间段。如果用户要求 在非空时间上机,则查找info数组 中该时间段为空的元素,把该时间 段的状态字段设为1,把用户信息 加入机位当天waitlist相应时间段 中。(3)退
展开阅读全文