大作业开发报告举例1(c语言程序).doc

上传人:飞****2 文档编号:79043462 上传时间:2023-03-19 格式:DOC 页数:9 大小:132.50KB
返回 下载 相关 举报
大作业开发报告举例1(c语言程序).doc_第1页
第1页 / 共9页
大作业开发报告举例1(c语言程序).doc_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《大作业开发报告举例1(c语言程序).doc》由会员分享,可在线阅读,更多相关《大作业开发报告举例1(c语言程序).doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第七组姓名:陈海松班级:08软件工程2班学号:日期:2009.6.11一、题目分析 这是设计一个实用的小型学生成绩管理程序,用于学生成绩的存储,以便于以后方便管理、查询和调用,是一款非常实用的软件。它要求不用链表,而用数组来设计这个程序。设计要求实现的功能较多,可以分为建立文件、增加学生记录、新建学生信息文件、显示记录、文件存储、读取文件、删除文件、修改文件、查询文件、对记录进行排序,头文件和测试程序12个功能。最重要的是它有查询和检索等功能,并且能够对指定文件操作,也可将多个文件组成一个文件。它的出现极大的满足了教师们的心理要求,减轻了他们的负担,符合现代教学的需要。二、负责部分分析 这款软

2、件主要由student.cpp , add_disp.cpp ,que_remv_modi.cpp ,save_load.cpp ,sort.cpp ,tudent.h六个源文件组成,而我负责的是add_disp.cpp这个部分,而这个部分包括showTable、getIndex、addRecord、display四个函数。如图 Add_disp.cShowTable打印表头GetIndex按升序排序的位置AddRecord在表尾追加信息Display显示信息具体分析如下:1、打印表头函数函数原型:void showTable(void)功 能:打印表头 参 数:void返 回 值:void工

3、作方式:输出一行表头信息要 求:将表头按制表符打印要求2、输出在记录中按升序排序的位置函数原型:void getIndex(void)功 能:找出总分为sum在第0至numStus-1个记录中按升序排序的位置参 数:float,欲找出其位置的总分返 回 值:int,sum在第0至numStus-1个记录中按升序排序的工作方式:查找并计数要 求:输出位置整数3、增加函数信息函数原型:void addRecord(void)功 能:增加记录参 数:void返 回 值:void工作方式:从尾部开始逐个追加记录要 求:将新记录追加在记录尾部,并对记录进行计数 4、显示所有学生信息的函数函数原型:voi

4、d display(void)功 能:显示内存里的记录信息参 数:void返 回 值:void工作方式:从头部开始逐个显示记录内容要 求:报告是否有记录及记录条数和内容显示学生信息的display函数,是通过循环遍历数组中第0至(numStus-1)个函数,逐条显示所有学生的信息。增加新信息函数addRecord用来在当前表的尾部增加新的信息,这只要将新的信息保存到recordnumStus中即可,然后numStus自加1,完成操作。如果在增加新信息之前,numStus已经大于或等于arraySize,这时就要使用realloc函数重新为records分配一块大小为(arraySize+INC

5、R_SIZE)个StuInfo的数组的存储块,并重新设置arraySize。每新增加一个学生的记录,就通过总分来计算名次,该学生的名次是总分高于他的学生的总分加1,并且所有总分小于他的学生的名次均加1.三、实现技术 #include student.h/* * 打印表头*/void showTable(void)int j;printf(学号t姓名t性别);for(j=0;jNUM_SUBJECT;j+) printf(t%s,subjectj);printf(t总分t平均分t名次n);/* * 显示所有的学生信息*/void display(void)int i,j;if(numStus=0

