C语言课程设计报告学生信息管理系统_第1页
C语言课程设计报告学生信息管理系统_第2页
C语言课程设计报告学生信息管理系统_第3页
C语言课程设计报告学生信息管理系统_第4页
C语言课程设计报告学生信息管理系统_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言是一门通用的计算机编程语言,应用广泛。 C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。近年来,C语言在国内得到了迅速的推广和应用。作为一门通用的语言,在过去很流行吗,将来依然会如此。几乎每一个理工科或者其他专业的学生毫不例外的要学习它,同时,C语言作为“全国计算机二级等级考试”中的一门可选语言,也是用来衡量计算机程序设计水平的一个重要标准。从C语言产生到现在,它已成为最重要和最流行的编程语言之一。在各种 流行编程语言中,都能看到 C语言的影子,如JAVA的语法与C语言基本相同c 学习、掌握C语言是每一个计算机技

2、术人员的基本功之一。C 语言具有高级语言的强大功能,却又有很多直接操作计算机硬件的功能(这些都是汇编语言的功能),因此,C语言通常又被称为中级语言。学习和掌 握C语言,即可以增进对于计算机底层工作机制的了解,又为进一步学习其他 高级语言打下了坚实的基础。C 语言程序设计是一门实践性很强的课程,所以本学科的实验实训非常重要。所以我们进行了本次课程设计实践。在这个过程中我们都学到了很多,此报告便是这次课程设计的经过、流程,介绍了部分自己编写的程序。02目录.问题概述 TOC o 1-5 h z .系统需求分析 02.系统概要设计 02 HYPERLINK l bookmark18 o Curren

3、t Document .系统的详细设计 06 HYPERLINK l bookmark62 o Current Document .系统的测试及调试 15 HYPERLINK l bookmark64 o Current Document .用户手册 21.总结 21 HYPERLINK l bookmark68 o Current Document .参考文献 22.附录 231.问题概述设计一个学生综合测评的信息及成绩的管理系统,以解决传统纸质信息统 计的不易修改,储存及放置等诸多不便及弊端。来简化学校的办公,节约时间 及人力。1.系统需求分析在学生信息的日常管理中,经常需要对学生相关信息

