




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+程序设计课程设计C+程序设计课程设计说明书题目: 学生成绩管理系统 学生姓名: 李昶威 学 号: 201012010120 院 (系): 理学院 专 业: 数学与应用数学 指导教师: 李勇 2012 年 6 月 15 日陕 西 科 技 大 学C+程序设计课程设计任务书理学院 应用数学专业 数学101班班级 姓名: 李昶威 学号: 201012010120 题目: 学生成绩管理系统 课程设计从 2012 年 5 月 20日起到 2012 年 6 月 15 日1、课程设计的内容和要求(包括原始数据、技术要求、工作要求等):1)、设计内容: 制作学生成绩管理系统,实现数据录入、数据删除、数据浏览以及数据查询等功能。2)、课程设计的要求:包括系统设计要求,开发环境要求,技术文档要求三部分。系统设计要求:a) 学生成绩管理系统中不同使用单位(用户)的学生人数事先无法确定。b) 该学生成绩管理系统要求有学生成绩录入,查询,修改,删除,保存文件。c) 系统使用文字菜单,用户通过选择菜单项的编号,实现系统对子模块的调用。也可用windows界面下的菜单栏、弹出式菜单、下拉菜单。d) 每个班级每门课程的成绩可以从学生的成绩总表提取出子表并存储成一个文本文件。该文本文件名由班级号和课程名拼音字符串构成。输入班级号和课程名字符串后自动生成文件名。如班,语文,则文件名为:c1yuwen.txt e) 每个学生学习的课程有语文,英语,数学,物理,化学,生物。f) 学生的成绩总表结构约定为(学号,姓名,课程名,平时成绩,期末成绩,总评成绩)总评成绩由程序自动计算,总评成绩平时成绩30期末成绩70。g) 学号是一个9位整数构成的字符串, 学号的编码规则:入学年份+在读年级+在读班级+班内编号;入学年份用4位整数构成字符串,如2003年入学则表示为:”2003”;在读年级用1位整数构成字符串,如正在1年级读书则表示为:”1”;在读班级用2位整数构成字符串,如正在1班读书则表示为:”01”;班内编号用2位整数构成字符串,如在班内编号为23号则表示为:”23”开发环境要求:软件环境:windows98/windowsXP/windows2000,Visual C+硬件环境:计算机(Pen4CPU, 256MRAM,60G以上硬盘,输入输出设备)技术文档要求:按照软件工程技术文档编写要求进行。要求流程图绘制规范,模块功能描述清晰,数据字典齐全。2、对课程设计成果的要求包括图表、实物等硬件要求:1)提交课程设计报告按照系统设计要求,用Visual C+设计和开发一个应用程序学生成绩管理系统,提交由需求分析;系统设计说明(包括主菜单、子菜单、模块功能简介、数据字典、系统结构图);系统技术文档 (包括系统各模块主要流程图,软件总体测试方案与测试记录、局部测试方案与测试记录、软件调试和修改记录、测试结论、运行情况记录),系统使用说明书,源程序代码为附录构成的课程设计报告。2)课程设计报告版式要求打印版面要求:A4纸,页边距:上2cm,下2cm,左2.5cm、右2cm;字体:正文宋体、小四号;行距:固定值20;页眉1.5cm ,页脚1.75cm;页码位于页脚居中打印;奇数页页眉“C+程序设计课程设计”,偶数页页眉“人事信息管理系统”,页眉宋体小5号;段落及层次要求:每节标题以四号黑体左起打印(段前段后各0.5行),节下为小节,以小四号黑体左起打印(段前段后各0.5行)。换行后以小四号宋体打印正文。节、小节分别以1、1.1、1.1.1依次标出,空一字符后接各部分的标题。当论文结构复杂,小节以下的标题,左起顶格书写,编号依次用(1)、(2)或1)、2)顺序表示。字体为小四号宋体。 对条文内容采用分行并叙时,其编号用(a)、(b)或a)、b)顺序表示,如果编号及其后内容新起一个段落,则编号前空两个中文字符。3)设计报告装订顺序与规范封面C+程序设计课程设计任务书目录C+程序设计设计课程设计报告正文设计体会及今后的改进意见参考文献(资料)左边缘装订3、课程设计工作进度计划:时间设计任务及要求第13周需求分析分析、功能分解并深入学习动态链表知识第14周编写程序代码(教师指导1周)第15周调试、完善、编写课程设计报告 指导教师: 日期: 教研室主任: 日期: 目录一、 系统需求分类-51.系统需求-52.功能需求-5 3.开发环境-6二、 模块设计-6三、 调试分析-6四、 测试结果-6五、 设计体会及今后的改进意见-10六、 参考文献-10七、 源程序代码-10学生成绩管理信息系统设计与开发一、 系统需求分析 1.系统需求 为了实现数据录入、数据删除、数据浏览以及数据查询等功能,该学生成绩管理系统主要划分为学生信息的载入、创建、查询、修改、统计、显示以及保存等内容,这些管理职能统一由管理者负责。在学生管理系统开发时应该满足以下具体的系统要求:a) 学生成绩管理系统中不同使用单位(用户)的学生人数事先无法确定b) 该学生成绩管理系统要求有学生成绩录入,查询,修改,删除,保存文件c) 系统使用文字菜单,用户通过选择菜单项的编号,实现系统对子模块的调用也可用windows界面下的菜单栏、弹出式菜单、下拉菜单。d) 每个班级每门课程的成绩可以从学生的成绩总表提取出子表并存储成一个文本文件,以便在windows的notebook或者Microsoft word下打印,规定该文本文件名由班级号和课程名拼音字符串构成输入班级号和课程名字符串后自动生成文件名如班,语文,则文件名为:c1yuwen.txt e) 每个学生学习的课程有语文,英语,数学,物理,化学,生物f) 学生的成绩总表结构约定为(学号,姓名,课程名,平时成绩,期末成绩,总评成绩)总评成绩由程序自动计算,总评成绩平时成绩30期末成绩70g) 学号是一个9位整数构成的字符串, 学号的编码规则:入学年份+在读年级+在读班级+班内编号;入学年份用4位整数构成字符串,如2003年入学则表示为:”2003”;在读年级用1位整数构成字符串,如正在1年级读书则表示为:”1”;在读班级用2位整数构成字符串,如正在1班读书则表示为:”01”;班内编号用2位整数构成字符串,如在班内编号为23号则表示为:”23”2. 功能需求基于系统需求分析,该系统需要实现以下基本功能:1) 查询所有学生的所有成绩(包括各科成绩,平时成绩以及总评成绩);2) 查询所有学生某一单科的成绩;3) 修改学生的成绩;4) 删除学生的成绩;5) 对学生的成绩进行保存,并可以在windows的notebook或者Microsoft word下打印。3.开发环境软件环境:windows98/windowsXP/windows2000,Visual C+硬件环境:计算机(Pen4CPU, 256MRAM,60G以上硬盘,输入输出设备)二、系统模块设计“学生成绩管理信息系统”包括留个模块:信息录入,信息查询,信息修改,信息删除,信息保存以及退出程序。这六个模块既相互联系又相互独立,其中信息查询,信息修改,信息删除,信息保存这四个模块必须以信息录入为基础。1) 信息录入:对学生的成绩进行录入,然后通过其他的操作,保存为所需的文件;2) 信息查询:在信息录入的基础上,对学生的成绩进行查询;a 查询所有学生的所有成绩b 查询所有学生的某一科成绩3) 信息修改:在信息录入的基础上,对所需学生的成绩进行修改;4) 信息删除:在信息录入的基础上,对相关学生的成绩进行删除5) 信息保存:在信息录入的基础上,对学生的成绩进行必要的编辑后,保存所需的文件;6) 退出程序:退出该程序。三、调试分析调试是为了发现程序中的错误而执行程序的过程,调试的目的就是在软件投入生产运行之前,尽可能的发现软件中的错误。成功的调试是发现了至今为止尚未发现的错误的调试。由于在编写程序是考虑的不充分,调试成为了最困难的一个部分。遇到了一下一些问题;1. 头文件弄不清楚每个是干什么的,总是缺几个。2. 自动分配内存,这个问题一直弄不清楚,总是出错。3. 开始不知道有system(cls);这个语句用,使屏幕很冗长。4. 总评成绩调不好,类定义出现问题。5. 指针方面遇到一些不清楚。6. 输入错误等。四、测试结果1.主界面图1-12.学生信息录入界面图1-23.(1)查询所有学生所有成绩界面图1-3(2)查询所有学生的某一科成绩界面图1-44. 学生信息修改界面图1-55.学生信息删除界面图1-66.学生信息保存界面图1-77.退出程序界面图1-8五、设计体会及今后的改进意见在整个系统设计和开发的过程中,由于本身能力的问题,有许多程序都写不出来,而且还有部分程序编译出来了,却没有办法运行,但是我还是坚持了下来,最后当我到运行界面时候,心中顿时充满了欣慰。这次设计总的来说是对我的能力的一次挑战,以前参加过数学建模竞赛,也编译过一些程序,但是却没有这个程序这么繁琐,期间出现的问题也比较多。总之来说,通过上机的实践,我学到了许许多多在课本上无法学到的东西,毕竟有些多少是要通过实践才能亲身体会到的。不过此系统还有很多不足的地方存在,特别是在程序的编译与运行上需要进一步的讨论与改进。特别是在程序的编译上与运行上六、参考文献1 谭浩强.C程序设计.北京:清华大学出版社,20052 谭浩强.C程序设计旦角与上机指导(第三版).北京:清华大学出版社,2005.七、源程序代码#include iostream.h#include #include malloc.h#include stdlib.h#include fstream.h#include stdio.h#include iomanip.h #include conio.h #define NULL 0#define LEN sizeof(class STUDENT)class STUDENTpublic:int number;char name20;int yuwen1,yuwen2;double yuwen3;/1表示平时成绩,2表示期末成绩,3表示总评成绩int yingyu1,yingyu2;double yingyu3;int shuxue1,shuxue2;double shuxue3;int wuli1,wuli2;double wuli3;int huaxue1,huaxue2;double huaxue3;int shengwu1,shengwu2;double shengwu3;class STUDENT *next;double yuwen()return(yuwen3=yuwen1*0.3+yuwen2*0.7);double yingyu()return(yingyu3=yingyu1*0.3+yingyu2*0.7);double shuxue()return(shuxue3=shuxue1*0.3+shuxue2*0.7);double wuli()return(wuli3=wuli1*0.3+wuli2*0.7);double huaxue()return(huaxue3=huaxue1*0.3+huaxue2*0.7);double shengwu()return(shengwu3=shengwu1*0.3+shengwu2*0.7);class STUDENT * head=NULL;void main()class STUDENT;void Input();void Show();void FindClass();void Modify();void Del();void SaveData();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 0 退出程序 n;cout -n;cout n;cout k;while(k !=1 & k!=2 & k!=3 & k!=4& k!=5 & 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); Input();getchar();break;case 2:system(cls);cout -n; cout 1 查询所有学生的所有成绩 n; cout 2 查询所有学生的某一科成绩 n;cout 0 返回上一级 n; cout -n;cout k;while(k!=1 & k!=2& k!=0)cout输入错误,请重新输入k;switch(k)case 1: Show();getchar();break;case 2: FindClass();getchar();break;case 0:q=0;break;q=1;break;case 3:system(cls);Modify();getchar();break;case 4:system(cls); Del();getchar();break;case 5:system(cls);SaveData();getchar();break;case 0:q=0;break;void Input() int n=0;class STUDENT *p1,*p2;char flag=y;p1=p2=(class STUDENT *)malloc(LEN);cout 请按照以下顺序,输入您要输入的学生信息: endl;cout setw(0) 学号 姓名 语文平时成绩 语文期末成绩 英语平时成绩 英语期末成绩 数学平时成绩 数学期末成绩 物理平时成绩 物理期末成绩 化学平时成绩 化学期末成绩 生物平时成绩 生物期末成绩 p1-number p1-name p1-yuwen1 p1-yuwen2 p1-yingyu1 p1-yingyu2 p1-shuxue1 p1-shuxue2p1-wuli1p1-wuli2 p1-huaxue1 p1-huaxue2p1-shengwu1 p1-shengwu2 ;while(flag=y)n+; if(n=1)head=p1; else p2-next=p1; p2=p1;cout 要继续添加吗(y/n)flag;while(flag != y & flag != n)cout输入错误,请输入(y/n)flag;if(flag=n)cout请及时保存数据,现在返回上一级endl;break; if(flag=y)p1=(class STUDENT *)malloc(LEN);cout 请按照以下顺序,输入您要输入的学生信息:endl; cout setw(0) 学号 setw(8) 姓名 语文平时成绩 语文期末成绩 语文总评成绩 英语平时成绩 英语期末成绩 英语总评成绩 数学平时成绩 数学期末成绩 数学总评成绩 物理平时成绩 物理期末成绩 物理总评成绩 化学平时成绩 化学期末成绩 化学总评成绩 生物平时成绩 生物期末成绩 生物总评成绩 p1-number p1-name p1-yuwen1 p1-yuwen2 p1-yingyu1 p1-yingyu2 p1-shuxue1 p1-shuxue2p1-wuli1p1-wuli2 p1-huaxue1 p1-huaxue2p1-shengwu1 p1-shengwu2 ; p2-next=NULL;void Show()class STUDENT *p; coutn所有学生的成绩:endl; p=head; if(head!=NULL) cout setw(0) 学号 setw(8) 姓名 语文平时成绩 语文期末成绩 语文总评成绩 英语平时成绩 英语期末成绩 英语总评成绩 数学平时成绩 数学期末成绩 数学总评成绩 物理平时成绩 物理期末成绩 物理总评成绩 化学平时成绩 化学期末成绩 化学总评成绩 生物平时成绩 生物期末成绩 生物总评成绩endl; do cout setw(0) number setw(8) name yuwen1 yuwen2 yuwen() yingyu1 yingyu2 yingyu() shuxue1 shuxue2 shuxue() wuli1 wuli2 wuli() huaxue1 huaxue2 huaxue() shengwu1 shengwu2 shengwu()next;while(p != NULL);cout请及时保存数据,现在返回上一级endl; else coutn学生成绩为空,请确认。endl; void FindClass() class STUDENT *p; char flag=y; char it; do p=head; cout请输入要查找科目所对应的序号:endl; cout1-语文setw(12)2-英语setw(12)3-数学setw(12)4-物理setw(12)5-化学setw(12)6-生物it; while(it !=1 & it!=2 & it!=3 & it!=4& it!=5&it!=6)cout输入错误,请重新输入it; switch(it) case 1: cout 语文单科成绩表 endl; cout setw(0) 学号 姓名 语文平时成绩 语文期末成绩 语文总评成绩 endl; while(p!=NULL) cout setw(0) number name yuwen1 yuwen2 yuwen()next; break; case 2: cout 英语单科成绩表 endl; cout setw(0) 学号 姓名 英语平时成绩 英语期末成绩 英语总评成绩 endl; while(p!=NULL) cout setw(0) number name yingyu1 yingyu2 yingyu()next; break; case 3: cout 数学单科成绩表 endl; cout setw(0) 学号 姓名 数学平时成绩 数学期末成绩 数学总评成绩 endl; while(p!=NULL) cout setw(0) number name shuxue1 shuxue2 shuxue()next; break; case 4: cout 物理单科成绩表 endl; cout setw(0) 学号 姓名 物理平时成绩 物理期末成绩 物理总评成绩 endl; while(p!=NULL) cout setw(0) number name wuli1 wuli2 wuli()next; break; case 5: cout 化学单科成绩表 endl; cout setw(0) 学号 姓名 化学平时成绩 化学期末成绩 化学总评成绩 endl; while(p!=NULL) cout setw(0) number name huaxue1 huaxue2 huaxue()next; break; case 6: cout 生物单科成绩表 endl;cout setw(0) 学号 姓名 生物平时成绩 生物期末成绩 生物总评成绩 endl; while(p!=NULL) cout setw(0) number name shengwu1 shengwu2 shengwu()next; break; coutflag; while(flag != y & flag != n)cout输入错误,请输入(y/n)flag;if(flag=n)break;while(flag=y); void Modify() int num; class STUDENT *p1;char flag=y; docout请输入要修改成绩的学生的学号:num; p1=head; while(p1!=NULL ) if(p1-number=num) cout请按以下的格式修改:endl; cout setw(0) 姓名 语文平时成绩 语文期末成绩 英语平时成绩 英语期末成绩 数学平时成绩 数学期末成绩 物理平时成绩 物理期末成绩 化学平时成绩 化学期末成绩 生物平时成绩 生物期末成绩 p1-name p1-yuwen1p1-yuwen2 p1-yingyu1 p1-yingyu2 p1-shuxue1 p1-shuxue2p1-wuli1 p1-wuli2 p1-huaxue1 p1-huaxue2 p1-shengwu1 p1-shengwu2; break; else p1=p1-next; if(p1=NULL) cout没有该学号的同学,请查证:endl; cout 要继续修改吗(y/n)flag; while(flag != y & flag != n)cout输入错误,请输入(y/n)flag;if(flag=n)break;while(flag=y);cout请及时保存数据,现在返回上一级endl;void Del()int n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 转权转让合同范本
- 拆除窗户出售合同范本
- 购房定向开发合同范本
- 个人安全用工合同范本
- 社区工会消防知识培训班课件
- 限期包销房合同范本
- 甲方商铺租赁合同范本
- 施工框架搭建合同范本
- 盖房施工合同范本
- 广告物料结款合同范本
- 2024年四川省古蔺县事业单位公开招聘医疗卫生岗笔试题带答案
- 2025-2030中国驾驶培训行业市场发展前瞻及投资战略研究报告
- 江苏盐城2025年公开招聘农村(村务)工作者笔试题带答案分析
- 班费收支统计表
- 建行善担贷合同协议
- 餐饮研发中心管理制度
- 2024年版中华民族共同体概论专家大讲堂课件全集第10章至16章节讲根据高等教育出版社教材制作
- 生产过程控制制度
- 国网公司合规管理
- 上海宝冶合同范例
- 区块链在房地产交易中的应用-全面剖析
评论
0/150
提交评论