6、)printf(没有可供显示的记录!);return;showTable();for(i=0;inumStus;i+)/打印学生信息printf(%st%st%s,recordsi.number,recordsi.name,recordsi.gender);for(j=0;j=arraySize) /数组空间不足,需要重新申请空间records=(StuInfo*)realloc(records,(arraySize+INCR_SIZE)*sizeof(StuInfo);if(records=NULL)printf(memory failed!);exit(-1);arraySize=arra

7、ySize+INCR_SIZE;printf(请输入学号:);gets(recordsnumStus.number);printf(请输入姓名:);gets(recordsnumStus.name);printf(请输入性别(0为女,1为男):);gets(str);if(str0=0)strcpy(recordsnumStus.gender,女);elsestrcpy(recordsnumStus.gender,男);sum=0;for(j=0;jNUM_SUBJECT;j+)printf(请输入%s成绩:,subjectj);gets(str);mark=(float)atof(str);

8、recordsnumStus.scorej=mark;sum+=mark;recordsnumStus.sum=sum;recordsnumStus.average=sum/NUM_SUBJECT;recordsnumStus.index=getIndex(sum);numStus+;printf(现在一共有%d条信息n,numStus);savedTag=1;/* * 找出总分为sum在第0至numStus-1个记录中按升序的位置 * 参数:sum:欲找出其位置的总分 * 返回:sum在第0至numStus-1个记录中按升序的位置 * 结果:第0至numStus-1个记录中名次一项也会以需要

9、相应改变*/int getIndex(float sum)int i;int count=0; /总分大于sum的人数for(i=0;inumStus;i+)if(recordsi.sumsum)count+;return count+1;四、与其他功能模块的联系 我这部分可以说在整个程序中是十分重要的,打印表头和显示信息是最重要的。没有这两部分,这个程序将无法实现下去,只有有这两部分,才能实现其应用,才能让使用者明白这个程序应该怎样去运用。在我这个部分中有“在表尾追加信息”这个功能,这也是相当重要的一部分,这个会使得这个程序更加的有使用价值,可以更好的去使用。还有一部分是排序,这个功能更好的

10、方便了这个程序,使得使用者可以更好的,更清楚的了解学生的成绩状况。这个部分紧密地联系着其他部分,其他的信息要通过display这个函数来显示,使用者要通过showTable这个函数来明白如何运用这个程序,getIndex这个函数可以很好的将保存好的学生成绩进行排序,让使用者更清楚地了解学生及成绩的比较,在整个程序中占了很重要的位置,其中各部分的函数也是缺一不可,紧紧联系着其他功能的函数。五、技术难点和创新点本程序对模块设计的要求如下:(1) 使用多文件方式实现设计;(2) 在各个文件内实现结构化设计;(3) 每个模块作为一个单独的C文件;(4) 宏和数据结构等放在头文件中,并使用条件编译。该程

11、序由5个C文件(17个函数)和一个头文件组成,每个C文件都代表着某种特定的功能。程序包含文件的存、取过程。它的功能就是按输入顺序建立记录。如果原来没有记录文件,可以重新建立一个文件;如果已经有记录,可以先把文件内容读入,然后把新记录追加到原来记录的尾部;也可以单独建立新文件,以后再使用读取文件的方法拼装。因为它有并列选择,所以可以用选择菜单方便的实现。这个菜单具有10个选择项,用语句switch可以实现这些选择。难点是:1有些代码过于复杂,超出我们的范围2使用过多文件,导致小组间问题太多3数组空间不足时,需要申请空间虽然难点还有许多,但幸运的是我们有一个好的团队以及一个优秀的老师。在我们团队的

12、合作和跟老师的讨论中,种种问题都被迎刃而解。而且还总结出了上述几个创新点。六、使用介绍操作方式说明。程序运行后,给出以下界面: * * 这是一个 * * 学生成绩管理系统 * * 可以对学生成绩进行管理 * * 欢迎使用管理程序 * * 0增加学生信息 1修改学生信息 2显示学生信息 3查询学生信息 4删除学生信息 5对学生信息进行排序。 6保存学生信息至记录文件 7从记录文件读取学生信息 8新建学生信息文件 9结束运行 左边数字对应功能选择,请选0-9: 输入8进行建表显示如下: 原来没有记录,现在建立新表 您将要添加一组信息,确定吗?(Y/N)Y 请输入学号:100 请输入姓名:ZXL 请

13、输入性别:(0为女,1为男):0 请输入语文成绩:67 请输入数学成绩:78 请输入英语成绩:70 请输入物理成绩:80 请输入化学成绩:90 您将要添加一组信息,确定吗?(Y/N)Y 请输入学号:101 请输入姓名:LPH 请输入性别:(0为女,1为男):1 请输入语文成绩:77 请输入数学成绩:88 请输入英语成绩:78 请输入物理成绩:81 请输入化学成绩:87您将要添加一组信息,确定吗?(Y/N)N 现在一共有2条信息 输出菜单 左边数字对应功能选择,请选0-9:2 学号 姓名 性别 语文 数学 英语 物理 化学 总分 平均分 名次 100 ZXL 女 67.0 78.0 70.0 8

14、0.0 90.0 385.0 77.0 2 101 LPH 男 77.0 88.0 78.0 81.0 87.0 411.0 82.2 1 输出菜单 左边数字对应功能选择,请选0-9:3 请输入查询的方式:(直接输入回车则结束查询)1 按学号2 按姓名3 按名次 输入:1 请输入欲查询的学生的学号:100 100 ZXL 女 67.0 78.0 70.0 80.0 90.0 385.0 77.0 2 一共找到了1名学生的信息 请输入查询的方式:(直接输入回车则结束查询)1 按学号2 按姓名3 按名次 输入:2请输入欲查询的学生的姓名:LPH 101 LPH 男 77.0 88.0 78.0 8

15、1.0 87.0 411.0 82.2 1 一共找到了1名学生的信息 请输入查询的方式:(直接输入回车则结束查询)1 按学号2 按姓名3 按名次按回车,跳出,回到原界面输出菜单左边数字对应功能选择,请选0-9:4请输入如何找到欲删除的记录的方法:(直接输入回车则结束移除操作)1 按学号2 按姓名3 按名次输入:3请输入该学生的名次:1 101 LPH 男 77.0 88.0 78.0 81.0 87.0 411.0 82.2 1确定要删除这个学生的信息吗?(Y/N)输入:N请输入如何找到欲删除的记录的方法:(直接输入回车则结束移除操作)1 按学号2 按姓名3 按名次输入:1请输入该学生的学号:

16、100100 ZXL 女 67.0 78.0 70.0 80.0 90.0 385.0 77.0 2确定要删除这个学生的信息吗?(Y/N)输入:Y(表明已经删除该学生的信息)按回车,跳出,回到原界面输出菜单左边数字对应功能选择,请选0-9:9是否保存原来记录?(Y/N)输入:N则结束此运行,并自动退出。七、特点与不足 特点:1程序有多个模块组成 2多个文件之间用链表方式连接 3用文件形式存储数据 4每个模块都是一个单独的C文件,并且文件中含有一个或一个以上函数 5动态分配内存 6指针的使用,使得通过传递指针参数,不用建立参数副本,从而减少系统消耗的问题。不足:界面过于简单,操作过程复杂,而且显示在黑屏上,没有一点美体感,应该用对话框形式进行操作,或者在windows下编程。八、体会 通过本次合作,让我懂得了团队的伟大。正如篮球一样,它是5个人的,一人伟大也是没用的,编程也是如此。只有团队的配合,才有现在的成功。它还能培养我们的团队精神,当我们面对一个程序时,分模块合作完成,是我们的团队的凝聚力更强。还有,它让我了解到通过本次的努力,培养以及训练了我们的实际分析能力,编程和动手能力。并且激发了我们的学习兴趣,调动了我们主动学习的积极性,以及培养了我们良好的编程习惯。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