4、进行处理,采用传统 的手工记录,查询方式,显然有很多不便,如多次的增、删、改可能使信息变 得混乱,为今后的信息提取带来很多麻烦。为了解决这一问题,可采用现代化 的手段一一计算机进行系统的管理。这样可大大提高管理的质量和效率,并且 使学生的信息管理也从手工操作中解脱出来,减少纸制材料的数量,对日常信息的查询、方便、快捷。因此,基于这些方面的考虑,决定开发本系统。设计一个学生综合测评的信息及成绩的管理系统,以解决传统纸质信息统 计的不易修改,储存及放置等诸多不便及弊端。来简化学校的办公,节约时间 及人力。系统的主要功能系统的主要功能是实现学生基本的信息及成绩的录入和管理。主要包括:A学生信息处理(

5、1)学生信息的录入。(2)学生信息的修改。(3)学生信息的浏览B、学生数据处理:(1)学生考试数据输入并计算平均分及名次(2)学生测评数据输入并计算综合测评总分及名次(3)学生数据的修。(4)学生数据的查询C学生综合信息显示系统的总体结构(1)程序主界面的设计(书界面主界面学生信息处理系统CT TH22吐、学工 上“四质纭|界面结构图学生信教处哂界面设计据据卜卜3学生综合息显示理处自d4用户指南5退由系统录入学图系统工用f结 学生数据处理/1考试枭录A1及MU至-2-测 处蓝录入学生信取、顺序存入学号、修 姓函、性别返、回 主 菜4 4界W结樗图2生 一数据5返回主菜电话,按学号以,排序后可写

6、到文件中(2)修改同学信息。2、学生数据处理:(1)考试成绩录入及处理:考试成绩=(语文+数学+外语)/3计算考试成绩,并计算考试名次,提 示:先把学生信息读入数组,然后按提示输入每科成绩,计算考试成绩,求出 名次,最后把学生记录写入一个文件中。(2)测评成绩录入及处理:综合测评总分=(考试成绩)*+ (同学互评分)*+品德成绩*+任课老师评 分*。(3)学生数据修改:输入学号,读出并显示该同学信息,输入邮型数据婀1息写入文件(4)学生数据查询:输入学号,即读出所有数据信息,并显示出来。3、查询学生综合信息输入学号即读出综合信息,并显示出来系统软硬件环境本程序所适用的计算机系统软硬件环境要求为

7、 :硬件环境 : Pentium?III?500 以上内存: 256M? 软件环境 : Windows 7数据结构设计学生信息数据结构类型如下:struct student TOC o 1-5 h z int num;/*学号*/char name20;/* 学生姓名*/char sex10;/*性别男/女*/char home200;/* 家庭住址*/int s1;/*语文成绩*/int s2;/* 数学成绩*/int s3;/* 英语成绩*/int ave;/*三科平均成绩*/int Tel;/*联系方式*/int m1;/*考试名次 */int a1;/* 同学互评分*/int a2;/

8、* 品德成绩 */int a3;/*任课教师评分*/int z;/* 综合测评总分*/int m2;/*综合测评名次*/stuN;4 系统的详细设计根据系统总体结构对问题进行的模块划分,对总的问题可划分为:学生信息处理、 学生数据处理、学生综合信息查询三个大模块,另还设置了用户 帮助函数及退出系统。首先在主函数中调用了 void one() 函数来显示主菜单,主菜单中调用子菜单也就是学生信息处理、学生数据处理的菜单。学生信息处理用 void info() 来显示子菜单1,子菜单 1 中调用了 voidinfo_1();void info_2() 。两个函数来实现学生信息的录入和修改。学生数据处

9、理用 void data() 来显示子菜2,子菜单2 中调用了 void data_2;void data_1; void data_3; void data_4 等函数来实现数据的录入修改及查询。还使用了 void sort_num(struct student a, int n);void sort_ave(struct student a, int n);void sort_z(struct student a, int n);三个排序函数来处理学生的数据在最后的学生综合信息查询中使用的是void look() 来实现其功能在用户指南中使用了 void help() 函数来实现其功能以上

10、就是此系统中使用的函数来实现其功能。主菜单 void one()系统流程该函数主要用来显示主菜单的内容以及进入子菜单实现功能,该函数实现过程中首先定义了一个变量opt1 ,这是用户选择进入那个模块的选项。首先判断 opt1 的值,如果为 1 则调用 void info() 进入信息管理模块,如果为 2 则调用 void data() 进入数据管理模块,如果为3 则调用 void look() 进入学生综合信息查询功,如果为 4 则调用 void help() 进入用户指南函数查看,如果为 5 则退出系统。如果用户没有输入12345 中的选项,则会提示输入错误请重新输入。代码实现 TOC o 1

11、-5 h z void one()/* 主菜单函数*/int opt1;/*主菜单选项*/printf(欢迎使用学生综合测评系统nn);printf( 1: 学生信息处理2:学生数据处理nn 3: 学生综合信息);printf( 4 :用户使用指南nn);printf(5:退出 nn);printf( 请输入 1 2 3 4 5 中的任意一个选项进行操作:);loop: scanf(%d, &opt1);switch (opt1)info();break;data();break;look();break;help();break;break;default:printf( 输入错误,请重新输

12、入 1 2 3 4 5 中的一项 );scanf(%d, &opt1);goto loop;子菜单 1 void info()系统流程该函数主要用来显示子菜单1 的内容以及进入功能实现函数,该函数实现过程中首先定义了一个变量opt2 ,这是用户选择进入那个功能的选项。首先判断 opt2 的值,如果为 1 则调用 void info_1() 进入学生信息录入功能,如果为 2 则调用 void info_2() 进入学生信息修改功能,如果为3 则调用 void one() 返回到主菜单。如果用户没有输入123 中的选项,则会提示输入错误请重新输入。代码实现 TOC o 1-5 h z void i

13、nfo()/*信息处理函数*/int opt2; /*子菜单选项*/printf(nn 欢迎进入信息处理nn);printf(1.学生信息录入nn2.学生信息的修改nn);printf(3.返回nn);printf(请输入 1 2 3 中的任意一个选项进行操作);loop: scanf(%d, &opt2);switch (opt2)info_1();break;info_2();break;one();break; default: printf( 输入错误,请重新输入1 2 3 中的一项 );goto loop; 学生信息录入void info_1()系统流程该函数运行后,首先打开文件,然

14、后判断文件是否为空。如果为空设置一个变量count来记录录入学生的数目。如果不为空,则从文件中读取count 的值。然后开始录入学生信息,设置变量输入s,用switch语句来决定是否录入或退出。输入 1录入0退出2返回上一层。在 1 中用 goto 语句实现循环录入到数组中。在2 中调用 void one(). 最后将学生信息的数组和 count 写入文件,然后关闭文件。代码实现void info_1() /*信息录入函数*/FILE *fp;int s, i,count;count=0;= 1;if(fp = fopen(stu,rb+) = NULL)if(fp = fopen(stu,w

15、b) = NULL)printf(Cont open filen);exit(1); stu0.num=0; else fclose(fp); if(fp = fopen(stu,ab+) = NULL) printf(Cont open filen);exit(1);fread(stu,sizeof(struct student),N,fp);fscanf(fp,%d,&stu0.num);loop:printf(nn您将开始录入学生信息n输入1将继续n输入2返回上一层n输入0将退 出 n);looo: scanf(%d, &s);switch (s)case 0:break;count+;

16、printf(nn 您将输入第%d 学生的信息: ,count);printf(n 学号:);scanf(%d,&stui.num);printf( 姓名:);scanf(%s,);printf( 性别 :);scanf(%s,stui.sex);printf( 家庭住址: );scanf(%s,stui.home);printf( 联系电话 :);scanf(%d,&stui.Tel);i+;goto loop;break;info();break;default:printf(n 输入错误,请重新输入 0 1 2 中的一项 );goto looo;sort_num(stu

17、, i);stui+1.num=0;stu0.num += count;fseek(fp, 0, SEEK_SET);fwrite(stu, sizeof(struct student), N, fp);fseek(fp, 0, SEEK_SET);fread(stu, sizeof(struct student), N, fp);for(i=1;i=stu0.num;i+)printf(%dn,stui.num);system(pause);fclose(fp);学生信息修改 void info_2()系统流程该函数运行后,首先打开文件,读取文件内容到数组中。设置变量 num 用户输入一个学

18、号。然后用一个for循环将num与数组中的学号的值进行比较,如果相同,跳出循环。找到 后将其输出。询问是否修改。修改后将其写入文件中。关闭文件。代码实现void info_2() /*信息修改函数*/FILE *fp;int j;if (fp = fopen(stu, rb) = NULL)printf(Can not open filen);exit(1);/* 打开文件 */fread(stu, sizeof(struct student),1 , fp);for(j = 1;j =stu0.num;j+)fread(&stuj, sizeof(struct student),1 ,fp)

19、;fclose(fp);int i, num, xu, a;llll: printf(nn 请输入需要修改信息的学生的学号: n);scanf(%d, &num);for (i = 1; i= stu0.num) printf( 查无此人 );return ;printf( 请问您是否是需要修改此生的信息: );printf( 学号 %d 姓名 %s 性别 %s 家庭住址 %s 联系电话 %d, stui.num, , stui.sex, stui.home, stui.Tel);printf(nn 如果是请输入 1 不是请输入 2: n);loop:scanf(%d, &x

20、u);switch (xu)printf( 请输入新的信息 n);printf( 学号: );scanf(%d, &stui.num);printf(姓名:);scanf(%s, );printf( 性别 :);scanf(%s, stui.sex);printf( 家庭住址: );scanf(%s, stui.home);printf( 联系电话 :);scanf(%d, &stui.Tel);printf( 完成修改! );break;break;default:printf(n 输入错误,请重新输入 0 1 中的一项 );goto loop;/* 修改学生信息*/if

21、(fp = fopen(stu, wb) = NULL)printf(Can not open filen);exit(1);/* 打开文件 */fwrite(stu, sizeof(struct student), stu0.num, fp); /* 写入文件中 */fclose(fp);rintf(n 是否继续修改学生信息 n 是请输入 1 n 退出请输入 2n 返回上一层请输 入 0);lllk:scanf(%d, &a);switch (a)case 0:info();break;goto llll;break;break;default:printf(n 输入错误,请重新输入 0 1

22、 中的一项 );goto lllk;/* 关闭文件 */学生数据模块的函数与学生信息模块的函数相似,录入,修改,查询功能。学生综合信息查询 void look()系统流程2.该函数运行后,首先打开文件,读取文件内容到数组中。设置变量num用户输入一个学号。然后用一个for循环将num与数组中的学号的值进行比较,如果相同,跳出循环。找到 后将其输出。然后询问是否继续修改,如果是goto 语句回到输入学号那里,如果不是,关闭文件退出。代码实现void look()/*综合信息显示函数*/int m;FILE *fp;if (fp = fopen(stu, rb) = NULL) printf(Ca

23、n not open filen);exit(1);fread(stu, sizeof(struct student),1 , fp);for(m = 1;m =stu0.num;m+)fread(&stum, sizeof(struct student),1 ,fp);fclose(fp);/* 读取文件 */int i, num, a;llll: printf(nn 请输入需要查询综合信息的学生的学号: n);scanf(%d, &num);for (i = 1; i= stu0.num) printf( 查无此人 );return ;printf( 学生数据显示: nn);printf(

24、 学号 %d 姓名 %s 性别 %s 家庭住址 %s 联系电话 %d n, stui.num, , stui.sex, stui.home, stui.Tel);printf( 语文 %d 数学 %d 英语 %d 平均分 %d 考试名次 %d n, stui.s1, stui.s2, stui.s3, stui.ave, stui.m1);printf( 同学互评分%d 品德成绩 %d 任课教师评分%d 综合测评总分%d 综合排名 %d, stui.a1, stui.a2, stui.a3, stui.z, stui.m2);printf(n 是否继续查询学生数据 是请输入

25、1 否请输入 2n);lllk:scanf(%d, &a);switch (a)goto llll;break;break;default:printf(n 输入错误,请重新输入 0 1 中的一项 );goto lllk;fclose(fp);/* 关闭文件 */用户指南 void help()系统流程该函数主要用来提示用户此系统的信息,进入后浏览信息,最后定义一个变量i,请用户输入 1 返回到主菜单进行操作。如果用户输入的不是1 则提示请输入 1。代码实现void help()int i;printf( 本系统可以存储学生的基本信息和各科成绩,并能计算考试成绩,综合测评成绩和排名。 nn )

26、;printf( 基本信息包括:学号、姓名、性别、家庭住址、联系电话; nn 各科成绩包括:语文、数学、英语成绩; nn);printf( 其它包括:考试名次、同学互评分、品德成绩、任课教师评分等。 nn);printf( 说明:考试成绩排名是按照考试成绩平均分计算的 ( 平均分=(语 +数 +外 )/3)nn);printf( 综合测评总分=(考试成绩)*+ (同学互评分) *+( 品德成绩 )*n+(任课教师评分 )*nn);printf( 此系统最多可管理5000人信息。 );printf( 其它请按照提示操作即可。 n);printf(返回上一层请输入1);loop:scanf(%d,

27、&i);if(i=1)one();elseprintf(输入错误请重新输入:);goto loop;系统测试及调试系统的测试及调试是为了发现程序中错误,而执行程序的过程。运行过程:1)运行该程序,进入一个主菜单函数,出现了选择的菜单:可输入选项进入子菜单(两个子菜单分别进入):2)在进入第一个子菜单后可进行学生的信息处理:在输入 1 后可进行学生信息的录入:每录完一个信息后会询问是否继续录入或者返回上一层或者退出返回上一层,便回到了主菜单可继续进行操作:在信息处理内选择 2 来修改学生的信息:3)在进入第二个子菜单后可进行学生的数据处理:数据录入:数据查询:3)在主菜单选择3 进入后可查询综合

