C课程设计学生管理系统

上传人:无*** 文档编号:89449685 上传时间:2022-05-13 格式:DOC 页数:43 大小:870.81KB
返回 下载 相关 举报
C课程设计学生管理系统_第1页
第1页 / 共43页
C课程设计学生管理系统_第2页
第2页 / 共43页
C课程设计学生管理系统_第3页
第3页 / 共43页
点击查看更多>>
资源描述
C+程序设计课程设计1 概 述 1.1 课程设计背景学生成绩管理系统能有效地管理每个学生的各科成绩,还可以管理学生的基本信息以及课程信息。该系统能简便地实行相关记录的查询,添加,修改,删除操作。目前,学校工作繁杂、资料重多,管理信息系统已进入高校,但还未普及,而对于学生成绩管理来说,还没有一套完整的、统一的系统。因此,开发一套适合大众的、兼容性好的系统是很有必要的。根据开发要求,它主要应用于教育系统,完成对日常学生成绩的录入查询和更新删除等管理操作,实现学生成绩管理的计算机化。开发学生成绩管理系统可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用,加快查询速度、加强管理。本文叙述了现在高校学生成绩管理的现状以及C+语言和一些开源框架的概况。重点介绍了学生成绩管理系统的实现过程:包括系统分析、 系统调查、 数据库设计、功能设计、系统物理配置方案、 系统实现、系统测试以及系统功能简介。1.2 课程设计目标建立学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高办学效益和现代化水平。帮助广大教师提高工作效率,实现学生成绩维护工作流程的系统化、规范化和自动化。为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工 作效率和工作质量,现提出如下的系统开发目标:(1)提高学生管理次序,节约管理成绩,增强学生管理的安全性。(2)系统应具有实用性、可靠性和适用性,同时注意到先进性。(3)对各个数据库进行动态管理,防止混乱。(4)能够对查询结果进行分类汇总,实现报表打印和下载。(5)方便用户的操作,尽量减少用户的操作。2 系统需求分析2.1 系统调查21世纪以来,人类经济高速发展,人们的生活发生了日新月异的变化,特别是计算机的应用及普及到经济和社会生活的各个领域,使原本的旧的管理方法越来越不适应现在社会的发展,许多人还停留在以前的手工操作,这大大地阻碍了人类经济的发展。为了适应现代社会人们高度强烈的时间观念,我对陕西科技大学理学院的原有的学生成绩管理系统进行了调查研究,并对一些教师和学生进行了调查,听取他们对学生成绩管理的一些建议和要求以及他们对这方面的一些需求,根据我所具有的知识,决定开发的这个系统采用当前较为流行的编程软件C+作为实现语言,以实现学生成绩管理信息系统的设计与开发。2.2系统需求 为了实现数据录入、数据删除、数据浏览以及数据查询等功能,该学生成绩管理系统主要划分为学生信息的载入、创建、查询、修改、统计、显示以及保存等内容,这些管理职能统一由管理者负责。在学生管理系统开发时应该满足以下具体的系统要求:学生成绩管理系统中不同使用单位(用户)的学生人数事先无法确定(1)该学生成绩管理系统要求有学生成绩录入,查询,修改,删除,保存文件(2)系统使用文字菜单,用户通过选择菜单项的编号,实现系统对子模块的调用也可用windows界面下的菜单栏、弹出式菜单、下拉菜单。(3)每个班级每门课程的成绩可以从学生的成绩总表提取出子表并存储成一个文本文件,以便在windows的notebook或者Microsoft word下打印,规定该文本文件名由班级号和课程名拼音字符串构成输入班级号和课程名字符串后自动生成文件名如班,语文,则文件名为:c1yuwen.txt (4)每个学生学习的课程有语文,英语,数学,物理,化学,生物(5)学生的成绩总表结构约定为(学号,姓名,课程名,平时成绩,期末成绩,总评成绩)总评成绩由程序自动计算,总评成绩平时成绩30期末成绩70(6)学号是一个9位整数构成的字符串, 学号的编码规则:入学年份+在读年级+在读班级+班内编号;入学年份用4位整数构成字符串,如2003年入学则表示为:”2003”;在读年级用1位整数构成字符串,如正在1年级读书则表示为:”1”;在读班级用2位整数构成字符串,如正在1班读书则表示为:”01”;班内编号用2位整数构成字符串,如在班内编号为23号则表示为:”23”.2.3 功能需求 基于系统需求分析,该系统需要实现以下基本功能:(1)查询所有学生的所有成绩(包括各科成绩,平时成绩以及总评成绩);(2)查询所有学生某一单科的成绩;(3)修改学生的成绩;(4)删除学生的成绩;(5)对学生的成绩进行保存,并可以在windows的notebook或者Microsoft word下打印。2.4 开发环境软件环境:windows98/windowsXP/windows2000,Visual C+硬件环境:计算机(Pen4CPU, 256MRAM,60G以上硬盘,输入输出设备)3系统概要设计3.1 系统的功能模块划分“学生成绩管理信息系统”包括九个模块:信息载入,信息创建,信息查询,信息修改,信息统计,信息显示,保存信息,感谢使用以及退出程序。这九个模块既相互联系又相互独立,其中信息查询,信息修改,信息统计,信息显示,保存信息这五个模块必须以信息载入或信息创建为基础。(1)信息载入模块:主要是将已有的学生成绩总表提入到系统,以此为基础,再进行必要的操作;(2)信息创建模块:对学生的成绩进行录入,然后通过其他的操作,保存为所需的文件;(3)信息查询:在信息载入和信息创建的基础上,对学生的成绩进行查询;(4)信息修改:在信息载入和信息创建的基础上,对所需学生的成绩进行修改;(5)信息统计:在信息载入和信息创建的基础上,对学生的相关成绩进行统计,输出平均分及排名;(6)信息显示:在信息载入和信息创建的基础上,显示出系统所有学生的成绩;(7)保存信息:在信息载入和信息创建的基础上,对学生的成绩进行必要的编辑后,保存所需的文件;(8)感谢使用:显示系统的创建者,并提示在退出程序前是否进行相关的操作;(9)退出程序:退出该程序。3.2 系统结构图(1)学生成绩管理信息系统主模块如图 3-1所示学生成绩管理系统 学生信息载入学生信息创建学生信息查询学生信息修改退出程序鸣谢学生信息保存学生信息显示学生信息统计图3-1学生成绩管理信息系统主模块(2)学生信息查询模块如图3-2所示学生信息查询按学号查找按课程查找返回上一级按姓名查询 图3-2学生信息查询模块 (3)学生信息修改模块如图3-3所示学生信息修改返回上一级修改学生信息添加学生信息显示学生信息删除学生信息图3-3 学生信息修改模块 (4)学生信息统计模块如图3-4所示学生信息统计返回上一级排序学生信息查找学生平均成绩查找学生单科平均成绩图3-4学生信息统计模块4系统详细设计4.1 系统登录模块设计学生成绩管理信息系统可以分为九个模块:(1)学生信息载入(2)学生信息创建(3)学生信息查询(4)学生信息修改(5)学生信息统计(6)学生信息显示(7)学生信息保存(8)鸣谢(9)退出程序系统业务处理结构如图4-1所示学生成绩管理系统学生信息载入学生信息创建保存学生信息学生信息修改学生信息显示学生信息统计学生信息查询鸣谢退出程序图4-1系统业务处理流程4.2 系统主界面设计 系统主界面设计如图4-2所示图4-2系统主界面设计4.3 学生信息管理模块设计(1)学生信息载入模块如图4-3所示图4-3学生信息载入模块(2)学生信息创建模块如图4-4所示图4-4学生信息创建模块4.4学生信息查询模块设计(1)按姓名查找模块如图4-5所示图4-5 按姓名查找模块 (2)按学号查找模块如图4-6所示图4-6 按学号查找模块(3) 按课程查找模块如图4-7所示图4-7按课程查找模块4.5学生信息修改模块设计(1)添加学生信息模块如图4-8所示图4-8 添加学生信息模块(2)修改学生信息模块如图4-9所示图4-9修改学生信息模块(3)删除学生信息模块如图4-10所示图4-10删除学生信息模块(4)显示学生信息模块如图4-11所示图4-11显示学生信息模块4.6学生信息统计模块设计(1)查找学生平均成绩如图4-12所示图4-12查找学生平均成绩(2)查找单科平均成绩如图4-13所示图4-13查找单科平均成绩4.7退出系统模块设计(1)感谢使用模块如图4-14所示(显示系统的设计者)图4-14 感谢使用模块(2)退出程序模块如图4-15所示图4-15退出程序模块5 测试5.1 测试目的测试是为了发现程序中的错误而执行程序的过程,测试的目的就是在软件投入生产运行之前,尽可能的发现软件中的错误。成功的测试是发现了至今为止尚未发现的错误的测试。5.2 测试方案为了提高测试效率,降低测试成本,本测试方案采用黑盒法设计基本的测试方案,再用白盒法补充一些方案。在黑盒法测试方案中,采用等价划分技术,把所有可能的数据划分成几个等价类。5.3 测试项目(1)登录测试(2)学生信息载入测试(3)学生信息创建测试(4)学生信息查询测试(5)学生信息修改测试(6)学生信息统计测试5.4 测试结果经过以上测试,可知各模块的测试过程都没有出现异常情况,程序在系统的要求下,能够实现所要求的各种功能。6.设计体会及今后的改进意见C+是一门魅力四射的课程,而编程实践更是检验自己学习成果的必修课,经过一个多月的努力,我终于完成了这次学生成绩管理系统的设计与开发。刚开始拿到这个题目确实让我感觉无从下手,之后在网上参考了一下其他人的设计流程,然后慢慢一步步的自己开始着手做,在设计的过程中,我遇到了很多的问题,起初是程序的设计,自己经过一个学期的C+的学习,独立编写的C+程序的总行数不过两百多行,而这次一下子要编写一个几百多行的程序,实在是一个巨大的挑战。就这方面来说,这是此次课程带给我的最大的收获,它让我明白了自身的不足之处,让我懂得在学习的过程更加虚心,认真,努力。另外此次课程设计增加了自己编程的能力,将自己所学的理论知识与实践结合在一块,提高了自己对这门课程的兴趣。 经过一番努力,终于初步编写出了程序,但是它的功能还不是很完善,有些地方自己还没有彻底搞明白,以后必定要加强对程序设计的学习,不断完善自己的编程能力。 43参 考 文 献1 谭浩强.C+程序设计M.北京:清华大学出版社.2005.102 谭浩强.C+程序设计题解与上机指导(第三版)M.北京:清华大学出版社.2005.063 朱站立.数据结构M.西安:交通大学出版社.2004.054 罗斌.Visual C+编程技巧M.北京:中国水利水电出版社.2005.08C+程序设计课程设计附 录附录1.1 源程序清单void Sort() struct STUDENT * headsa=NULL;struct STUDENT *current;struct STUDENT *p1,*p2,*p3,*max;p1=p2=(struct STUDENT *)malloc(LEN);max=(struct STUDENT *)malloc(LEN);max-average =1000;while(1)p1-average=0.078;current=head;while(current!=NULL) current-average =(current-chineseRecord +current-englishRecord +current-mathematicsRecord +current-physicalRecord +current-chemistryRecord +current-biologicalRecord )/6;if(p1-average average & current-average average & current!=max )p1=current;current=current-next;elsecurrent=current-next;max=p1;if(headsa=NULL)p2-number=p1-number;strcpy(p2-name,p1-name);strcpy(p2-sex,p1-sex); p2-age=p1-age;p2-chineseRecord=p1-chineseRecord;p2-englishRecord=p1-englishRecord;p2-mathematicsRecord=p1-mathematicsRecord;p2-physicalRecord=p1-physicalRecord;p2-chemistryRecord =p1-chemistryRecord ;p2-biologicalRecord=p1-biologicalRecord;headsa=p2;elsep2-number=p1-number;strcpy(p2-name,p1-name);strcpy(p2-sex,p1-sex); p2-age=p1-age;p2-chineseRecord=p1-chineseRecord; p2-englishRecord=p1-englishRecord;p2-mathematicsRecord=p1-mathematicsRecord; p2-physicalRecord=p1-physicalRecord;p2-chemistryRecord =p1-chemistryRecord ; p2-biologicalRecord=p1-biologicalRecord; if(p1-average =0.078)p3-next =NULL;break; p1=(struct STUDENT *)malloc(LEN); p2-next =p1;p3=p2; p2=p1;struct STUDENT *q; coutn排序所有学生的成绩:endl; q=headsa; if(headsa!=NULL) cout setw(0) 学号 setw(8) 姓名 setw(8)性别setw(8)年龄 setw(8) 语文 setw(8) 英语 setw(8) 数学 setw(8) 物理 setw(8)化学 setw(8)生物setw(12)平均分endl; do cout setw(0) number setw(8) name setw(8)sexsetw(8)age setw(8) chineseRecord setw(8) englishRecord setw(8) mathematicsRecord setw(8) physicalRecord setw(8)chemistryRecord setw(8)biologicalRecordsetw(12)averagenext; while(q != NULL); else coutn学生成绩为空,请确认。endl;char filename20;coutfilename; ofstream fout(filename,ios:app); if(!fout)cout文件不能打开!endl; else struct STUDENT *p;p=headsa;fout setw(0) 学号 setw(8) 姓名 setw(8)性别setw(8)年龄 setw(8) 语文 setw(8) 英语 setw(8) 数学 setw(8) 物理setw(8)化学 setw(8)生物endl;do fout setw(0) number setw(8) name setw(8)sexsetw(8)age setw(8) chineseRecord setw(8) englishRecord setw(8) mathematicsRecord setw(8) physicalRecord setw(8)chemistryRecord setw(8)biologicalRecordnext;while(p != NULL);cout保存成功!endl;fout.close();cout现在返回上一级。endl; void FindStudentAverage() long num; struct STUDENT * p;char flag=y;do coutnum; p=head; while(p!=NULL) if(p-number=num)coutnumaverage =(p-chineseRecord +p-englishRecord +p-mathematicsRecord +p-physicalRecord +p-chemistryRecord +p-biologicalRecord )/6; coutaveragenext; if(p=NULL) cout没有该学号同学的信息,请确认。endl; coutflag; while(flag != y & flag != n)cout输入错误,请输入(y/n)flag;if(flag=n)break;while(flag=y);cout现在返回上一级。endl; void FindClassAverage() struct STUDENT * p; char flag=y; char it; do double sum=0; double average=0; p=head; cout请输入要查找科目所对应的序号:endl; cout1-语文setw(12)2-英语setw(12)3-数学setw(12)4-物理setw(12)5-化学setw(12)6-生物it; coutchineseRecord; n+; p=p-next; average = sum/n; cout 语文平均成绩: average englishRecord; n+; p=p-next; average = sum/n; cout 英语平均成绩: average mathematicsRecord; n+; p=p-next; average = sum/n; cout 数学平均成绩: average physicalRecord; n+; p=p-next; average = sum/n; cout 物理平均成绩: average chemistryRecord; n+; p=p-next; average = sum/n; cout 化学平均成绩: average biologicalRecord; n+; p=p-next; average = sum/n; cout 生物平均成绩: average endl; default: cout选择错误,请选择1 - 6 号endl; coutflag; while(flag != y & flag != n)cout输入错误,请输入(y/n)flag;if(flag=n)break;while(flag=y); cout现在返回上一级。endl; void AboutMe() cout*endl; cout* 感谢使用本程序 *endl; cout* 陕西科技大学 *endl; cout* 理学院信息专业102班 *endl; cout* 感谢帮助调试本程序的人 *endl; cout* 现在返回上一级 *endl; cout*endl; void main()int q=1;char k;while (q)system(cls);cout -n;cout 学生成绩管理 n;cout -n;cout 1 学生信息载入 n;cout 2 学生信息创建 n;cout 3 学生信息查询 n;cout 4 学生信息修改 n;cout 5 学生信息统计 n;cout 6 学生信息显示 n;cout 7 学生信息保存 n;cout 8 鸣谢 n;cout 0 退出程序 n;cout -n;cout n;cout k;while(k !=1 & k!=2 & k!=3 & k!=4& k!=5& k!=6& k!=7 & k!=8 & k!=0)cout输入错误,请重新输入k; char x;if(k=0)cout退出前请确定没有忘记保存数据。endl;cout确定退出 按y ,取消退出按nx;while(x !=y & x !=n )cout输入错误,请重新输入x;if(x=n)continue;switch(k)case 1:system(cls); LoadData();Show();getchar();break;case 2:system(cls);Input();getchar();break;case 3:while(q)system(cls);cout -n; cout 1 按姓名查找 n; cout 2 按学号查找 n; cout 3 按课程查找 n;cout 0 返回上一级 n; cout -n;cout k;while(k!=1 & k!=2 & k!=3& k!=0)cout输入错误,请重新输入k;switch(k)case 1: FindName();getchar();break;case 2: FindNumber();getchar();break;case 3: FindClass(); getchar();break;case 0:q=0;break;q=1;break;case 4:while(q)system(cls);cout -n; cout 1 添加学生信息 n; cout 2 修改学生信息 n; cout 3 删除学生信息 n;cout 4 显示学生信息 n;cout 0 返回上一级 n; cout -n;cout k;while(k!=1 & k!=2 & k!=3 & k!=4&k!=0)cout输入错误,请重新输入k;switch(k)case 1: Add(); getchar();break;case 2: Modify();getchar();break;case 3: Del();getchar();break;case 4:Show();getchar();break;case 0:q=0;break;q=1;break;case 5:while(q)system(cls);cout -n;cout 1 查找学生平均成绩 n;cout 2 查找单科平均成绩 n;cout 3 排序学生信息 n;cout 0 返回上一级 n; cout -n;cout k;while(k!=1 & k!=2 & k!=3 & k!=0)cout输入错误,请重新输入k;switch(k)case 1:FindStudentAverage();getchar();break;case 2:FindClassAverage();getchar(); break;case 3:Sort();getchar();break;case 0:q=0;break;q=1;break;case 6:system(cls);Show();getchar();break;case 7:system(cls);SaveData();getchar();break;case 8:system(cls);AboutMe();getchar();break;case 0:q=0;break;附录1.2 学生信息管理模块源程序#include iostream.h#include string.h#include malloc.h#include stdlib.h#include fstream.h#include stdio.h#include iomanip.h #include conio.h #define NULL 0#define LEN sizeof(struct STUDENT)struct STUDENTlong number;char name20;char sex10;int age;int chineseRecord;int mathematicsRecord;int englishRecord;int physicalRecord; int chemistryRecord;int biologicalRecord;double average;struct STUDENT *next;struct STUDENT * head=NULL;void LoadData();void SaveData();void Add();void Input();void Show();void FindName();void FindNumber();void FindClass();void Modify();void Del();void Sort();void FindStudentAverage();void FindClassAverage();void AboutMe();void LoadData() char filename20; coutfilename; ifstream fin(filename,ios:in); if(!fin)cout文件打不开 !p1-numberp1-namep1-sex p1-age p1-chineseRecord p1-englishRecord p1-mathematicsRecord p1-physicalRecordp1-chemistryRecord p1-biologicalRecord ;int n=0;while(1)if(fin.eof()break;n+; if(n=1)head=p1; else p2-next=p1; p2=p1; p1=(struct STUDENT *)malloc(LEN);finp1-numberp1-namep1-sex p1-age p1-chineseRecord p1-englishRecord p1-mathematicsRecord p1-physicalRecordp1-chemistryRecord p1-biologicalRecord ; p2-next=NULL;cout文件读取成功!endl;fin.close(); cout显示如下。endl; void SaveData() /保存函数 char filename20;coutfilename; ofstream fout(filename); if(!fout)cout文件不能打开!endl; else struct STUDENT *p;p=head;fout setw(0) 学号 setw(8) 姓名 setw(8)性别setw(8)年龄 setw(8) 语文 setw(8) 英语 setw(8) 数学 setw(8) 物理setw(8)化学 setw(8)生物endl;do fout setw(0) number setw(8) name setw(8)sexsetw(8)age setw(8) chineseRecord setw(8) englishRecord setw(8) mathematicsRecord setw(8) physicalRecord setw(8)chemistryRecord setw(8)biologicalRecordnext;while(p != NULL);cout保存成功!endl;cout将返回上一级。endl;fout.close(); getchar(); int n=0;void Input()struct STUDENT *p1,*p2;char flag=y;p1=p2=(struct STUDENT *)malloc(LEN);cout 请按照以下顺序,输入您要输入的学生信息: endl;cout setw(0) 学号 setw(8) 姓名 setw(8)性别setw(8)年龄 setw(8) 语文 setw(8) 英语 setw(8) 数学 setw(8) 物理 setw(8)化学 setw(8)生物 p1-number p1-name p1-sex p1-age p1-chineseRecord p1-englishRecord p1-mathematicsRecord p1-physicalRecordp1-chemistryRecord p1-biologicalRecord ;while(flag=y)n+; if(n=1)head=p1; else p2-next=p1; p2=p1;coutflag;while(flag != y & flag != n)cout输入错误,请输入(y/n)flag;if(flag=n)cout请及时保存数据,现在返回上一级endl;break; p1=(struct STUDENT *)malloc(LEN);cout 请按照以下顺序,输入您要输入的学生信息:endl; cout setw(0) 学号 setw(8) 姓名 setw(8)性别setw(8)年龄 setw(8) 语文 setw(8) 英语 setw(8) 数学 setw(8) 物理 setw(8)化学 setw(8)生物 p1-number p1-name p1-sex p1-age p1-chineseRecord p1-englishRecord p1-mathematicsRecord p1-physicalRecordp1-chemistryRecord p1-biologicalRecord ; p2-next=NULL;void Add()struct STUDENT *p1,*p;char flag=y;long num;dop1=(struct STUDENT *)malloc(LEN); p=head; coutnum; while(p!=NULL) if(numnumber ) cout 请按照以下顺序,输入您要输入的学生信息: endl; cout setw(0) 姓名 setw(8)性别setw(8)年龄 setw(8) 语文 se
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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