收藏 分销(赏)

C语言专业课程设计学生成绩标准管理系统程序设计.doc

上传人:天**** 文档编号:2864527 上传时间:2024-06-07 格式:DOC 页数:51 大小:580.04KB 下载积分:14 金币
下载 相关 举报
C语言专业课程设计学生成绩标准管理系统程序设计.doc_第1页
第1页 / 共51页
C语言专业课程设计学生成绩标准管理系统程序设计.doc_第2页
第2页 / 共51页


点击查看更多>>
资源描述
C语言课程设计论文 题 目: 学生成绩管理系统程序设计 学 院: 地球物理和空间信息学院 专 业: 级地球物理专业061103班 姓 名: 宁章桂 指导老师: 曹雪莲 6月7日 目录 第一章 绪论 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 输入学生信息 4 4.3 显示目前全部学生信息 5 4.4 按多种排序显示全部学生信息 6 4.5 查询学生信息 10 4.6 修改学生信息 10 4.7 添加学生信息 12 4.8 删除学生信息 13 4.9 从文件读入学生信息 14 4.10 删除文件中学生信息 16 4.11 保留学生信息到文件 17 第五章 实习感想 19 附录一 关键参考文件 20 附录二 源程序代码 21 第一章 绪论 1.1课题背景和意义 该项目开发软件为学校学生信息管理系统软件,是鉴于现在学校学生人数剧增,学生信息呈爆炸性增加前提下,学校对学生信息管理自动化和正确化要求日益强烈背景下构思出来,该软件设计完成后可用于学校,学院等教育单位学生信息管理. 现在社会上信息管理系统发展飞快,各个企机关全部引入了信息管理软件来管理自己日益增加多种信息,学生管理系统也是有了很大发展,商业化学生信息管理软件也不少.但本系统完全独立开发,努力争取使系统功效简练明了,功效齐全且易于操作。 学生信息管理系统是一个教育单位不可缺乏部分。一个功效齐全、简单易用信息管理系统不仅能有效地减轻学校相关工作人员工作负担,它内容对于学校决议者和管理者来说全部至关关键。所以学生信息管理系统应该能够为用户提供充足信息和快捷查询手段。但一直以来大家使用传统人工方法管理文件档案、统计和查询数据,这种管理方法存在着很多缺点,如:效率低、保密性差,人工大量浪费;另外时间一长,将产生大量文件和数据,这对于查找、更新和维护全部带来了不少困难。伴随科学技术不停提升,计算机科学日渐成熟,其强大功效已为大家深刻认识,它已进入人类社会各个领域并发挥着来越关键作用。 作为计算机应用一部分,使用计算机对学校各类信息进行管理,含有手工管理所无法比拟优点.比如:检索快速、查询方便、效率高、可靠性好、存放量大、保密性好、寿命长、成本低等。这些优点能够极大地提升学校信息管理效率,也是一个单位科学化、正规化管理,和世界接轨关键条件。 1.2项目开发目标 建立学生信息管理系统,采取计算机对学生信息进行管理,深入提升办学效益和现代化水平。帮助广大老师提升工作效率,实现学生信息管理工作步骤系统化、规范化和自动化。 1.3开发工具 本系统在Microsoft Visual C++6.0下开发。 第二章、设计任务分析 2.1题目 设计一个学生成绩管理系统,要求: 1、有简单操作界面,用户可经过数字选择功效; 2、录入成绩(链表建立,每个结点包含:学号、 姓名、数学、物理、英语、计算机、总分); 3、输出成绩(链表输出,按学号排序、按总分排序); 4、查找成绩(按学号或姓名查找结点, 按学号次序插入结点,按学号或姓名删除结点); 5、保留到文件, 和从文件中读出。 2.2目标 (1)掌握和利用C语言进行程序设计能力; (2)了解和利用结构化程序设计思想和方法; (3)掌握开发一个小型实用系统基础方法; (4)学会调试一个较长程序基础方法; (5)掌握书写课程设计汇报能力。 2.3要求 (1)用C语言实现系统; (2)利用结构体数组实现学生成绩数据结构设计; (3)系统含有录入、修改、查询、插入、排序信息和将信息保留到文件、从文件中读出信息等基础 功效; (4)系统各个功效模块要求用函数形式实现; (5)完成设计任务并书写课程设计汇报; 2.4学生成绩管理系统功效 1--输入学生信息 2--显示目前全部学生信息 3--按多种排序显示全部学生信息 4--查询学生信息 5--修改学生信息 6--添加学生信息 7--删除学生信息 8--从文件读入学生信息 9--删除文件中学生信息 10--保留学生信息到文件 11--退出 第三章、算法和步骤图 按英语由高到低排列 按数学由高到低排列 按学号由低到高排列 按总分由高到低排列 按物理由高到低排列 按计算机由高到低排列 按多种排序显示全部学生信息 删除学生信息 输入学生信息 显示目前学生信息 查询学生信息 添加学生信息 修改学生信息 退出 保留信息到文件 删除文件信息 从文件读入信息 开始 主菜单 选择1 选择2 选择3 选择7 选择10 选择9 选择8 选择6 选择4 选择5 选择11 选择1 选择2 选择4 选择3 选择5 选择6 按姓名查询 按姓名修改 按学号删除 结束 1.系统结构图 第四章、运行结果截屏分析 1、主菜单 2、 输入学生信息 (1)、选择功效1 (2)、输入学生信息 3、显示目前学生信息 (1)、选择功效2 (2)、显示目前学生信息 4、按多种排序显示全部学生信息 (1)、选择功效3 (2) 、进入选择排列方法菜单 (3)、选择按学号由低到高排列学生信息 (4)、按总分由高到低排列学生信息 (5)、按数学由高到低排列学生信 (6)、按物理由高到低排列学生信息 (7)、按英语由高到低排列学生信息 (8)、按计算机由高到低排列学生信息 5、查询学生信息 (1)、选择功效4 (2) 、输入要查询学生姓名 (3)、显示所查询学生信息 6、修改学生信息 (1) 、选择功效5 (2) 、输入要修改学生姓名 (3)、修改成功 该同学原来信息: 7、添加学生信息 (1) 、选择功效6 (2) 、输入新插入同学信息 (3)、添加成功 8、删除学生信息 (1) 、选择功效7 (2) 、选择要删除同学 (3)、删除成功 9、从文件读入信息 (1) 、文件“学生信息” (2) 、选择功效8 (3)、读入成功 10、删除文件信息 (1) 、文件“11” (2) 、选择功效9 (3)、选择删除信息文件及删除成功 11、保留信息到文件 (1)、学生信息 (2)选择功效10 (3)、选择用来保留文件及保留成功 第五章、实习感想 C语言确实是一门很有用不过又是不轻易一门课程。起初刚开始实习时,认为这个课程设计不会有多难,只不过是把多个函数组合起来就好了,不过,经过这十来天编程,发觉要完完整整把程序根据要求编出来是一件很不轻易事情。 在整个编程过程中,能够说碰到了很多难题,不过让我印象最深刻是在编写从某文件中读取学生信息这个程序时所碰到困难。起初,程序时编写出来了,在组建时也没有错误,不过就是实现不了这个功效,接着就是整整一天苦战;最终,能够读取文件中信息了,可是,新问题又来了,在显示读取信息时出现了乱序。自己弄了整整半天还是没有找出问题所在,只好请教她人,在一个热心学长帮助下,最终把这个程序完完整整没有错误地编好了。就编这个函数我就用了差不多两天时间! 在这个程序完整地编写下来,我认为编写程序需要很大耐心,一个稍微大点程序就有个几百甚至上千行,没有耐心是极难做得成功。当然细心也很需要,在编程过程中有很多错误全部是自己粗心造成,有时甚至自己数次检验全部看不出来,这么一来,会造成时间大量浪费。 这次实习也是一次很好对自我检验。它让我知道了自己在C语言学习上还不够认真刻苦,很多知识点还是没有很好掌握,甚至有些知识点很生疏,这可能就是我在编写从某文件中读取学生信息这一函数时老碰壁原因所在!从这一点上来看,发觉我对待学习态度还不够端正,有待加强。 不管怎么说,经过这一次课程设计,在C语言方面收获最大,让我读代码能力大大提升了不少,也巩固了很多知识。最终,在这多谢我指导老师曹雪莲老师,也多谢各位为我提供帮助同学。 附录1 参考文件 张基温 《C语言程序设计案例教程》 清华大学出版社 谭浩强 《C程序设计》 清华大学出版社 baidu文库及其它网络平台 附录2 源程序代码 #include<stdio.h> #include<conio.h> //清屏 #include <stdlib.h> //显示目录 #include<string.h> #define MAX 1000 //定义一个全局变量 void input();//学生信息输入函数 void display();//显示目前全部学生信息函数 void display1();//按多种排序显示全部学生信息函数 void find();//查找某学生信息函数 void modify();//修改某学生信息函数 void 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 sort4();//按计算机由高到低排列学生信息 int now_no=0; struct student //申明结构体类型 struct student { unsigned long no; //以下10行为结构体组员 char name[20]; char sex[4]; float score1; float score2; float score3; float score4; float sort; float ave; float sum; }; struct student stu[MAX],*p;//定义结构体struct student类型变量stu[MAX]和指向struct student类型数据指针变量*p void main()//主函数 { int as; char ch; do{ printf("\n\n\n\n\t\t&&&***********&****&****&****&****&***********&&&"); start: printf("\n\n\n\n\t\t\t 欢迎使用学生成绩管理系统\n"); printf("\n\n\n\n\t\t&&&***************按任意键继续*****************&&&"); ch=getch(); } while(!ch); system("cls"); //以下为功效选择模块 do { printf("\n\t\t\t欢迎使用学生成绩管理系统\n"); printf("&&&**************************************************************************&&&\n"); printf("\n\t\t\t\t1.输入学生信息\n\t\t\t\t2.显示目前全部学生信息\n\t\t\t\t3.按多种排序显示全部学生信息\n\t\t\t\t4.查询学生信息\n\t\t\t\t5.修改学生信息\n\t\t\t\t6.添加学生信息\n\t\t\t\t7.删除学生信息\n\t\t\t\t8.从文件读入学生信息\n\t\t\t\t9.删除文件中学生信息\n\t\t\t\t10.保留学生信息到文件\n\t\t\t\t11.退出\n\n"); printf("&&&**************************************************************************&&&\n\n"); printf("\t\t\t选择功效:"); 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(); break; 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 start; } }while(1); //while(1),1表示真,所以while(1)表示永远循环下去 //至此功效选择结束 } void input() //原始数据录入模块 { int i=0; char ch; do { printf("\t\t\t\t1.录入学生信息\n输入第%d个学生信息\n",i+1); printf("\n输入学生学号:"); scanf("%u",&stu[i].no); fflush(stdin); printf("\n输入学生姓名:"); fflush(stdin); gets(stu[i].name); printf("\n输入学生性别:"); fflush(stdin); gets(stu[i].sex); printf("\n输入学生数学成绩:"); scanf("%f",&stu[i].score1); printf("\n输入学生物理成绩:"); fflush(stdin); scanf("%f",&stu[i].score2); printf("\n输入学生英语成绩:"); fflush(stdin); scanf("%f",&stu[i].score3); printf("\n输入学生计算机成绩:"); fflush(stdin); scanf("%f",&stu[i].score4); printf("\n\n"); i++; now_no=i; printf("是否继续输入?(Y/N)"); fflush(stdin); ch=getch(); system("cls"); } while(ch!='n'&&ch!='N'); system("cls"); } void display()//显示目前全部学生信息函数 { int i; char as; average(); do { printf("\t\t\t班级学生信息列表\n\n"); printf("&&&**************************************************************************&&&\n"); printf("\t学号\t姓名\t性别\t数学\t物理\t英语\t计算机\t平均\t总分\n\n"); for(i=0;i<now_no&&stu[i].name[0];i++) printf("\t%u\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4,stu[i].ave,stu[i].sum); printf("&&&**************************************************************************&&&\n\n"); printf("\t\t按任意键返回主菜单..."); fflush(stdin); as=getch(); } while(!as); system("cls"); } void display1()//按多种排序显示全部学生信息函数 { int a; start: printf("\n\t\t\t欢迎使用学生成绩管理系统\n\n"); printf("&&&**************************************************************************&&&\n"); printf("\n\t\t\t1.按学号由低到高排列\n\t\t\t2.按总成绩由高到低排列\n\t\t\t3.按数学成绩由高到低排列\n\t\t\t4.按物理成绩由高到低排列\n\t\t\t5.按英语成绩由高到低排列\n\t\t\t6.按计算机成绩由高到低排列\n\t\t\t7.返回主菜单请选择其它\n\n");//选择查看方法 printf("&&&**************************************************************************&&&\n\n"); printf("\t\t\t选择查看方法:"); 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();break; default:system("cls");//选择4.返回主菜单请按其它键 } } void Sort_by_num()//按学号由低到高排序模快 { struct student temp; //定义结构体变量temp,用作交换时临时变量 int i,j; char as; sum(); average(); for(i=1;i<now_no;++i) //使用冒泡法升序排列 { for(j=1;j<=now_no-i;++j) { if(stu[j].no<stu[j-1].no) { temp=stu[j]; stu[j]=stu[j-1]; stu[j-1]=temp; } } } printf("\t\t\t班级学生信息列表\n\n"); printf("按学号由低到高排列学生信息:\n"); printf("&&&**************************************************************************&&&\n"); printf("\t学号\t姓名\t性别\t数学\t物理\t英语\t计算机\t平均\t总分\n\n"); for(i=0;i<now_no&&stu[i].name[0];i++) printf("\t%u\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4,stu[i].ave,stu[i].sum); printf("&&&**************************************************************************&&&\n\n"); printf("\t\t按任意键返回主菜单..."); fflush(stdin); as=getch(); system("cls"); while(!as); } void sort() //按总分由高到低排列学生信息 { struct student temp; int i,j; char as; sum(); average(); for(i=1;i<now_no;i++) { for(j=1;j<=now_no-i;j++) { if(stu[j-1].ave<stu[j].ave) { temp=stu[j]; stu[j]=stu[j-1]; stu[j-1]=temp; } } } printf("\t\t\t班级学生信息列表\n\n"); printf("按总分由高到低排列学生信息:\n"); printf("&&&**************************************************************************&&&\n"); printf("\t学号\t姓名\t性别\t数学\t物理\t英语\t计算机\t平均\t总分\n\n"); for(i=0;i<now_no&&stu[i].name[0];i++) printf("\t%u\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4,stu[i].ave,stu[i].sum); printf("&&&**************************************************************************&&&\n\n"); printf("\t\t按任意键返回主菜单..."); fflush(stdin); as=getch(); system("cls"); while(!as); } void sort1()// 按数学分数由高到低排列学生信息 { struct student temp; int i,j; char as; sum(); average(); for(i=1;i<now_no;i++) { for(j=1;j<=now_no-i;j++) { if(stu[j-1].score1<stu[j].score1) { temp=stu[j]; stu[j]=stu[j-1]; stu[j-1]=temp; } } } printf("\t\t\t班级学生信息列表\n\n"); printf("按数学分数由高到低排列学生信息:\n"); printf("&&&**************************************************************************&&&\n"); printf("\t学号\t姓名\t性别\t数学\t物理\t英语\t计算机\t平均\t总分\n\n"); for(i=0;i<now_no&&stu[i].name[0];i++) printf("\t%u\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4,stu[i].ave,stu[i].sum); printf("&&&**************************************************************************&&&\n\n"); printf("\t\t按任意键返回主菜单..."); fflush(stdin); as=getch(); system("cls"); while(!as); } void sort2()//按物理分数由高到低排列学生信息 { struct student temp; int i,j; char as; sum(); average(); for(i=1;i<now_no;i++) { for(j=1;j<=now_no-i;j++) { if(stu[j-1].score2<stu[j].score2) { temp=stu[j]; stu[j]=stu[j-1]; stu[j-1]=temp; } } } printf("\t\t\t班级学生信息列表\n\n"); printf("按物理分数由高到低排列学生信息:\n"); printf("&&&**************************************************************************&&&\n"); printf("\t学号\t姓名\t性别\t数学\t物理\t英语\t计算机\t平均\t总分\n\n"); for(i=0;i<now_no&&stu[i].name[0];i++) printf("\t%u\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4,stu[i].ave,stu[i].sum); printf("&&&**************************************************************************&&&\n\n"); printf("\t\t按任意键返回主菜单..."); fflush(stdin); as=getch(); system("cls"); while(!as); } void sort3()//按英语分数由高到低排列学生信息 { struct student temp; int i,j; char as; sum(); average(); for(i=1;i<now_no;i++) { for(j=1;j<=now_no-i;j++) { if(stu[j-1].score3<stu[j].score3) { temp=stu[j]; stu[j]=stu[j-1]; stu[j-1]=temp; }
展开阅读全文

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


开通VIP      成为共赢上传

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

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

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

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

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

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

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

客服