收藏 分享(赏)

C语言课程设计报告学生信息管理系统.doc

上传人:精品资料 文档编号:8881227 上传时间:2019-07-15 格式:DOC 页数:59 大小:354.38KB
下载 相关 举报
C语言课程设计报告学生信息管理系统.doc_第1页
第1页 / 共59页
C语言课程设计报告学生信息管理系统.doc_第2页
第2页 / 共59页
C语言课程设计报告学生信息管理系统.doc_第3页
第3页 / 共59页
C语言课程设计报告学生信息管理系统.doc_第4页
第4页 / 共59页
C语言课程设计报告学生信息管理系统.doc_第5页
第5页 / 共59页
点击查看更多>>
资源描述

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

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

3、56.用户手册217.总结218.参考文献229.附录23第 2 页1.问题概述设计一个学生综合测评的信息及成绩的管理系统,以解决传统纸质信息统计的不易修改,储存及放置等诸多不便及弊端。来简化学校的办公,节约时间及人力。1. 系统需求分析在学生信息的日常管理中,经常需要对学生相关信息进行处理,采用传统的手工记录,查询方式,显然有很多不便,如多次的增、删、改可能使信息变得混乱,为今后的信息提取带来很多麻烦。为了解决这一问题,可采用现代化的手段计算机进行系统的管理。这样可大大提高管理的质量和效率,并且使学生的信息管理也从手工操作中解脱出来,减少纸制材料的数量,对日常信息的查询、方便、快捷。因此,基

4、于这些方面的考虑,决定开发本系统。2. 系统概要设计设计一个学生综合测评的信息及成绩的管理系统,以解决传统第 3 页纸质信息统计的不易修改,储存及放置等诸多不便及弊端。来简化学校的办公,节约时间及人力。3.1 系统的主要功能系统的主要功能是实现学生基本的信息及成绩的录入和管理。主要包括:A、学生信息处理(1) 学生信息的录入。(2) 学生信息的修改。(3) 学生信息的浏览B、学生数据处理:(1) 学生考试数据输入并计算平均分及名次(2) 学生测评数据输入并计算综合测评总分及名次(3) 学生数据的修。(4) 学生数据的查询C、学生综合信息显示3.2 系统的总体结构 (1)程序主界面的设计第 4

5、页主界面图 3.1.1 系统主界面结构图主界面1学生信息处理系统 2学生数据处理系统2学生数据处理系统 3学生综合信息显示4用户指南5 退出系统第 5 页(2)学生信息处理子界面设计图 3.1.2 系统子界面结构图 1学生信息处理1录入学生信息 2修改学生信息 3返回主菜单学生数据处理学生数据处理2测评成绩录入及处理3学生数据修改第 6 页图 3.1 系统子界面结构图 21、学生信息处理(1) 录入学生信息、学号、姓名、性别、家庭住址、联系电话,按学号以小到大的顺序存入文件中。学生信息可先输入到数组中,排序后可写到文件中。(2) 修改同学信息。2、学生数据处理:(1) 考试成绩录入及处理:考试

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

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

8、 a2; /*品德成绩*/int a3; /*任课教师评分*/int z; /*综合测评总分*/int m2; /*综合测评名次*/stuN;4 系统的详细设计根据系统总体结构对问题进行的模块划分,对总的问题可划分为:学生信息处理、学生数据处理、学生综合信息查询三个大模块,另还设置了用户帮助函数及退出系统。第 9 页首先在主函数中调用了 void one()函数来显示主菜单,主菜单中调用子菜单也就是学生信息处理、学生数据处理的菜单。学生信息处理用 void info()来显示子菜单 1,子菜单 1 中调用了void info_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、数来实现其功能以上就是此系统中使用的函数来实现其功能。4.1 主菜单 void one()1.系统流程该函数主要用来显示主菜单的内容以及进入子菜单实现功能,该函数实现过程中首先定义了一个变量 opt1,这是用户选择进入那个模块的选项。首先判第 10 页断 opt1 的值,如果为 1 则调用 void info()进入信息管理模块,如果为 2 则调用void data()进入数据管理模块,如果为 3 则调用 void look()进入学生综合信息查询功,如果为 4 则调用 void help()进入用户指南函数查看,如果为 5 则退出系统。如果用户没有输入 12345 中的选项,则会提示输入错误