28、信息:4)在主菜单选择4 进入后可查看用户指南:输入 5便退出系统:系统调试过程中遇到的问题:1)录入学生信息后能够写进文件,但是只能查询时只能查询到第一个人的信息错误原因:录入信息后储存后。无法知道信息的条数。读取的时候只读取了第一条。解决方案:在信息录入的时候设置一个变量来记录学生信息录入的条数。并且将条数写进文件中,读取的时候将它先读出来,再读取学生信息。2)录入学生信息后再次读取,学生学号变为乱码。错误原因:录入完信息后储存了一个记录学生信息条数的变量。这个数储存的时候储存在了文件的第一个位置。而学生信息所在的结构体则在后面,所以读取的时候出错。解决方法:将结构体的第一个用来储存记录学

29、生信息变化的数据。信息录入则从第二个开始录入。3)第二次录入学生信息与第一次录入学生信息的时候变量的设置问题。错误原因:在第一次录入时读不到设置的变量而第二次需要读取设置的变 量。解决方案:在打开文件时增加一个判断,文件是否为空,若是空则便是第一次写入学生信息,则设置变量为0。若不为空,则读取变量,并继续进行累加。其他错误与此类似,便不一一举例。用户手册)本系统执行文件为:。) 进入系统界面后,在主菜单的中,选择相应的操作前的数字,出现提示界面。根据提示输入相关信息或得到预期结果。3)在输入信息时:学号为字符型。姓名15 个汉字或110 个英文字母。性别男或女联系方式为11 个数字家庭住址为1

