




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机科学与技术专业 C+项目设计报告计算机科学与技术专业课程项目设计报告课程名称:C+项目设计项目名称:基于过程项目设计项目内容:学生学籍管理系统设计与实现年 级:2015级学 号:1511030044学生姓名:罗春波指导教师:韩 德完成时间:2016年06月30日目录1.项目设计的目标与要求.32.项目设计内容. .33.项目设计过程. .43. 1需求分析.43.2系统功能结构(模块图).433主要功能模块设计与技术分析.44.项目设计总结.6第 21 页 共 23 页一、项目设计目标与要求设计目的:1要求学生达到熟练掌握C+面向过程的基本知识和技能;2基本掌握面向过程程序设计的基本思路和方法;3能够利用所学的基本知识和技能,解决简单的面向过程程序设计问题。设计要求:1利用面向过程的方法以及C+的编程思想来完成系统的设计。2按功能需求模块设计。3功能选择交互界面,界面简洁美观。4利用文件保存实体信息。成果要求:1设计说明书,包括需求分析、系统功能结构(模块图)、主要功能模块设计与技术分析、调试过程、总结。2系统程序代码。完成方式:课堂指导老师讲解与引导,课外完成系统设计及撰写设计说明书。每名学生独立完成。二、项目设计内容设计一个学生学籍管理系统,功能如下:1各实体信息的添加、编辑、查询、删除,并考虑实体间信息的关联。2按学生学号查询所选课程的成绩信息。3按课程代码查询课程选修的学生及成绩信息。4按学号升序、按课程号升序分别显示学生实体、课程实体信息。5统计学生所选课程的平均成绩、课程选修的平均成绩。6按学生所选课程的平均成绩的降序显示学生信息(学号、姓名、平均成绩)。三、项目设计过程1需求分析需要处理的基础数据:学生信息:学生姓名、性别、学号、出生年月、专业课程信息:课程名、课程编号、课程学分、课程性质选课信息:学生学号、平时成绩、考试成绩、总评成绩2系统功能结构(模块图) 主菜单添加学生信息添加课程信息添加选课信息修改学生信息修改课程信息修改选课信息删除学生信息删除课程信息删除选课信息退出系统 浏览学生信息浏览课程信息浏览选课信息查看学生信息3主要功能模块设计与技术分析(1)主函数:开始 显示一系列功能选项输入08选择功能菜单结束#include #include#include#include #include #include#includemenu.h#includestruct.h#includestudent.h #includecourse.h#includescore.h#includeeditor.h#includedelete.h/#define M 200 /可以存信息总量/int N=0; /int num=110;/学生总量/* run this program using the console pauser or add your own getch, system(pause) or input loop */using namespace std;/void OutputStudent(char *fName);int main(int argc, char* argv) unsigned char cSel;system(cls);menu();cincSel;while(cSel-0)switch(cSel)case 1:system(cls);InputStudent();system(cls);system(pause);menu();break; case 2:system(cls);CourseInputStudent();system(pause);system(cls);system(pause);menu();break; case 3:system(cls);ScoreInputStudent();system(pause);system(cls);system(pause);menu();break; case 4:system(cls);B1Student();system(pause);system(cls);system(pause);menu();break;case 5:system(cls);ModifyCourInfo();system(pause);system(cls);system(pause);menu();break;case 6:system(cls);ModifyScorInfo();system(pause);system(cls);system(pause);menu();break;case 7:system(cls);StuDelete();system(pause);system(cls);system(pause);menu();break;case 8:system(cls);DelCourse();system(pause);system(cls);system(pause);menu();break;case 9:system(cls);ScorDelete();system(pause);system(cls);system(pause);menu();break; case A:case a:system(cls);OutputStudent();system(pause);system(cls);system(pause);menu();break; case B:case b:system(cls);CourseOutputStudent();system(pause);system(cls);system(pause);menu();break; case C:case c:system(cls);ScoreOutputStudent();system(pause);system(cls);system(pause);menu();break; case D:case d:system(cls);SouStudent();system(pause);system(cls);system(pause);menu();break;default:menu();cincSel;continue; cincSel;return 0;(2)学生信息录入函数、课程录入函数、选课信息录入函数(同理): 录入函数思路为先建立一个文件,然后输入学生的数据,再将其写入文件即可开始 建立一个文件判断文件是否成功建立,是输入信息,否则退出结束是否继续?是结束否void InputStudent()/char *fName;ofstream stuFile(fName.txt,ios_base:binary|ios_base:app);STUDENT *sTemp=new STUDENT;if(stuFile)dochar cSel=Y;coutendlendl;cout请输入学生信息:endl;coutsTemp-cNo;coutsTemp-cName;coutsTemp-cSex;coutsDate;for(unsigned int pos=0;posnYear=atoi(cTemp);break;case 2:sTemp-nMonth=atoi(cTemp);break;case 3:sTemp-nDay=atoi(cTemp);coutsTemp-cMajor;stuFile.write(reinterpret_cast(sTemp),sizeof(STUDENT);coutcSel;if(cSel=Y|cSel=y) continue;elsedelete sTemp;stuFile.close();break; while(1);elsecoutt不能创建文件!endl; void CourseInputStudent()/char *fCourse;ofstream stuFile(fCourse.txt,ios_base:binary|ios_base:app);COURSE *sTemp=new COURSE;if(stuFile)dochar cSel;coutendlendl;coutt*请输入课程信息*endl;coutsTemp-Cour_num;/课程代码 coutsTemp-Cour_name;/课程名称 coutsTemp-Cour_score;/课程学分 coutsTemp-Cour_Feature;/课程性质 stuFile.write(reinterpret_cast(sTemp),sizeof(COURSE);coutcSel;if(cSel=Y|cSel=y) continue;elsedelete sTemp;stuFile.close();break; while(1);elsecoutt不能创建文件!endl; void ScoreInputStudent()/char *fScore;ofstream stuFile(fScore.txt,ios_base:binary|ios_base:app);GRADE *sTemp=new GRADE;if(stuFile)dochar cSel=Y;coutendlendl;coutt*请输入课程成绩信息*endl;coutsTemp-cNo;/学生学号coutendl;coutsTemp-Cour_num;/选修课程号 coutendl;coutsTemp-per_grade0;coutendl;coutsTemp-per_grade1;coutendl; coutsTemp-per_grade2; stuFile.write(reinterpret_cast(sTemp),sizeof(GRADE);coutcSel;if(cSel=Y|cSel=y) continue;elsedelete sTemp;stuFile.close();break; while(1);elsecoutt不能创建文件!endl; (3)学生删除、课程删除、选课删除(同理) 删除函数思路为先将文件中信息读出来,然后找到要删除的学生,将不删除的写到一个副本文件中,然后再创建与开始文件相同的文件,将其覆盖,再将副本文件中的数据读出写到该文件中,用remove函数删除副本文件开始 读出原文件中数据输入要修改的学生的某个数据,以未到文件尾循环,找到该学生信息将不需要删除的写入副本文件中关闭原文件,创建和原文件一样的文件,将副本文件数据读出,直接写入该文件对应关闭文件是否继续删除?是否结束using namespace std;void StuDelete()ifstream inFile(fName.txt,ios:in|ios:binary);ofstream outFile(fubenfName.txt,ios:binary|ios:out);STUDENT *sTemp=new STUDENT; char No21;cout请输入要删除的学生的学号:No;if(!inFile)coutfName.txt打开文件错误!endl;while(!inFile.eof()inFile.read(reinterpret_cast(sTemp),sizeof(STUDENT);if(strcmp(sTemp-cNo,No)!=0)if(inFile.gcount()!=0)/inFile.read(reinterpret_cast(sTemp),sizeof(STUDENT);outFile.write(reinterpret_cast(sTemp),sizeof(STUDENT);inFile.close();outFile.close();ifstream in(fubenfName.txt,ios:in|ios:binary);ofstream out(fName.txt,ios:out);while(!in.eof()in.read(reinterpret_cast(sTemp),sizeof(STUDENT);if(in.gcount()!=0)out.write(reinterpret_cast(sTemp),sizeof(STUDENT);in.close();out.close();delete sTemp;/remove(fuben.txt);void DelCourse()ifstream inFile(fCourse.txt,ios:in|ios:binary);ofstream outFile(fubenfCourse.txt,ios:binary|ios:out);COURSE *sTemp=new COURSE; char No21;cout请输入要删除的课程的学号:No;if(!inFile)coutfCourse.txt打开文件错误!endl;while(!inFile.eof()inFile.read(reinterpret_cast(sTemp),sizeof(COURSE);if(strcmp(sTemp-Cour_num,No)!=0)if(inFile.gcount()!=0)/inFile.read(reinterpret_cast(sTemp),sizeof(STUDENT);outFile.write(reinterpret_cast(sTemp),sizeof(COURSE);inFile.close();outFile.close();ifstream in(fubenfCourse.txt,ios:in|ios:binary);ofstream out(fCourse.txt,ios:out);while(!in.eof()in.read(reinterpret_cast(sTemp),sizeof(COURSE);if(in.gcount()!=0)out.write(reinterpret_cast(sTemp),sizeof(COURSE);in.close();out.close();delete sTemp;void ScorDelete()ifstream inFile(fScore.txt,ios:in|ios:binary);ofstream outFile(fubenfScore.txt,ios:binary|ios:out);GRADE *sTemp=new GRADE; char No21;cout请输入要删除的选课信息的学生学号:No;if(!inFile)coutfName.txt打开文件错误!endl;while(!inFile.eof()inFile.read(reinterpret_cast(sTemp),sizeof(GRADE);if(strcmp(sTemp-cNo,No)!=0)if(inFile.gcount()!=0)/inFile.read(reinterpret_cast(sTemp),sizeof(GRADE);outFile.write(reinterpret_cast(sTemp),sizeof(GRADE);inFile.close();outFile.close();ifstream in(fubenfScore.txt,ios:in|ios:binary);ofstream out(fScore.txt,ios:out);while(!in.eof()in.read(reinterpret_cast(sTemp),sizeof(GRADE);if(in.gcount()!=0)out.write(reinterpret_cast(sTemp),sizeof(GRADE);in.close();out.close();delete sTemp;(4)学生修改函数、课程修改函数、选课修改函数(同理) 修改函数思路为将文件中信息读出,然后找到要修改的学生,用seekg函数定位修改,然后写入原文件即可开始 读取文件中的内容输入要修改的信息其中一个数据,以到文件尾为条件,查找该学生信息是否找到?否是是用seekg函数定位,输入要修改的信息写入文件保存是否继续修改?是退出否void B1Student()int n=1;while(n) STUDENT *sTemp=new STUDENT; /char *fName; char no20; /char STU21; ifstream inFile(fName.txt,ios_base:binary|ios_base:in); cout请输入你要修改的学生姓名:no; if(!inFile)cout文件打开失败!endl; else while(!inFile.eof() inFile.read(reinterpret_cast(sTemp),sizeof(STUDENT); /inFileSTU;if(strcmp(sTemp-cName,no)=0) cout*该学生信息*endl;coutendlendl;cout学号:;coutcNoendl;cout姓名:;coutcNameendl;cout性别:;coutcSexendl;cout出生日期(年/月/日):;coutnYear/nMonth/nDayendl;cout专业:;coutcMajorcName,STU,7);/inFilesTemp-cNosTemp-cNamesTemp-cSexsTemp-nYearsTemp-nMonthsTemp-nDaysTemp-cMajor; /if(inFile.gcount()!=0)coutendlendl;/inFile.seekg(-sizeof(STUDENT),ios:cur) ;coutt*请修改学生信息*endl;coutsTemp-cNo;coutsTemp-cName;coutsTemp-cSex;coutsDate;for(unsigned int pos=0;posnYear=atoi(cTemp);break;case 2:sTemp-nMonth=atoi(cTemp);break;case 3:sTemp-nDay=atoi(cTemp);break;coutsTemp-cMajor; inFile.close();fstream myFile;myFile.open(fName.txt,ios:binary|ios:out);if(!myFile) coutfName.txt打开错误!endl;exit(1);myFile.write(reinterpret_cast(sTemp),sizeof(STUDENT);myFile.close();cout学生信息修改成功! endl;cout是否继续修改学生信息:(是:1/否:0)n; return;void ModifyScorInfo()system(cls);char n20;cout请输入要修改的学生学号:n;fstream inFile(fScore.txt,ios:binary|ios:in|ios:out);GRADE *p=new GRADE;if(!inFile)cout文件打开错误!endl;exit(1);while(!inFile.eof()inFile.read(reinterpret_cast(p),sizeof(GRADE);if(strcmp(p-cNo,n)=0)cout该学生选课信息:endl;coutt学生学号 选修课程号 平时成绩 考试成绩 总评成绩endl; cout tcNot Cour_numt per_grade0t per_grade1t per_grade2endl; inFile.s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 眼科药物政策解读课件
- 二零二五年度防火门产品研发与创新奖励合同
- 林西辅警考试题库2025(有答案)
- 光学原理教学
- 2025年辽宁省桓仁满族自治县事业单位公开招聘辅警考试题带答案分析
- 导尿管更换过程中的安全行为
- 静脉穿刺技术规范及风险防范
- 经皮插管过程中的安全护理措施
- 静脉取血的安全操作流程
- 肠内营养调整中的安全护理实践
- 广西中医药大学赛恩斯新医药学院
- 电器质量保证协议
- 兰州城市规划技术规定
- 【员工关系管理研究国内外文献综述2800字】
- GB/T 32937-2016爆炸和火灾危险场所防雷装置检测技术规范
- GB/T 17622-2008带电作业用绝缘手套
- 英语天气课件
- 基孔肯雅热课件
- 仿制药生物等效性试验指导原则(日本)
- 一诺LZYN质量流量计使用说明书-2009版
- 常用粉剂的成方制剂
评论
0/150
提交评论