《C语言课程设计 学生成绩管理系统程序设计.docx》由会员分享,可在线阅读,更多相关《C语言课程设计 学生成绩管理系统程序设计.docx(32页珍藏版)》请在三一办公上搜索。
1、C语言课程设计 学生成绩管理系统程序设计C语言课程设计论文 题 目: 学生成绩管理系统程序设计 学 院: 地球物理与空间信息学院 专 业: 2010级地球物理专业061103班 姓 名: 宁章桂 指导教师: 曹雪莲 XX年x月x日 1 目录 第一章 绪论. 1 1.1 课题背景和意义 . 1 1.2 项目开发的目标 . 1 1.3 开发工具 . 1 第二章 设计任务分析 . 2 2.1 题目 . 2 2.2 目的 . 2 2.3 要求 . 2 2.4 学生成绩管理系统的功能 . 2 第三章 算法与流程图 . 3 第四章 运行结果截屏分析 . 4 4.1 主菜单 . 4 4.2 输入学生信息 .
2、 4 4.3 显示当前全部学生信息 . 5 4.4 按各种排序显示全部学生信息 . 6 4.5 查询学生信息 . 错误!未定义书签。 4.6 修改学生信息 . 错误!未定义书签。 4.7 添加学生信息 . 12 4.8 删除学生信息 . 13 4.9 从文件读入学生信息 . 14 4.10 删除文件中学生信息 . 16 4.11 保存学生信息到文件 . 17 第五章 实习感想 . 19 附录一 主要参考文献 . 20 附录二 源程序代码 . 21 第一章 绪论 1.1课题背景和意义 该项目开发的软件为学校学生信息管理系统软件,是鉴于目前学校学生人数剧增,学生信息呈爆炸性增长的前提下,学校对学生
3、信息管理的自动化与准确化的要求日益强烈的背景下构思出来的,该软件设计完成后可用于学校,学院等教育单位的学生信息的管理. 目前社会上信息管理系统发展飞快,各个企事业单位都引入了信息管理软件来管理自己日益增长的各种信息,学生管理系统也是有了很大的发展,商业化的学生信息管理软件也不少.但本系统完全独立开发,力求使系统功能简洁明了,功能齐全且易于操作。 学生信息管理系统是一个教育单位不可缺少的部分。一个功能齐全、简单易用的信息管理系统不但能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要。所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人
4、们使用传统人工的方式管理文件档案、统计和查询数据,这种管理方式存在着许多缺点,如:效率低、保密性差,人工的大量浪费;另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着来越重要的作用。 作为计算机应用的一部分,使用计算机对学校的各类信息进行管理,具有手工管理所无法比拟的优点.例如:检索迅速、查询方便、效率高、可靠性好、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学校信息管理的效率,也是一个单位科学化、正规化管理,与世界接轨的重要条件。 1.2项目
5、开发的目标 建立学生信息管理系统,采用计算机对学生信息进行管理,进一步提高办学效益和现代化水平。帮助广大教师提高工作效率,实现学生信息管理工作流程的系统化、规范化和自动化。 1.3开发工具 本系统在Microsoft Visual C+6.0下开发。 1 第二章、设计任务分析 2.1题目 设计一个学生成绩管理系统,要求: 1、有简单操作界面,用户可通过数字选择功能; 2、录入成绩(链表的建立,每个结点包括:学号、 姓名、数学、物理、英语、计算机、总分); 3、输出成绩(链表的输出,按学号排序、按总分排序); 4、查找成绩(按学号或姓名查找结点, 按学号顺序插入结点,按学号或者姓名删除结点);
6、5、保存到文件, 以及从文件中读出。 2.2目的 (1)掌握和利用C语言进行程序设计的能力; (2)理解和运用结构化程序设计的思想和方法; (3)掌握开发一个小型实用系统的基本方法; (4)学会调试一个较长程序的基本方法; (5)掌握书写课程设计报告的能力。 2.3要求 (1)用C语言实现系统; (2)利用结构体数组实现学生成绩的数据结构设计; (3)系统具有录入、修改、查询、插入、排序信息和将信息保存到文件、从文件中读出信息等基本 功能; (4)系统的各个功能模块要求用函数的形式实现; (5)完成设计任务并书写课程设计报告; 2.4学生成绩管理系统的功能 1-输入学生信息 2-显示当前全部学
7、生信息 3-按各种排序显示全部学生信息 4-查询学生信息 5-修改学生信息 6-添加学生信息 7-删除学生信息 8-从文件读入学生信息 9-删除文件中学生信息 10-保存学生信息到文件 11-退出 第三章、算法与流程图 1.系统结构图 开始 主菜单 选择1 按学号由低到高排列 选择1 输入学生信息 选择2 按总分由高到低排列 选择2 显示当前学生信息 选择3 按数学由高到低排列 选择3 按各种排序显示全部学生信息 查询学生信息 选择4 按物理由高到低排列 选择5 按英语由高到低排列 选择4 选择6 按计算机由高到低排列 选择5 修改学生信息 按姓名查询 按姓名修改 选择6 添加学生信息 选择7
8、 删除学生信息 按学号删除 选择8 从文件读入信息 选择9 删除文件信息 选择10 保存信息到文件 选择11 退出 结束 第四章、运行结果截屏分析 1、主菜单 2、输入学生信息 、选择功能1 (2)、输入学生信息 3、显示当前学生信息 、选择功能2 、显示当前学生信息 4、按各种排序显示全部学生信息 、选择功能3 、进入选择排列方法菜单 、选择按学号由低到高排列学生信息 (4)、按总分由高到低排列学生信息 (5)、按数学由高到低排列学生信 、按物理由高到低排列学生信息 、按英语由高到低排列学生信息 、按计算机由高到低排列学生信息 5、查询学生信息 、选择功能4 、输入要查询的学生姓名 、显示所
9、查询的学生信息 6、修改学生信息 、选择功能5 、输入要修改的学生姓名 、修改成功 该同学的原来信息: 7、添加学生信息 、选择功能6 、输入新插入的同学的信息 、添加成功 8、删除学生信息 、选择功能7 、选择要删除的同学 、删除成功 9、从文件读入信息 、文件“学生信息” 、选择功能8 、读入成功 10、删除文件信息 、文件“11” (2)、选择功能9 (3)、选择删除信息的文件及删除成功 11、保存信息到文件 (1)、学生信息 选择功能10 、选择用来保存的文件及保存成功 第五章、实习感想 C语言的确是一门很有用的但是又是不容易的一门课程。起初刚开始实习时,以为这个课程设计不会有多难,只
10、不过是把多个函数组合起来就好了,但是,经过这十来天的编程,发现要完完整整把程序按照要求编出来是一件很不容易的事情。 在整个编程的过程中,可以说遇到了很多难题,但是让我印象最深刻的是在编写从某文件中读取学生信息这个程序时所遇到的困难。起初,程序时编写出来了,在组建时也没有错误,但是就是实现不了这个功能,接着就是整整一天的苦战;终于,能够读取文件中的信息了,可是,新问题又来了,在显示读取的信息时出现了乱序。自己弄了整整半天还是没有找出问题的所在,只好请教别人,在一个热心的学长的帮助下,终于把这个程序完完整整的没有错误地编好了。就编这个函数我就用了差不多两天的时间! 在这个程序完整地编写下来,我觉得
11、编写程序需要很大的耐心,一个稍微大点的程序就有个几百甚至上千行,没有耐心是很难做得成功的。当然细心也很需要,在编程的过程中有很多错误都是自己的粗心造成的,有时甚至自己多次检查都看不出来,这样一来,会造成时间的大量浪费。 这次的实习也是一次很好的对自我的检查。它让我知道了自己在C语言的学习上还不够认真刻苦,很多知识点还是没有很好的掌握,甚至有些知识点很生疏,这也许就是我在编写从某文件中读取学生信息这一函数时老碰壁的原因所在!从这一点上来看,发现我对待学习的态度还不够端正,有待加强。 不管怎么说,经过这一次课程设计,在C语言方面的收获最大,让我读代码的能力大大提升了不少,也巩固了很多知识。最后,在
12、这多谢我的指导老师曹雪莲老师,也多谢各位为我提供帮助的同学。 附录1 参考文献 张基温 C语言程序设计案例教程谭浩强 C程序设计 百度文库及其他网络平台 清华大学出版社清华大学出版社 附录2 源程序代码 #include #include /清屏 #include /显示目录 #include #define MAX 1000 /定义一个全局变量 void input;/学生信息输入函数 void display;/显示当前全部学生信息函数 void display1;/按各种排序显示全部学生信息函数 void find;/查找某学生信息函数 void modify;/修改某学生信息函数 vo
13、id del; /删除某学生信息函数 void insert; /添加新学生信息函数 void read; /读取某文件中学生的信息函数 void del_file; /删除某文件中学生信息函数 void save;/保存全部学生信息到某文件函数 void average;/求平均值函数 void sum;/求总分函数 void sort;/按总分由高到低排列学生信息 void Sort_by_num;/按学号由低到高排列学生信息 void sort1;/按数学由高到低排列学生信息 void sort2;/按物理由高到低排列学生信息 void sort3;/按英语由高到低排列学生信息 void
14、 sort4;/按计算机由高到低排列学生信息 int now_no=0; struct student /声明结构体类型 struct student unsigned long no; /以下10行为结构体的成员 char name20; char sex4; float score1; float score2; float score3; float score4; float sort; float ave; float sum; ; struct student stuMAX,*p;/定义结构体struct student类型的变量stuMAX和指向struct student类型数
15、据的指针变量*p void main/主函数 int as; char ch; do printf(nnnntt&*&*&*&*&*&*&); start: printf(nnnnttt 欢迎使用学生成绩管理系统n); printf(nnnntt&*按任意键继续*&); ch=getch; while(!ch); system(cls); /以下为功能选择模块 do printf(nttt欢迎使用学生成绩管理系统n); printf(&*&n); printf(ntttt1.输入学生信息ntttt2.显示当前全部学生信息ntttt3.按各种排序显示全部学生信息ntttt4.查询学生信息nttt
16、t5.修改学生信息ntttt6.添加学生信息ntttt7.删除学生信息ntttt8.从文件读入学生信息ntttt9.删除文件中学生信息ntttt10.保存学生信息到文件ntttt11.退出nn); printf(&*&nn); printf(ttt选择功能:); fflush(stdin); /用于清除缓存防止下次用scanf输入是出现错误 scanf(%d,&as); switch(as) case 1:system(cls); input; break; case 2:system(cls); display; break; case 3:system(cls); display1; br
17、eak; case 4:system(cls); find; break; case 5:system(cls); modify; break; case 6:system(cls); insert; break; case 7:system(cls); del; break; case 8:system(cls); read; break; case 9:system(cls); del_file; break; case 10:system(cls); save; break; case 11:system(exit); exit(0); default:system(cls); goto
18、 start; while(1); /while(1),1表示真,所以while(1)表示永远循环下去 /至此功能选择结束 void input /原始数据录入模块 int i=0; char ch; do printf(tttt1.录入学生信息n输入第%d个学生的信息n,i+1); printf(n输入学生学号:); scanf(%u,&stui.no); fflush(stdin); printf(n输入学生姓名:); fflush(stdin); gets(stui.name); printf(n输入学生性别:); fflush(stdin); gets(stui.sex); print
19、f(n输入学生数学成绩:); scanf(%f,&stui.score1); printf(n输入学生物理成绩:); fflush(stdin); scanf(%f,&stui.score2); printf(n输入学生英语成绩:); fflush(stdin); scanf(%f,&stui.score3); printf(n输入学生计算机成绩:); fflush(stdin); scanf(%f,&stui.score4); printf(nn); i+; now_no=i; printf(是否继续输入?(Y/N); fflush(stdin); ch=getch; system(cls)
20、; while(ch!=n&ch!=N); system(cls); void display/显示当前全部学生信息函数 int i; char as; average; do printf(ttt班级学生信息列表nn); printf(&*&n); printf(t学号t姓名t性别t数学t物理t英语t计算机t平均t总分nn); for(i=0;inow_no&stui.name0;i+) printf(t%ut%st%st%.2ft%.2ft%.2ft%.2ft%.2ft%.2fnn,stui.no,stui.name,stui.sex,stui.score1,stui.score2,stu
21、i.score3,stui.score4,stui.ave,stui.sum); printf(&*&nn); printf(tt按任意键返回主菜单.); fflush(stdin); as=getch; while(!as); system(cls); void display1/按各种排序显示全部学生信息函数 int a; start: printf(nttt欢迎使用学生成绩管理系统nn); printf(&*&n); printf(nttt1.按学号由低到高排列nttt2.按总成绩由高到低排列nttt3.按数学成绩由高到低排列nttt4.按物理成绩由高到低排列nttt5.按英语成绩由高到
22、低排列nttt6.按计算机成绩由高到低排列nttt7.返回主菜单请选择其他nn);/选择查看方式 printf(&*&nn); printf(ttt选择查看方式:); scanf(%d,&a); switch(a) case 1:system(cls);Sort_by_num;break; case 2:system(cls);sort;break; case 3:system(cls);sort1;break; case 4:system(cls);sort2;break; case 5:system(cls);sort3;break; case 6:system(cls);sort4;br
23、eak; default:system(cls);/选择4.返回主菜单请按其他键 void Sort_by_num/按学号由低到高排序模快 struct student temp; /定义结构体变量temp,用作交换时的临时变量 int i,j; char as; sum; average; for(i=1;inow_no;+i) /使用冒泡法升序排列 for(j=1;j=now_no-i;+j) if(stuj.nostuj-1.no) temp=stuj; stuj=stuj-1; stuj-1=temp; printf(ttt班级学生信息列表nn); printf(按学号由低到高排列学生
24、信息:n); printf(&*&n); printf(t学号t姓名t性别t数学t物理t英语t计算机t平均t总分nn); for(i=0;inow_no&stui.name0;i+) printf(t%ut%st%st%.2ft%.2ft%.2ft%.2ft%.2ft%.2fnn,stui.no,stui.name,stui.sex,stui.score1,stui.score2,stui.score3,stui.score4,stui.ave,stui.sum); printf(&*&nn); printf(tt按任意键返回主菜单.); fflush(stdin); as=getch; sy
25、stem(cls); while(!as); void sort /按总分由高到低排列学生信息 struct student temp; int i,j; char as; sum; average; for(i=1;inow_no;i+) for(j=1;j=now_no-i;j+) if(stuj-1.avestuj.ave) temp=stuj; stuj=stuj-1; stuj-1=temp; printf(ttt班级学生信息列表nn); printf(按总分由高到低排列学生信息:n); printf(&*&n); printf(t学号t姓名t性别t数学t物理t英语t计算机t平均t总
26、分nn); for(i=0;inow_no&stui.name0;i+) printf(t%ut%st%st%.2ft%.2ft%.2ft%.2ft%.2ft%.2fnn,stui.no,stui.name,stui.sex,stui.score1,stui.score2,stui.score3,stui.score4,stui.ave,stui.sum); printf(&*&nn); printf(tt按任意键返回主菜单.); fflush(stdin); as=getch; system(cls); while(!as); void sort1/ 按数学分数由高到低排列学生信息 struct student temp; int i,j; char as; sum; average; for(i=1;inow_no;i+) for(j=1;j=now_no-i;j+) if(stuj-1.score1stuj.score1) temp=stuj; stuj=stuj-1; stuj-1=temp; printf(ttt班级学生信息列表nn); printf(按数学分数由高到低