30、20 个汉字。考试成绩及测评成绩都为 0100 的数字总结在五天的苦力后,我的学生信息综合管理系统项目课程设计终于完工了,虽然系统还不够完善,但是已经具备了一个信息管理系统的基本功能。一周的课程设计,虽然很忙碌,但我感觉收获很多,不仅仅在知识和技术上,而且我也懂得了很多人生哲理,懂得怎么样去制定计划,怎么样去实现这个计划。曾经有过放弃本系统的念头,曾经有过敷衍了事的想法。但是每一次技术突破的喜悦,都让我坚定了胜利的信念。通过这次程序设计,让我更好的了解C 语言,对系统的编译有了更深刻的认识。在测试和调试方面,曾经天真的一位编程才是最浪费时间的,在这次实践中,让我更加清楚的认识到,软件测试和调试

31、在整个工作中所占的比例。也让我更加相信调试是软件开发中最艰巨的脑力劳动。本次课程设计中出现了许多隐藏的错误,令我收获不少。但我相信也一定会有很多未发现的问题,特别是在以后的系统扩展中,种些问题会更明显,但我相信问题的出现就是需要我们去解决。通过这次课程设计我通彻的体会到了一个问题:在做实验前一定要将课本上的知识吃透,因为这是实验的基础,否则,这将使你做实验的难度加大,浪费做实验的宝贵时间。比如说文件的使用,因为没有将文件的使用学习贯彻,所以导致在调试的时候出现各种错误。在做实验的时候才去摸索,这将使我极大地浪费时间。在这次课程设计中我学到了很多很多。受益匪浅。总体来说,这次 C语言程序设计实验

