收藏 分销(赏)

C语言课程设计题目及相关要求.doc

上传人:二*** 文档编号:4512059 上传时间:2024-09-26 格式:DOC 页数:32 大小:162KB 下载积分:5 金币
下载 相关 举报
C语言课程设计题目及相关要求.doc_第1页
第1页 / 共32页
本文档共32页,全文阅读请下载到手机保存,查看更方便
资源描述
C语言课程设计综合设计题目及相关要求说明 1、选题 考虑到时间比较紧张,同时也锻炼同学之间的团结协作能力,采用2人一组或1人一组选作一题。课程设计题目见附2。 分组可采用自由组合或按学号顺序安排,分组名单及各小组选题名单,请学习委员于18周星期一晚交给任课教师,同一个题目不超过2个小组。 2、设计时间 本学期17-18周,18周周五上交报告(电子版)及机房检查(运行演示及说明),并同时提交各小组开发系统源代码。 3、课程设计要求 ①完成相应课程设计题目的基本功能; ②撰写课程设计报告(每人一份) ③报告封面及内容要求见附1; ④报告格式要求: (一)标题 (二)目录 (三)正文 1.报告正文部分主要内容见正文参考 2.报告正文排版要求 第一层次题序和标题用小三号黑体字; 第二层次题序和标题用四号黑体字; 第三层次题序和标题用小四号黑体字; 正文用宋体小四号(英文用新罗马体12号); 参考文献宋体五号。 3.报告页面设置:报告一律用A4打印,页码一律用小5号字标明;正文采用18磅行距,标准字符间距,上边距25mm,下边距25mm,左边距28mm,右边距20mm。 4、综合课程设计评分标准 评定项目 评分成绩 1. 选题合理、目的明确(10分) 2. 设计方案正确,具有可行性、创新性(20分) 3. 设计结果(例如:软件程序运行)(40分) 4. 设计报告规范化、参考文献充分(30分) 附: 1、课程设计学期成绩评定方式: 平时(考勤)20%+平时实验(30%)+综合课程设计(50%) 2、每人一份,本小组成员均围绕自己所承担的工作展开(即写自己完成的工作)。综合设计报告出现完全一致或雷同度高,则所有涉及者成绩评定为0分。附件1: 信息学院 课程设计Ⅰ报告 课程名称___C语言程序设计_ __ 题目名称_____________________ 学生学院_ 信息学院_ __ __ 专业班级_ _ 学 号______________________ 学生姓名______________________ 指导教师_______马瑜____ ____ 年 月 日目录参考 1. 设计目的与要求…………………………………………X 1.1 题目与设计要求……………………………………X 1.2 本程序涉及的知识点………………………………X 2.功能设计………………………………………………X 2.1总体设计……………………………………………X 2.2详细设计……………………………………………X 3. 程序实现……………………………………………X 3.1程序实现时应考虑的问题…………………………X 3.2 XX模块核心代码…………………………………X 4.测试分析……………………………………………X 4.1 测试结果及分析…………………………………X 5. 总结…………………………………………………X 参考文献………………………………………………X 正文具体内容参考 1 设计目的与要求 1.1 题目与设计要求 题目: 设计要求:例如主要实现功能,注意:在此标识出自己的主要工作 1.2 本程序设计的知识点 陈述开发过程中用到的知识点,如结构体、数组、指针等。 2 功能设计 2.1 总体设计 描述包含几大功能模块 2.2 详细设计 描述各功能模块的具体实现算法-流程图 3 程序实现 3.1 程序实现时应考虑的问题 描述实现时应考虑的各种问题及函数调用关系图 3.2 XX模块源代码及说明(注意:XX模块指自己所承担的模块) 源代码(加注释) 4 测试分析 4.1 测试结果及分析 描述自己所负责模块的测试用例,及测试结果 5 总结 总结系统的优缺点,课程设计完成了哪些功能,有没有什么扩展功能 还有哪些地方需要改进,课程设计有何收获,调试程序的体会等。 参考文献 参考文献必须是在课程设计中真正阅读过和运用过的,文献按照在正文中的出现顺序排列。 例如:[1] 严蔚敏. 数据结构. 清华大学. 2004.11 [2] http:// 附2 C语言课程设计参考题目 信息学院 二零一三年十二月 一、工资管理系统 1、 需求分析 工资信息存放在文件中,提供文件的输入、输出等操作;要实现浏览功能,提供显示、排序操作;而查询功能要求实现查找操作;另外还应该提供键盘式选择菜单以实现功能选择。 2、总体设计 整个系统可以分为信息输入、信息添加、信息浏览、信息排序、信息查询和信息统计模块。 3、详细设计 工资信息采用结构体数组: Struct Salary_Info { int Card_No; //工资卡号 Char name[20]; //姓名 int month; //月份 float Init_Salary; //应发工资 float Water_Rate; //水费 float Electric_Rate; //电费 float tax; //税金 float Final_Salary; //实发工资 }SI[MAX]; //SI[MAX]中每个数组元素对应一个职工工资信息 (1)主函数提供输入、处理和输出部分的函数调用,各功能模块采用菜单方式选择。 (2)输入模块 按照工资卡号、姓名、月份、应发工资、水费、电费的顺序输入信息,税金和实发工资根据输入的信息进行计算得到,这些信息被录入到文件中。 文件操作函数:fopen,fwrite,fclose. 税金的计算: if(应发工资<=800) 税金=0; else if (应发工资>800&&应发工资<=1400) 税金=(应发工资-800)*5%; else if (应发工资>1400) 税金=(应发工资-1400)*10%; 实发工资=应发工资-水费-电费-税金。 (3)添加模块 增加新的职工工资信息,从键盘输入并逐条写到原来的输入文件中,采用追加而不是覆盖的方式(以”ab”方式打开文件)。 (4)浏览模块 分屏显示职工工资信息,可以指定10个1屏,按任意键显示下一屏。通过菜单选择按照工资卡号还是姓名浏览。如果按照卡号浏览,则显示的记录按照卡号升序输出;按照姓名浏览则按照字典序输出(调用排序模块的排序功能)。 (5)排序模块 排序模块提供菜单选择,实现按照工资卡号升序、实发工资降序以及姓名字典序排序。排序方法可以选择冒泡排序、插入排序、选择排序等。 (6)查询模块 实现按照工资卡号和姓名的查询,采用基本的查找方法即可。 (7)统计模块 输入起止月份,按照职工卡号和月份查询记录,把起止月份之间的实发工资金额累加。 附加:思考在数据输入及添加模块尾部添加排序功能,使得文件中的数据按照卡号排序。这样在查询模块和统计模块可以采用二分查找以提高效率。 二、校际运动会管理系统 1、需求分析 要记录比赛结果,可以查看参赛学校的信息和比赛项目信息,因而要实现文件的输入和输出功能;用户可以查询各个学校的比赛成绩,查看参赛学校信息和比赛项目信息等,因而要提供查找和显示功能;另外还应该提供键盘式选择菜单以实现功能选择。 2、总体设计 系统被设计为信息输入模块、比赛结果录入模块和查询模块三个模块。 3、详细设计 数据结构采用结构体数组,包括学校、项目、运动员三个结构体。 Struct athlete { Char name[20]; //姓名 Int age; //年龄 Char From[20]; //来自学校 }Athlete; //运动员结构体 Struct item { Char name[20]; //项目名 Int* weight; //在运行时根据用户的输入动态分配空间(各项目名次取法不同,weight所指空间依次存放第一名得分、第二名得分等) Athlete* player; //指向获奖运动员信息的指针 }Item; //项目结构体 Struct university { Char name[20]; //学校名 Item *item; //竞赛项目指针,根据用户输入动态分配空间 Int score; //学校得分 }Uni; //学校结构体 Item TotalItem[ItemNum]; //项目结构体数组 Uni AllUni[UniNum]; //学校结构体数组 (1)主函数 提供输入、处理和输出部分的函数调用,各功能模块采用菜单方式选择。 (2)信息输入模块 输入参赛学校总数,M-男子参赛项目数,W-女子参赛项目数。 把参赛学校信息和项目信息以及运动员信息录入文件(fwrite),建立三个文件。 例如第i个项目: Scanf(“%s”,TotalItem[i].name); //输入项目名 Ch=Getchar(); //通过输入1,2,3来选择项目名次取法 Switch(ch) { Case ‘1’: n=5;break; Case ‘2’: n=3; break; Case ‘3’: printf(“取前几名?”,&n); break; Default: break; } TotalItem[i].weight=new int[n]; TotalItem[i].athlete=NULL; //指向获奖运动员信息,初始化为空 然后写入文件:fp=fopen(“item.txt”,”wb”); fwrite(&TotalItem[i],sizeof(Item),1,fp); 学校信息和运动员信息的录入与此类似。 (2)比赛结果录入模块 通过菜单选择进入比赛结果录入模块,更改TotalItem[i].athlete的值,并把获奖名单保存到项目文件中。项目文件格式为:项目名 项目权值(按照第一名、第二名…给出权值) 获奖运动员信息(按照第一名、第二名…给出) (3)查找模块 查找学校信息文件,生成团体总分报表;用基本查找算法查询参赛学校信息(按照校名查找)或者比赛项目信息(按照项目名)。 三、学生学籍信息管理系统设计 1、需求分析 学生基本信息、学生成绩基本信息要存入文件当中,因而要提供文件的输入输出操作;查询功能要求提供查找和显示操作;删除功能要求实现删除操作;排序功能要求实现排序操作;另外还应该提供键盘式选择菜单以实现功能选择。 2、总体设计 整个系统可以设计为数据录入模块、数据查询模块、数据删除模块和数据排序模块。 3、详细设计 设计学生基本信息和学生成绩基本信息结构体数组。 Struct { int stuNo; //学号 char name[20]; //姓名 char sex[2]; //性别 int domNum; //宿舍号 int tel; //电话号码 }StuInfo; //学生基本信息结构体 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、需求分析 信息记录要存放到文件中去,因而要实现文件的输入输出操作;要实现数据的插入、删除、修改和显示功能,因而要实现插入、删除、修改和显示操作;要实现按人名或电话号码进行查询的功能,因而要提供查找操作;另外还应该提供键盘式选择菜单以实现功能选择。 2、总体设计 整个系统可以设计为数据插入模块、数据修改模块、数据删除模块、数据显示模块和数据查询模块。 3、详细设计 采用结构体数组。 Struct { Char name[20]; //人名 Char post[20]; //工作单位 Int tel; //电话号码 Char email[20]; //email地址 }TelInfo; //电话簿信息结构体 TelInfo telInfo[N]; //电话簿信息结构体数组 (1)数据插入模块 输入数据,然后采用追加方式写文件(以”wb”方式打开文件,再用fwrite写入)。 (2)数据修改模块 通过菜单选择修改姓名、电话号码。可以把要修改的姓名或电话号码存储在临时变量里面,然后读文件,找到要修改的记录,把该记录重新以新的值写入。 (3)数据删除模块 删除一条记录,则输入要删除的人名,然后读文件,把文件中读出来的记录的人名与待删除的人名比较,如果不匹配,则重新写入文件;否则舍弃不再写入文件。 (4)数据显示模块 采用分屏显示,每屏10条记录。用fread或fscanf读文件,输出结果。 (5)数据查询模块 用基本查找算法对电话簿实现按人名或电话号码的查询(读文件,把读出记录得相应字段与输入的查询字段比较),并把结果输出。 五、投票程序 1、需求分析 实现键盘输入投票人数和投票结果,进行统计时实现排序功能,输出结果。 2、总体设计 该程序可以分为数据输入部分和统计部分。 3、详细设计 采用结构体: Struct { Char code; //代号 Int score; //得分 }Candidates[N]; //候选人结构体数组 这里#define N 3; 采用二维数组,则行方向对应一张投票,列方向对应各候选人得分。 Candidate[M][N]; (1)输入部分 Char tmp[3]; //存放投票的中间变量 输入投票人数n; For(i=0;i<n;++i) //投票 { Scanf(“%s”,tmp); If(tmp[0]==tmp[1]||tmp[1]==tmp[2]||tmp[0]==tmp[2]) Printf(”该票无效!”); Else { Tmp[0]号候选人加5分; Tmp[1]号候选人加3分; Tmp[2]号候选人加2分; } } (2)统计部分 对候选人按照他们的得分排序(冒泡、插入、选择等),然后比较前两名得分是否相同。如果相同,则显示“重新投票”;否则显示三个候选者得分并输出“祝贺X当选冠军”,X为最高分候选者。 六、学生选修课程系统设计 1、需求分析 系统以菜单方式工作,因而要提供键盘式选择菜单以实现功能选择;由于课程信息要用文件保存,因而要提供文件的输入输出操作;由于要浏览信息,所以要提供显示功能;要实现查询功能,故要提供查找操作。 2、总体设计 整个系统可以设计为信息输入模块、信息查询模块以及信息浏览模块。 3、详细设计 数据结构采用结构体,这里采用课程信息结构体和学生选课信息结构体。 Struct { Char courseCode[10]; //课程编号 Char courseName[20]; //课程名称 Char courseType[10]; //课程类别 Int totalPeriod; //总学时 Int classPeriod; //授课学时 Int experiPeriod; //上机学时 Float creditHour; //学分 Int term; //开课学期 }CourseInfo[N]; //课程信息结构体 Struct { Int stuNo; //学号; Char courseCode[10]; //课程编号 }StuCourInfo[N]; //学生选课信息结构体 (1) 信息输入模块 从键盘输入课程信息和学生选课信息,写入文件。(fwrite, fprintf) (2)信息浏览模块 分屏显示课程信息,每屏10条课程记录,按任意键继续。从文件中读数据(fread,fscanf),然后再显示。 (3)信息查询模块 通过菜单选择查询字段,可以按照课程编号、课程名称、课程性质、开课学期、学分对课程信息文件进行查找,查找算法可以选择基本查找、二分查找等算法。 可以通过菜单选择课程编号,在学生选课信息文件中查询该课程学生选修情况。 七、飞机订票系统设计 1、需求分析 航班信息用文件保存,因而要提供文件的输入输出操作;航班信息浏览功能需要提供显示操作;要查询航线需要提供查找功能;另外要提供键盘式选择菜单以实现功能选择。 2、总体设计 该系统设计为航班信息输入模块、航班信息浏览模块和航线查询模块。 3、详细设计 数据结构采用结构体数组,设计航班结构体如下: Struct { Char flightNo[10]; //航班号 Char start[10]; //起始站 Char end[10]; //终点站 Float day; //飞行时间 Int totalTicket; //预售票总数 Int sellTicket; //已售票总数 }Flight[N]; //航班结构体 (1)航班信息输入模块 采用fwrite或fprintf把航班信息写入航班信息文件。 (2)航班信息浏览模块 分屏显示航班信息,每屏10条记录,按任意键显示下一屏。读文件(采用fread或fscanf)然后显示即可。 (3)航线查询模块 通过菜单选择查询方式,提供按照航班号、起点站、终点站和飞行时间查询。采用基本查找算法即可。 八、职工信息管理系统设计 1、 需求分析 系统要以菜单方式工作,因而要提供键盘式选择菜单以实现功能选择;职工信息采用文件保存,因而要提供文件的输入输出操作;要实现职工信息的浏览功能,则要提供信息显示操作;要实现职工信息查询功能,则要提供查找操作(按学历查询和按职工号查询两种查询方式);要实现职工信息删除、修改功能则要提供文件记录的删除、修改操作。 2、 总体设计 整个系统被设计为职工信息输入模块、职工信息浏览模块、职工信息查询模块和职工信息删除与修改模块。 3、 详细设计 数据结构采用结构体,设计职工信息结构体: Struct employeeInfo { Char jobNo[10]; //职工号 Char name[20]; //姓名 Char sex; //性别 Int age; //年龄 Char eduLevel[10]; //学历 Float salary; //工资 Char addr; //地址 Char tel[11]; //电话 }EmpInfo; //职工信息结构体 (1)职工信息输入模块 采用fwrite或fprintf把职工信息写入航班信息文件。 (2)职工信息浏览模块 分屏显示职工信息,每屏10条记录,按任意键显示下一屏。读文件(采用fread或fscanf)然后显示即可。 (3)职工信息查询模块 通过菜单选择查询方式,提供按学历查询和按职工号查询两种查询方式。采用基本查找算法即可。 (4)职工信息删除与修改模块 通过菜单选择删除操作,由于C语言没有提供直接删除文件记录的函数,因而需要自己实现:读记录,判断是否要删除(与输入的要删除的记录比较),如果要删除,则舍弃;否则重新写入文件。修改操作于删除操作类似,只是判断是否是要修改的记录,如果是,则把修改后的记录写入文件,否则直接写入文件。 九、图书信息管理系统设计 1、 需求分析 系统以菜单方式工作,提供键盘式选择菜单以实现功能选择;图书信息采用文件保存,因而要提供文件的输入输出操作;要实现图书信息的浏览功能,则要提供信息显示操作;要实现图书信息查询功能,则要提供查找操作(提供按书名、作者名查询两种查询方式);要实现图书信息删除、修改功能则要提供文件记录的删除、修改操作。 2、 总体设计 整个系统被设计为图书信息输入模块、图书信息浏览模块、图书信息查询模块和图书信息删除与修改模块。 3、 详细设计 数据结构采用结构体,设计图书信息结构体: Struct { Char loginNo[10]; //登录号 Char name[20]; //书名 Char author[20]; //作者名 Char classNo[10]; //分类号 Char publisher[10]; //出版单位 Char pubTime[20]; //出版时间 Float price; //价格 }bookInfo; //图书信息结构体 (1)图书信息输入模块 采用fwrite或fprintf把图书信息写入图书信息文件。 (2)图书信息浏览模块 分屏显示图书信息,每屏10条记录,按任意键显示下一屏。读文件(采用fread或fscanf)然后显示即可。 (3)图书信息查询模块 通过菜单选择查询方式,提供按书名查询和按作者名查询两种查询方式。采用基本查找算法即可。 (4)图书信息删除与修改模块 通过菜单选择删除操作,由于C语言没有提供直接删除文件记录的函数,因而需要自己实现:读记录,判断是否要删除(与输入的要删除的记录比较),如果要删除,则舍弃;否则重新写入文件。修改操作于删除操作类似,只是判断是否是要修改的记录,如果是,则把修改后的记录写入文件,否则直接写入文件。 十、实验设备管理系统设计 1、 需求分析 实验室设备信息用文件存储,故要提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备的查询需要提供查找操作;另外还要提供键盘式选择菜单以实现功能选择。 2、 总体设计 整个系统被设计为实验设备信息输入模块、实验设备信息添加模块、实验设备信息修改模块、实验设备分类统计模块和实验设备查询模块。 3、 详细设计 数据结构采用结构体,设计实验设备信息结构体: Struct equipmentInfo { Char equipCode[10]; //设备编号 Char equipType[20]; //设备总类 Char equipName[20]; //设备名称 float equipPrice; //设备价格 char buyDate[20]; //设备购入日期 int scrap; //是否报废,0表示没有报废,1表示报废 char scrapDate[20]; //报废日期 }EquInfo; (1) 实验设备信息输入模块 采用fwrite或fprintf把实验设备基本信息写入实验设备信息文件。 (2) 实验设备信息添加模块 添加设备时,采用fwrite或fprintf把添加的设备基本信息采用追加的方式写入设备信息文件。 (3) 实验设备信息修改模块 修改设备信息,则需要读文件,判断信息是否是要修改的设备的信息,如果是,修改,重新写入文件;否则直接重新写入文件。 (4) 实验设备分类统计模块 根据给定的分类标准(设备种类、设备名、设备购入日期)对文件的记录进行排序,排序方法可以选择冒泡、插入、选择等方法。然后采用查找算法查找同类设备,采用基本的数学运算即可统计同类设备的相关信息,比如数量、价钱等。 (5) 实验设备查询模块 通过菜单选择查询方式,提供按设备编号、设备种类、设备名称、设备购入日期和设备状态为正常(scrap字段值为0)这些查询方式查询。采用基本查找算法即可。 十一、手机通信录管理系统设计 1、 需求分析 手机通信录采用文件存储,因而要提供文件的输入输出操作;查看功能要提供显示操作;增加新数据的过程要检查是否有重复,存储空间是否已满,且录入的新数据能按递增的顺序自动进行条目编号,因而要提供查找、统计和排序操作;要提供修改与删除和自动调整编号功能;另外还要提供键盘式选择菜单以实现功能选择。 2、 总体设计 整个系统可以设计为数据查看模块、数据添加模块、数据修改模块、数据删除模块。 手机通信录管理系统 数据查看模块 数据添加模块 数据修改模块 数据删除模块 办公类 个人类 商务类 3、 详细设计 数据结构采用结构体,设计通信录结构体: Struct communicationMethod { Char name[20]; //姓名 Char tel[12]; //电话号码 Int type; //分类:0表示办公类,1表示个人类,2表示商务类 Char email[20]; //电子邮件地址 Int num; //条目编号 }ComMtd; (1)数据查看模块 通过菜单选择查看信息,然后选择办公类、个人类或者商务类,则显示所选类信息列表。这是一个查找与显示的过程,在手机通信录文件中查找type类型符合的记录,输出。 (2)数据添加模块 首先,查看信息条数是否超过15,如果超过,则提示“通信录已满!”,返回上级菜单;否则,提示输入一条记录,将对通信录执行查找操作,查找姓名和电话号码字段,如不存在相同的记录,则用fwrite以追加方式写入文件,并给记录的条目字段赋值(在检查有无重复的过程中启动计数),否则提示“数据已经存在,请重新输入或者取消!”。 (3)数据修改模块 修改通信录信息,则需要读文件,判断信息是否是要修改的信息,如果是,修改,重新写入文件;否则直接重新写入文件。 (4)数据删除模块 通过菜单选择删除操作,由于C语言没有提供直接删除文件记录的函数,因而需要自己实现:读记录,判断是否要删除(与输入的要删除的记录比较),如果要删除,则舍弃;否则重新写入文件。 十二、简单的行编辑器(1人) 问题分析: 采用二维数组处理,设立二维数组edit[M][N]。M行,每行可存N个字符。用getchar()输入,单词之间用空格隔开(空格也会作为字符存入),当捕获回车字符(‘\n’)时则换行即M++。 采用文本形式存储,只需要提供写文件操作即可(fprintf,fwrite的用法)。 查找、替换、修改操作对文件进行。文件的查找、替换和修改操作可以参考前面的介绍。 十三、组数游戏(1人) 问题分析 (1)输入正整数的个数n,输出n个数连接成的最大的多位数。找出n个数中最大数字的位数,然后将所有的数字通过后面补零的方式扩展成为最大位数。把变换后的n位数从大到小排序,然后把添加上的零去掉,按顺序输出的序列即为所求的最大数字。 (2)数据结构采用结构体,由于正整数的位数不确定,可能非常大,所以数据类型采用字符数组。 Struct { char data[20]; //数据 char ext_data[20]; //扩展数据 }Elem[N]; //结构体数组 N可以在宏定义中定义:#define N 20 (3)算法流程 输入正整数个数n; Max=0; //Max存储最大位数 //输入正整数并计算最大位数 For (i=0;i<n;++i) { 输入Elem[i].data; Strcpy(Elem[i].ext_data,Elem[i].data); Tmp=strlen(Elem[i].data); //计算输入数字的位数 If(Tmp>Max) Max=Tmp; } //计算扩展数字 For (i=0;i<n;++i) { tmp=strlen(Elem[i].data); //计算输入数字的位数 m=Max-tmp; //m为需要补0的个数 定义一个m个’0’的字符串tmp_str; Strcat(Elem[i].ext_data,tmp_str); } //排序 任选一中排序算法(冒泡、插入、选择等)对数字结构体数组按照ext_data从大到小排序。 //输出 按序输出结构体数组中data数据。 十四、机房机位预约模拟 1、数据结构 顾客信息结构体: Struct CusInfo { Char name[20];//顾客姓名 Int sex; //性别 Char tel[11]; //电话 }CInfo; 机位信息结构体: Struct { Int State[6]; //机位状态,每2个小时为一个时间段,08:00-20:00共6个时间段。0表示有空机位,1表示没有空机位 CInfo waitlist[6]; //各个时间段的运行客户 Int year; Int month; Int day; //日期 }PCInfo; PCInfo info[100]; //存放100天的机位信息 2、具体实现 (1)查询 输入时间,则遍历info数组,查看日期(year/month/day),如果日期匹配,则把机位信息输出。 (2)机位预订 输入日期(或时间段)查询机位信息文件,如果日期符合,再查看状态字段,若相应字段为0,则预约(即把该用户信息加入写入机位waitlist相应时间段中);若相应字段为1,则查看本天其他时间段,寻找最近空时间段。如果用户要求在非空时间上机,则查找info数组中该时间段为空的元素,把该时间段的状态字段设为1,把用户信息加入机位当天waitlist相应时间段中。 (3)退出预订 根据预订日期和客户信息找到预订信息,把客户信息删除,并把该时间段的状态置为0。 (4)查询 输入日期和时间段,查看该时间段的状态,如为1,则把相应时间段的运行客户信息打印输出。如为0,则显示“该时间段空闲!”。 十五、学生成绩管理程序(难) 1、 需求分析 学生纪录用文件存储,因而要提供文件的输入输出操作;要实现插入一个新的学生纪录,因而要提供文件的插入操作;要实现学生纪录得修改和删除,以及登记成绩和修改成绩,因而要提供文件纪录的修改和删除操作;要浏览全班成绩,故要提供显示操作;计算学生总成绩需要提供简单的统计操作;要按学号排序输出全班成绩表,因而要提供排序操作;另外要提供键盘式选择菜单以实现功能选择。 2、 总体设计 整个成绩管理系统设计为数据插入模块、数据修改模块、数据删除模块、成绩登记模块、成绩修改模块、数据浏览模块、成绩统计模块、成绩表查看模块。 3、 详细设计 数据结构采用结构体,设计学生纪录结构体: Struct studentRecord { Char stuNo[10]; //学号 Char name[20]; //姓名 Int age; //年龄 Float math; //数学 Float English; //英语 Float physics; //物理 }SR; (1)主函数输出提示菜单:插入学生纪录 修改学生纪录 删除学生纪录 登记成绩 修改成绩 浏览学生纪录 查看总成绩 查看成绩表 (2)数据插入模块 采用追加的方式用fwrite或fprintf把学生成绩信息写入学生成绩信息文件。 (3)数据修改模块 通过菜单选择修改学生纪录,用fopen打开该文件,从文件中读一条记录,判断是否要修改,如果是,则修改后重新写入文件;否则直接重新写入文件,读下一条记录。 (4)数据删除模块 通过菜单选择删除学生纪录,用fopen打开该文件,从文件中读一条记录,判断是否要删除,如果是,则舍弃;否则重新写入文件,读下一条记录。 (5)成绩登记模块 类似数据修改模块,只是修改字段为各个科目的成绩。 (6)成绩修改模块 参考数据修改模块。 (7)数据浏览模块 用fscanf或fread读取学生成绩信息文件,分屏输出,每屏10条纪录。 (8)成绩统计模块 用fscanf或fread从学生成绩信息文件中读取一个学生纪录,计算该学生的总成绩(简单的成绩相加),输出,然后读取下一条纪录。 (9)成绩表查看模块 建立结构体数组 Struct { SR record; //学生纪录 Float total; //总成绩 }stu[N]; 从学生成绩信
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服