11、请重新输入。2.代码实现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“, switch (opt1)case 1:info();break;case 2:data();break;case 3:look();第 11 页break;case

12、 4:help();break;case 5:break;default:printf(“ 输入错误,请重新输入 1 2 3 4 5 中的一项“);scanf(“%d“, goto loop;4.2 子菜单 1 void info()1.系统流程该函数主要用来显示子菜单 1 的内容以及进入功能实现函数,该函数实现过程中首先定义了一个变量 opt2,这是用户选择进入那个功能的选项。首先判断 opt2 的值,如果为 1 则调用 void info_1()进入学生信息录入功能,如果为 2则调用 void info_2()进入学生信息修改功能,如果为 3 则调用 void one()返回到主菜单。如果

13、用户没有输入 123 中的选项,则会提示输入错误请重新输入。2.代码实现void info() /*信息处理函数 */int opt2; /*子菜单选项*/第 12 页printf(“nn 欢迎进入信息处理 nn“);printf(“ 1.学生信息录入nn 2.学生信息的修改 nn“);printf(“ 3.返回nn“);printf(“ 请输入 1 2 3 中的任意一个选项进行操作“);loop: scanf(“%d“, switch (opt2)case 1:info_1();break;case 2:info_2();break;case 3:one();break;default: p

14、rintf(“输入错误,请重新输入 1 2 3 中的一项“);goto loop; 4.3 学生信息录入 void info_1()1.系统流程该函数运行后,首先打开文件,然后判断文件是否为空。如果为空设置一个变量 count 来记录录入学生的数目。如果不为空,则从文件中读取 count 的值。然后开始录入学生信息,设置变量输入 s,用 switch 语句来决定是否录入或退出。输入 1 录入 0 退出 2 返回上一层。在 1 中用 goto 语句实现循环录入到第 13 页数组中。在 2 中调用 void one().最后将学生信息的数组和 count 写入文件,然后关闭文件。2.代码实现voi

15、d info_1() /*信息录入函数 */FILE *fp;int s, i,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);第 14 页fread(stu,sizeof(struct student),N,fp);

16、fscanf(fp,“%d“,loop:printf(“nn 您将开始录入学生信息 n 输入 1 将继续n 输入 2 返回上一层n 输入 0 将退出n“);looo: scanf(“%d“, switch (s)case 0:break;case 1:count+; printf(“nn 您将输入第 %d 学生的信息:“,count);printf(“n 学号:“);scanf(“%d“,printf(“姓名:“);scanf(“%s“,stui.name);printf(“性别:“);scanf(“%s“,stui.sex);printf(“家庭住址:“);scanf(“%s“,stui.h

17、ome);printf(“联系电话:“);scanf(“%d“,i+;goto loop;第 15 页break;case 2:info();break;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),

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

19、nf(“%s“, stui.name);printf(“性别:“);scanf(“%s“, stui.sex);printf(“家庭住址:“);scanf(“%s“, stui.home);printf(“联系电话:“);scanf(“%d“, printf(“完成修改!“);break;case 2:break;第 18 页default:printf(“n 输入错误,请重新输入 0 1 中的一项“);goto loop; /*修改学生信息*/if (fp = fopen(“stu“, “wb“) = NULL)printf(“Can not open filen“);exit(1); /*

20、打开文件*/fwrite(stu, sizeof(struct student), stu0.num, fp); /* 写入文件中*/fclose(fp);printf(“n 是否继续修改学生信息 n 是请输入 1 n 退出请输入 2n 返回上一层请输入 0“);lllk: scanf(“%d“, switch (a)case 0:info();break;case 1:goto llll;break;case 2:break;default:printf(“n 输入错误,请重新输入 0 1 中的一项“);goto lllk; /*关闭文件*/第 19 页学生数据模块的函数与学生信息模块的函数

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

22、read(stu, sizeof(struct student),1 , fp);for(m = 1;m = stu0.num) printf(“查无此人“);return ;printf(“ 学生数据显示:nn“);printf(“ 学号%d 姓名%s 性别%s 家庭住址%s 联系电话%d n“, stui.num, stui.name, stui.sex, stui.home, stui.Tel);printf(“ 语文%d 数学%d 英语%d 平均分%d 考试名次%d n“, stui.s1, stui.s2, stui.s3, stui.ave, stui.m1);printf(“ 同

23、学互评分%d 品德成绩%d 任课教师评分%d 综合测评总分%d 综合排名%d“, stui.a1, stui.a2, stui.a3, stui.z, stui.m2);printf(“n 是否继续查询学生数据 是请输入 1 否请输入 2n“);lllk: scanf(“%d“, switch (a)case 1:goto llll;break;case 2:break;default:printf(“n 输入错误,请重新输入 0 1 中的一项“);goto lllk;第 21 页fclose(fp); /*关闭文件*/4.6 用户指南 void help()1.系统流程该函数主要用来提示用户

24、此系统的信息,进入后浏览信息,最后定义一个变量 i,请用户输入 1 返回到主菜单进行操作。如果用户输入的不是 1 则提示请输入 1。2.代码实现void help()int i;printf(“本系统可以存储学生的基本信息和各科成绩,并能计算考试成绩,综合测评成绩和排名。nn “);printf(“ 基本信息包括:学号、姓名、性别、家庭住址、联系电话;nn 各科成绩包括:语文、数学、英语成绩;nn“);printf(“ 其它包括:考试名次、同学互评分、品德成绩、任课教师评分等。nn“);printf(“ 说明:考试成绩排名是按照考试成绩平均分计算的( 平均分=(语+数 +外)/3)nn“);p

25、rintf(“ 综合测评总分=(考试成绩)*0.6+(同学互评分)*0.1+(品德成绩)*0.1n +(任课教师评分)*0.2)nn“);printf(“ 此系统最多可管理 5000 人信息。“);printf(“ 其它请按照提示操作即可。n“);printf(“返回上一层请输入 1“);loop: scanf(“%d“,if(i=1)one();第 22 页elseprintf(“输入错误请重新输入:“);goto loop;5 系统测试及调试系统的测试及调试是为了发现程序中错误,而执行程序的过程。5.1 运行过程:1)运行该程序,进入一个主菜单函数,出现了选择的菜单:可输入选项进入子菜单(

26、两个子菜单分别进入):第 23 页2)在进入第一个子菜单后可进行学生的信息处理:在输入 1 后可进行学生信息的录入:第 24 页每录完一个信息后会询问是否继续录入或者返回上一层或者退出返回上一层,便回到了主菜单可继续进行操作:第 25 页在信息处理内选择 2 来修改学生的信息:3)在进入第二个子菜单后可进行学生的数据处理:数据录入:第 26 页数据查询:3)在主菜单选择 3 进入后可查询综合信息:第 27 页4)在主菜单选择 4 进入后可查看用户指南:5)输入 5 便退出系统:第 28 页5.2 系统调试过程中遇到的问题 :1)录入学生信息后能够写进文件,但是只能查询时只能查询到第一个人的信息