32、还是比较成功的,虽然最终程序还存在一些不足,但能取得这样的成绩我还是比较高兴的。最后,要感谢学校为我们提供这次实验机会,也要感谢老师的教导,帮助与支持参考文献1张磊编着C语言程序设计教程第2版中国铁道出版社2薛小龙编着开发日记:深入体验C语言项目开发清华大学出版社3刘宇君张月琴叶瑶王庆生编着C+卷序设计案例分析清华大学出版社附录/* 学生综合测评系统*/#include#include#include#define N 5000 struct studentint num;char name20;char sex10;char home200;int s1;int s2;int s3;int

33、ave;int Tel;int m1;int a1;int a2;int a3;double z;int m2;stuN;void one();void info();void data();void look();void help();void info_1();/* 学号 */* 学生姓名 */*性别 男/女*/ TOC o 1-5 h z /* 家庭住址*/*语文成绩*/*数学成绩*/*英语成绩*/*三科平均成绩*/*联系方式*/*考试名次 */* 同学互评分*/* 品德成绩 */*任课教师评分*/*综合测评总分*/*综合测评名次*/*主菜单函数声明 */* 信息处理函数声明*/*数据

34、处理函数声明*/*综合信息显示函数声明 */* 用户指南函数声明*/*信息录入函数声明*/void sort_num(struct student a, int n);/* 学号排序函数声明 */void sort_ave(struct student a, int n);/*平均分排序函数声明 */void sort_z(struct student a, int n);/* 综合成绩排序函数声明 */void info_2();/*信息修改函数声明*/void info_3();/*信息浏览函数声明*/void data_1();/*考试成绩录入及处理函数声明 */void data_2(

35、);/*测评成绩录入及处理函数声明 */void data_3();/*数据修改函数声明 */void data_4();/*数据查询函数声明 */ int count;int main(void)one();return 0;void one()/* 主菜单函数*/int opt1;/*主菜单选项*/printf( 欢迎使用学生综合测评系统nn);printf( 1: 学生信息处理2:学生数据处理nn 3: 学生综合信息);printf( 4 :用户使用指南nn);printf( 5:退出 nn);printf( 请输入 1 2 3 4 5 中的任意一个选项进行操作:);loop: scan

