版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C++课程设计课程报告(2023--2023年度第二学期)学生学籍管理系统程序设计专业计算机科学与技术学生姓名班级学号指导教师完成日期2013年目录TOC\o"1-5"\h\z\u1概述11.1课程设计目的11.2课程设计内容12系统总体设计12.1系统目标12.2主体功能22.3系统流程32.4开发环境43系统详细设计43.1系统主界面设计43.2输入模块设计53.3输出模块设计53.4查询模块设计53.5更改模块设计53.6统计模块设计53.7保存退出模块设计54测试64.1测试方案64.2测试结果65小结10参考文献12附录13附录1源程序清单13附录1.1主函数源程序13附录1.2输入模块源程序14附录1.3查询模块源程序16附录1.4删除模块源程序17附录1.5添加模块源程序18附录1.6排序模块源程序19学生学籍管理系统程序的设计与实现1概述1.1课程设计目的1、稳固并加深学生对C++语言程序设计知识的理解;2、培养学生面向对象的程序设计思想,使学生认识面向过程和面向对象两种设计方法的区别;3、进一步掌握和应用VC++6.0集成开发环境;4、提高运用C++语言解决实际问题的能力;5、初步掌握开发小型实用软件的根本方法,能独立设计、实现具有实际功能的小系统;6、掌握书写程序设计开发文档的能力〔书写课程设计实验报告〕。1.2课程设计要求1、根据分组情况对规定的课程设计题目要求进行分析、设计;2、利用VisualC++独立编写程序代码,并调试程序使其能正确运行;3、源程序要有适当的注释,使程序容易阅读;4、设计完成的软件要便于操作和使用,采用模块化设计方法,可以根据实际情况选择SDI、MDI或Dialog-Based方式实现系统;5、要求系统的用户界面尽量简单、合理,鼓励学生自动增加新功能模块〔视情况可另行加分〕;6、完成并提交课程设计报告,具体要求见相关说明文档。1.3课程设计内容课题名称:学籍管理系统说明:学生学籍记录以下信息:姓名、家庭住址、学号,成绩、性别等。可以用能表示学生学籍信息的类存储数据。要求:1)
具备对学籍的管理功能〔添加、删除、排序〕2)
具备按姓名、学号查询学生学籍的功能。3〕给定某个班级的班号,显示该班所有学生的作业完成情况;4〕给定某位学生的学号,修改该学生的作业完成信息;5〕给定某位学生的学号,删除该学生的信息;6〕提供一些统计各类信息的功能。2系统总体设计2.1系统目标根据查询条件实现学生的作业的完成情况查询学生的作业完成信息的增加、删除、修改方便各任课教师记录,统计所带班学生的在作业完成情况,提高工作效率,减轻负担;总结经验,提高教学质量为教务处管理人员提供各学期、各班级学生的作业完成情况,以作为其进行作业分数的汇总,分析和总结评比的依据。2.2主体功能据需求把整个系统分化成不同的模块,每个模块完成一个特定的子功能。把这些模块结合起来组成一个整体。逐一实现各个功能。学生学生学籍管理系统输入模块输出模块更改模块查询模块统计模块保存退出排序学生成绩退出模块按姓名查询按学号查询退出模块添加学生学籍信息删除学生学籍信息修改学生学籍信息退出模块图2-1系统功能模块图2.3系统流程开始开始输入学生a学籍信息判断学生a学籍信息输入模块输出模块查询模块更新模块排序模块退出模块输要更新的值输要查询的值输要排序的值判断a的值判断a的值判断a的值分数排序退出模块修改模块删除模块退出模块添加模块按学号查询按姓名查询退出模块图3-1数据的录入:如录入学生的根本信息数据的修改:如修改指定学号、或者指定姓名的学生信息,数据的插入:插入某个学生信息;数据的查询:如按学号查询、按姓名查询等;数据的删除:如删除指定学号、或者指定姓名的学生;列出不及格学生清单〔学号、姓名、不及格的课程和成绩〕。用文件把数据保存起来2.4开发环境系统开发环境:MicrosoftVisualC++6.0系统开发语言:C语言3系统详细设计3.1系统主界面设计由主函数界面分成留个子模块主函数界面主函数界面输入学生信息修改学生学籍信息删除学生学籍信息查询学生学籍信息排序学生成绩保存退出图4-13.2输入模块设计数据的录入:录入学生的根本信息,如姓名、学号3.3输出模块设计两局部:1.按总分名次输出2.按学号顺序输出3.4查询模块设计查询信息:本功能实现是调用structstu*findnum(void)函数查找该条信息的地址,然后再采用for循环进行信息的输出,本功能的实现比拟简单,难点在于对函数的调用的灵活运用。3.5更改模块设计信息的修改:本系统采用的是按学号查找信息,系统采用一个由判断语句和循环语句构成的查询函数structstu*findnum(void)来提供信息存储地址;再按照地址来进行修改,其中采用switch语句和循环语句来控制使系统能够提供选择修改的功能。在这一功能的设计中,作者感到课程信息的修改中的添加课程信息功能是一个难点,解决方案是按插入方案来进行设计。增加信息:本系统采用的是按学号顺序来进行插入的,在这一功能的设计中,首先在开辟一个结构体空间将插入学生的信息存储于其中,在采用判断语句和循环语句来查找该条信息应该插入位置的地址,将上一结点的下行指针指向本结点,再将该节点的下行指针指向下一个结点从而到达插入信息的目的。在这一功能的设计中作者感到插入的具体算法是个难点,本系统采用的教材书本上的方法。删除信息:系统采用按学号删除的方案,在这一功能的设计中我没有采用直接调用structstu*findnum(void)函数,而是又重写查找地址程序,这是出于考虑系统功能的更好实现而采用的举措。具体删除算法采用该节点上一个结点的下行指针直接指向该结点下一个结点从而到达删除该结点的目的。在此功能的设计中,本作者感到难点不在于算法而在于思维设计的是否缜密。3.6统计模块设计排序学生成绩:通过菜单项选择择排序依据,采用排序算法〔冒泡、插入、选择等〕对数据进行排序并输出结果。首先要读文件。3.7保存退出模块设计每次执行完修改信息包括添加、录入、修改、删除等都需要保存信息。当然在每个修改函数最后都需要调用一下保存函数。4测试4.1测试方案测试方案一:登录学生作业完成管理系统测试方案二:录入学生信息测试方案三:显示学生信息测试方案四:查找学生作业完成情况的信息测试方案五:修改学生作业完成情况的信息测试方案六:删除学生信息测试结果七:添加学生信息测试结果八:保存退出4.2测试结果测试结果一:图6-1测试结果二:测试方案三:图7-1测试结果三:图7-2测试结果四:图8-1测试结果五:图8-2测试结果六:图9-1测试结果七:图9-2测试结果八:图10-15小结为期两周的课程设计结束了,在老师和同学的帮助下,我根本完成系统的设计。我按照系统工程软件设计的要求,从需求分析,概念设计,总体设计,详细设计,系统测试等各个步骤,分步完成系统的各项任务,实现了系统中的学生作业完成情况的查询,学生信息更新,学生信息添加等模块的功能。在这两个星期里我收获如下:1、稳固和加深了对C++的理解,提高综合运用本课程所学知识的能力。2、培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。3、通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。根据我在课程设计中遇到的问题,我将在以后的学习当中注意以下几点:1、认真上好专业实验课,多在实践中锻炼自己。2、写程序的过程中要考虑周到,严密。3、在做设计的时候要有信心,有耐心,切勿急躁。4、认真的学习课本知识,掌握课本中的知识点,并在此根底上学会灵活运用。5、在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。参考文献[1]谭浩强.C++程序设计(第二版)[M].北京:清华大学出版社,2023.
[2]谭浩强.C++程序设计题解与上机指导(第二版)[M].北京:清华大学出版社,2023.J,附录附录1源程序清单附录1.1主函数源程序#include<stdio.h>#include<conio.h>#include<string.h>#include<stdlib.h>#definemax10voidinput();voiddisplay();voidfind();voidchange();voiddel();voidread();voidsave();voidadd();voidsort(intn);voidsortx(intn);voidshuchu(intn);voidno_pass();intnow=0;/*标记位*/structstudent{ intnum; charname[20]; charsex; intNO; floatscore1; floatscore2;floatscore3; floatscore4; floatscore5; floatscore6; floatscore7; floatscore8; floatscore9; floatscore10; floatsum;};structstudentstu[max+1];voidmain()/*主函数(菜单)*/{ intas; do { printf("\n\t\t\t欢送使用学生作业完成情况管理系统\n\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.退出"); printf("\n\n\n\t\t\t\t请选择"); scanf("%d",&as); switch(as) { case1:system("cls");input();break; case2:system("cls");display();break; case3:system("cls");find();break; case4:system("cls");change();break; case5:system("cls");del();break; case6:system("cls");add();break; case7:system("cls");read();break; case8:system("cls");save();break; case9:system("cls");exit(0); } } while(1);}附录1.2输入模块源程序voidinput()/*输入函数*/ { inti,n,j; for(i=0;;i++) {printf("\n请输入添加的学生数量(在%d以内):",max-now);scanf("%d",&n); if(n>max)printf("\n请确保添加的数量在%d以内\t!!!",max); if(n<=max)break; }now=n; for(i=0;i<n;i++) { printf("\n\t\t\t\t输入第%d个学生的信息\n",i+1); printf("\n输入学生的学号:"); scanf("%d",&stu[i].num); getchar(); printf("\n输入学生的姓名:"); gets(stu[i].name); printf("\n请输入学生第一次作业分数:"); scanf("%f",&stu[i].score1); printf("\n请输入学生第二次作业分数:"); scanf("%f",&stu[i].score2);printf("\n请输入学生第三次作业分数:"); scanf("%f",&stu[i].score3); printf("\n请输入学生第四次作业分数:"); scanf("%f",&stu[i].score4); printf("\n请输入学生第五次作业分数:"); scanf("%f",&stu[i].score5); printf("\n请输入学生第六次作业分数:"); scanf("%f",&stu[i].score6); printf("\n请输入学生第七次作业分数:"); scanf("%f",&stu[i].score7); printf("\n请输入学生第八次作业分数:"); scanf("%f",&stu[i].score8); printf("\n请输入学生第九次作业分数:"); scanf("%f",&stu[i].score9); printf("\n请输入学生第十次作业分数:"); scanf("%f",&stu[i].score10); stu[i].sum=stu[i].score1+stu[i].score2; } sort(n); save();system("cls"); } voiddisplay()/*整体输出函数*/ { intas,i; printf("\n\t\t\t班级学生作业完成情况的列表\n\n\n"); printf("\n\t\t\t\t请选择\n\n\t\t\t1.按名次输出\n\t\t\t2.按学号输出\n\t\t\t3.不及格的学生信息\n\t\t\t"); scanf("%d",&as); switch(as) { case1:sort(now);for(i=0;i<now;i++)shuchu(i);break; case2:sort(now);sortx(now);for(i=0;i<now;i++)shuchu(i);break; case3:no_pass();break; } }附录1.3查询模块源程序voidfind()/*查询函数*/ { intnum,as,i; charname[20]; printf("\n\t\t\t请选择\n\n\n"); printf("\n\t\t\t1.按学号查找\n\t\t\t2.按姓名查找\n\t\t\t");scanf("%d",&as); switch(as) { case1:system("cls");printf("请输入要查找的学号:"); do { scanf("%d",&num); for(i=0;i<now;i++) { if(num==stu[i].num) { shuchu(i);break; } } if(i>=now) printf("\n\t\t该生信息不存在!!!请重新输入学号:"); }while(i>=now);break; case2:system("cls");getchar();printf("请输入要查找的学生姓名:"); do { gets(name); for(i=0;i<now;i++) { if(strcmp(name,stu[i].name)==0) { shuchu(i);break; } }if(i>=now) printf("\n\n\t\t\t该生信息不存在!!!请重新输入姓名:"); }while(i>=now);break; } }附录1.4删除模块源程序voiddel()/*删除函数*/ { intnum,i; printf("\n\t\t\t输入要删除的学生学号"); scanf("%d",&num); for(i=0;i<=now;i++) { if(i>=now) { printf("\n\n\n\t\t\t学号输入有误!!!删除失败!!!\n\n"); break; } if(stu[i].num==num) { if(i==now-1) now-=1; else { stu[i]=stu[now-1]; now-=1; } printf("\n\n\t\t\t删除成功!!!\n\n");sort(now); break; } } save(); }附录1.5添加模块源程序voidadd()/*添加函数*/ { charch; intj; printf("\n\t\t\t\t还能添加%d个学生信息!!!\n\n",max-now); if(now<max) { do { printf("\n\t\t\t\t输入新插入学生的信息\n"); printf("\n输入学生的学号:"); scanf("%d",&stu[now].num); getchar(); printf("\n输入学生的姓名:"); gets(stu[now].name); printf("\n输入学生的性别(M/W):"); for(j=0;;j++) { stu[now].sex=getchar(); if(stu[now].sex=='M'||stu[now].sex=='W')break; elseprintf("\n\t\t\t请确保输入性别的正确性(区分大小写)!!!"); getchar(); } printf("\n输入学生的成绩1:"); scanf("%f",&stu[now].score1); printf("\n输入学生的成绩2:"); scanf("%f",&stu[now].score2); stu[now].sum=stu[now].score1+stu[now].score2; now=now+1;sort(now); if(now>=max) { printf("\n\n\n\t\t存储空间已满无法继续添加!!!\n\n"); break; } printf("\n\t\t\t是否继续添加?(Y/N)"); getchar(); ch=getchar(); } while(ch!='n'||ch!='n'); } } voidsave()/*文件保存函数*/ { FILE*fp;/*fp为文件指针*/ inti; if((fp=fopen("stu_infer","wb"))==NULL) { printf("\n\n\t\t\t文件翻开失败!!!"); return; } for(i=0;i<max+1;i++) if(fwrite(&stu[i],sizeof(structstudent),1,fp)!=1) printf("\n\n\t\t\t文件保存错误!!!"); fclose(fp); }附录1.6排序模块源程序voidread()/*从磁盘读入函数*/ { inti; FILE*fp;/*fp为文件指针*/ fp=fopen("stu_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 语文园地五小牧童颠倒村作文
- 一年级数学计算题专项练习集锦
- 南京工业大学浦江学院《影视鉴赏》2021-2022学年第一学期期末试卷
- 人人安康课件教学课件
- 分数的初步认识说课稿
- 南京工业大学浦江学院《汽车构造》2021-2022学年第一学期期末试卷
- 《圆环的面积》说课稿
- 《消防安全》说课稿
- 南京工业大学浦江学院《房屋建筑学》2022-2023学年第一学期期末试卷
- 南京工业大学浦江学院《汽车评估》2023-2024学年第一学期期末试卷
- 运动康复服务行业五年发展洞察报告
- 2024年甘肃酒泉肃州区选拔项目人员纳入编制管理107人高频考题难、易错点模拟试题(共500题)附带答案详解
- 2025版 高考试题分析-数学-部分4
- 医疗器械创新售后服务体系建设与应用示范阅读札记
- 汽油机油低速早燃性能测试方法编制说明
- 2023-2024学年山东省济南市历城区九年级(上)期中英语试卷
- 2024年全国注册消防工程师之消防技术综合能力考试历年考试题(详细参考解析)
- IWAY6.0实施计划完整
- 《慈母情深》教学设计与指导课件(第二课时)
- 法律顾问服务投标方案(完整技术标)
- 人教版八年级上册数学期中考试压轴题专练
评论
0/150
提交评论