27、错误原因:录入信息后储存后。无法知道信息的条数。读取的时候只读取了第一条。解决方案:在信息录入的时候设置一个变量来记录学生信息录入的条数。并且将条数写进文件中,读取的时候将它先读出来,再读取学生信息。 2)录入学生信息后再次读取,学生学号变为乱码。错误原因:录入完信息后储存了一个记录学生信息条数的变量。这个数储存的时候储存在了文件的第一个位置。而学生信息所在的结构体则在后面,所以读取的时候出错。解决方法:将结构体的第一个用来储存记录学生信息变化的第 29 页数据。信息录入则从第二个开始录入。3)第二次录入学生信息与第一次录入学生信息的时候变量的设置问题。错误原因:在第一次录入时读不到设置的变量而第二次需要读取设置的变量。解决方案:在打开文件时增加一个判断,文件是否为空,若是空则便是第一次写入学生信息,则设置变量为 0。若不为空,则读取变量,并继续进行累加。其他错误与此类似,便不一一举例。6 用户手册 1)本系统执行文件为:Cpp1.exe。2)进入系统界面后,在主菜单的中,选择相应的操作前的数字,出现提示界面。根据提示输入相关信息或得到预期结果。3)在输入信息时:学号为字符型。姓名 15 个汉字或 110 个英文字母。性别 男或女 联系方式 为 11 个数字家庭住址 为 120 个汉字。考试成绩及测评成绩都为 0100 的数字7 总结

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报