36、f(%d, &opt1);switch (opt1)info();break;data();break;look();break;help();break;break;default:printf( 输入错误,请重新输入 1 2 3 4 5 中的一项 );scanf(%d, &opt1);goto loop;void help()int i;printf( 本系统可以存储学生的基本信息和各科成绩,并能计算考试成绩,综合测评成绩和排名。 nn );printf( 基本信息包括:学号、姓名、性别、家庭住址、联系电话; nn 各科成绩包括:语文、数学、英语成绩; nn);printf( 其它包括:考

37、试名次、同学互评分、品德成绩、任课教师评分等。 nn);printf( 说明:考试成绩排名是按照考试成绩平均分计算的 ( 平均分=(语 +数 +外 )/3)nn);printf( 综合测评总分=(考试成绩 )*+ (同学互评分) *+( 品德成绩 )*n+(任课教师评分 )*nn);printf( 此系统最多可管理5000人信息。 );printf( 其它请按照提示操作即可。 n);printf(返回上一层请输入1);loop:scanf(%d,&i);if(i=1)one();elseprintf(输入错误请重新输入:”);goto loop; TOC o 1-5 h z void info

38、()/*信息处理函数*/int opt2; /*子菜单选项*/printf(nn 欢迎进入信息处理nn);printf(1.学生信息录入nn 2.学生信息的修改nn);printf(3.返回nn);printf(请输入 1 2 3 中的任意一个选项进行操作);loop: scanf(%d, &opt2);switch (opt2)info_1();break;info_2();break;one();break;default: printf( 输入错误,请重新输入1 2 3 中的一项 );goto loop; void info_1() /*信息录入函数*/FILE *fp;int s, i

39、,count;count=0;i = 1;if(fp = fopen(stu,rb+) = NULL)if(fp = fopen(stu,wb) = NULL)printf(Cont open filen);exit(1);stu0.num=0;elsefclose(fp);if(fp = fopen(stu,ab+) = NULL)printf(Cont open filen);exit(1);fread(stu,sizeof(struct student),N,fp);fscanf(fp,%d,&stu0.num);loop:printf(nn您将开始录入学生信息n输入1将继续n输入0将退

40、出n输入2将返回上一层 );looo: scanf(%d, &s);switch (s)case 0:break;count+;printf(nn 您将输入第%d 学生的信息: ,count);printf(n 学号:);scanf(%d,&stui.num);printf( 姓名:);scanf(%s,);printf( 性别 :);scanf(%s,stui.sex);printf( 家庭住址: );scanf(%s,stui.home);printf( 联系电话 :);scanf(%d,&stui.Tel);i+;goto loop;break;info();break

41、;default:printf(n 输入错误,请重新输入 0 1 2 中的一项 );goto looo;sort_num(stu, i);stui+1.num=0;stu0.num += count;fseek(fp, 0, SEEK_SET);fwrite(stu, sizeof(struct student), N, fp);fseek(fp, 0, SEEK_SET);fread(stu, sizeof(struct student), N, fp);for(i=1;i=stu0.num;i+)printf(%dn,stui.num);system(pause);fclose(fp);v

42、oid info_2() /*信息修改函数*/FILE *fp;int j;if (fp = fopen(stu, rb) = NULL)printf(Can not open filen);exit(1);/* 打开文件 */fread(stu, sizeof(struct student),1 , fp);for(j = 1;j =stu0.num;j+)fread(&stuj, sizeof(struct student),1 ,fp);fclose(fp);int i, num, xu, a;llll: printf(nn 请输入需要修改信息的学生的学号: n);scanf(%d, &

43、num);for (i = 1; i= stu0.num) printf( 查无此人 );return ;printf( 请问您是否是需要修改此生的信息: );printf( 学号 %d 姓名 %s 性别 %s 家庭住址 %s 联系电话 %d, stui.num, , stui.sex, stui.home, stui.Tel);printf(nn 如果是请输入 1 不是请输入 2: n);loop:scanf(%d, &xu);switch (xu)printf( 请输入新的信息 n);printf( 学号: );scanf(%d, &stui.num);printf(姓名

44、:);scanf(%s, );printf( 性别 :);scanf(%s, stui.sex);printf( 家庭住址: );scanf(%s, stui.home);printf( 联系电话 :);scanf(%d, &stui.Tel);printf( 完成修改! );break;break;default:printf(n 输入错误,请重新输入 0 1 中的一项 );goto loop;/* 修改学生信息*/if (fp = fopen(stu, wb) = NULL)printf(Can not open filen);exit(1);/* 打开文件 */fwri

45、te(stu, sizeof(struct student), stu0.num, fp); /* 写入文件中 */fclose(fp);printf(n 是否继续修改学生信息 n 是请输入 1 n 退出请输入 2n 返回上一层请输入 0);lllk:scanf(%d, &a);switch (a)case 0:info();break;goto llll;break;break;default:printf(n 输入错误,请重新输入 0 1 2 中的一项 );goto lllk;/* 关闭文件 */void data()/*数据处理函数*/int opt3;printf(nn/*子菜单选项*

46、/欢迎进入数据处理nn);printf(1.考试成绩录入及处理nn2.测评成绩录入及处理nn);printf(3.学生数据修改nn 4.学生数据查询n);printf(5.返回nn);printf(nn 请输入 1 2 3 4 5 中的任意一个选项进行操作);loop: scanf(%d, &opt3);switch (opt3)data_1();break;data_2();break;data_3();break;data_4();break;one();break;default:printf( n 输入错误,请重新输入 1 2 3 4 中的一项 n);goto loop;void da

47、ta_1()/*数据修改函数*/int m;FILE *fp;if (fp = fopen(stu, rb) = NULL)printf(Can not open filen);exit(1);fread(stu, sizeof(struct student),1 , fp);for(m = 1;m = stu0.num;m+)fread(&stum, sizeof(struct student),1 ,fp);fclose(fp);int i, num, xu, a;llll: printf(nn 请输入需要录入成绩的学生的学号: n);scanf(%d, &num);for (i = 1;

48、 i= stu0.num) printf( 查无此人 );return ;printf( 请问您是否是需要录入此生的考试成绩的数据: );printf( 学号 %d 姓名 %s 性别 %s 家庭住址 %s 联系电话 %d n, stui.num, , stui.sex, stui.home, stui.Tel);printf(nn 如果是请输入 1 不是请输入 2: n);loop:scanf(%d, &xu);switch (xu)printf(nn 您将输入此学生的考试成绩: n);looo:printf( 语文成绩: );scanf(%d, &stui.s1);if (

49、stui.s1100) printf( 输入错误请重新输入);goto looo;printf( 数学成绩: );looi:scanf(%d, &stui.s2);if (stui.a2100) printf( 输入错误请重新输入);goto looi;printf( 英语成绩: );looy:scanf(%d, &stui.s3);if (stui.a1100) printf( 输入错误请重新输入);goto looy;break;default:printf(n 输入错误,请重新输入 0 1 中的一项 );goto loop;int j;for (j = 1; j=a; j+)/* 求其平

50、均分*/* 根据平均分排序*/* 录入其考试名次*/* 根据学号排序*/stuj.ave = (stuj.s1 + stuj.s2 + stuj.s3) / 3);sort_ave(stu, a);for (j = 1; j=a; j+)stuj.m1 = j;sort_num(stu, a);if (fp = fopen(stu, wb) = NULL)printf(Can not open filen);exit(1);/* 打开文件 */fwrite(stu, sizeof(struct student), N, fp); /* 写入文件中 */fclose(fp);printf(n 是

51、否继续录入学生数据 是请输入 1 否请输入 2n);lllk:scanf(%d, &a);switch (a)goto llll;break;break;default:printf(n 输入错误,请重新输入 0 1 中的一项 );goto lllk;fclose(fp);/* 关闭文件 */void data_2()/*测评成绩录入及处理函数*/int m;FILE *fp;if (fp = fopen(stu, rb) = NULL)printf(Can not open filen);exit(1);fread(stu, sizeof(struct student),1 , fp);fo

52、r(m = 1;m = stu0.num;m+)fread(&stum, sizeof(struct student),1 ,fp);fclose(fp);int i, num, xu, a;llll: printf(nn 请输入需要录入成绩的学生的学号: n);scanf(%d, &num);for (i = 1; i= stu0.num) printf( 查无此人 );return ;printf( 请问您是否是需要录入此生的考试成绩的数据: );printf( 学号 %d 姓名 %s 性别 %s 家庭住址 %s 联系电话 %d n, stui.num, , stui.s

53、ex, stui.home, stui.Tel);printf(nn 如果是请输入 1 不是请输入 2: n);int s;looh: scanf(%d, &s);switch (s)case 0: break;case 1:printf(nn 您将输入此学生的测评成绩: n);printf( 同学互评分: );scanf(%d, &stui.a1);if (stui.a1100) printf( 输入错误请重新输入);goto looo;printf( 品德成绩: );scanf(%d, &stui.a2);if (stui.a2100) printf( 输入错误请重新输入);goto lo

54、oi;printf(任课老师评分:);looy:scanf(%d, &stui.a3);if (stui.a3100) printf( 输入错误请重新输入);goto looy;break;default:printf(输入错误,请重新输入0 1中的一项)scanf(%d, &s); goto looh;int j;for (j = 1; j=a; j+) stuj.m2 = (stuj.m1* + stuj.a1* + stuj.a2*+stuj.a3* );sort_ave(stu, a);/* 求其平均分*/* 根据平均分排序*/for (j = 1; j=a; j+) /* 录入其考试

55、名次*/* 根据学号排序*/stuj.m2 = j;sort_num(stu, a);if (fp = fopen(stu, wb) = NULL)printf(Can not open filen);exit(1);/* 打开文件 */fwrite(stu, sizeof(struct student), N, fp); /* 写入文件中 */fclose(fp);printf(n 是否继续录入学生数据 是请输入 1 否请输入 2n);lllk:scanf(%d, &a);switch (a)goto llll;break;break;default:printf(n 输入错误,请重新输入

56、0 1 中的一项 );goto lllk;fclose(fp);/* 关闭文件 */void data_3()/*数据修改函数*/int m;FILE *fp;if (fp = fopen(stu, rb) = NULL)printf(Can not open filen);exit(1);fread(stu, sizeof(struct student),1 , fp);for(m = 1;m = stu0.num;m+)fread(&stum, sizeof(struct student),1 ,fp);fclose(fp);int i, num, xu, a;llll: printf(n

57、n 请输入需要修改数据的学生的学号: n);scanf(%d, &num);for (i = 1; i= stu0.num) printf( 查无此人 );return ;printf( 请问您是否是需要修改此生的数据: );printf( 学号 %d 姓名 %s 性别 %s 家庭住址 %s 联系电话 %d n, stui.num, , stui.sex, stui.home, stui.Tel);printf( 语文 %d 数学 %d 英语 %d 平均分 %d 考试名次 %d n, stui.s1, stui.s2, stui.s3, stui.ave, stui.m1);

58、printf( 同学互评分%d 品德成绩 %d 任课教师评分%d 综合测评总分%d 综合排名 %d, stui.a1, stui.a2, stui.a3, stui.z, stui.m2);printf(nn 如果是请输入 1 不是请输入 2: n);loop:scanf(%d, &xu);switch (xu)printf( 请输入新的信息 n);printf( 语文成绩:);scanf(%d, &stui.s1);printf( 数学成绩:);scanf(%d, &stui.s2);printf( 英语成绩 :);scanf(%d, &stui.s3);printf(平均分:);scanf

59、(%s, &stui.ave);printf( 考试排名 :);scanf(%d, &stui.m1);printf( 同学互评分: );scanf(%d, &stui.a1);printf( 品德成绩: );scanf(%d, &stui.a2);printf( 任课教师评分:);scanf(%d, &stui.a3);printf( 综合成绩: );scanf(%fl, &stui.z);printf( 综合排名 :);scanf(%d, &stui.m2);printf( 完成修改! );break;break;default:printf(n 输入错误,请重新输入 0 1 中的一项 )

60、;goto loop;/* 修改学生数据*/if (fp = fopen(stu, wb) = NULL)printf(Can not open filen);exit(1);/* 打开文件 */fwrite(stu, sizeof(struct student), stu0.num, fp); /* 写入文件中 */ fclose(fp);printf(n 是否继续查询学生数据 是请输入 1 否请输入 2n);lllk:scanf(%d, &a);switch (a)goto llll;break;break;default:printf(n 输入错误,请重新输入 0 1 中的一项 );go

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论