学生学籍管理系统程序设计_第1页
学生学籍管理系统程序设计_第2页
学生学籍管理系统程序设计_第3页
学生学籍管理系统程序设计_第4页
学生学籍管理系统程序设计_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 C+课程设计课程报告( 2012 - 2013 年度第 二 学期) 学生学籍管理系统程序设计专业计算机科学与技术学生姓名班级学号指导教师完成日期2013年7 月 5 日目 录1 概 述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附

2、录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、掌握书写程序设计开发文档的能力(书写课程设计实验报告)。

3、1.2 课程设计要求1、根据分组情况对规定的课程设计题目要求进行分析、设计;2、利用Visual C+独立编写程序代码,并调试程序使其能正确运行;3、源程序要有适当的注释,使程序容易阅读;4、设计完成的软件要便于操作和使用,采用模块化设计方法,可以根据实际情况选择SDI、MDI或Dialog-Based方式实现系统;5、要求系统的用户界面尽量简单、合理,鼓励学生自动增加新功能模块(视情况可另行加分);6、完成并提交课程设计报告,具体要求见相关说明文档。1.3 课程设计内容课题名称:学籍管理系统说明:学生学籍记录以下信息:姓名、家庭住址、学号,成绩、性别等。可以用能表示学生学籍信息的类存储数据。

4、要求: 1)具备对学籍的管理功能(添加、删除、排序)2)具备按姓名、学号查询学生学籍的功能。3)给定某个班级的班号,显示该班所有学生的作业完成情况;4)给定某位学生的学号,修改该学生的作业完成信息;5)给定某位学生的学号,删除该学生的信息;6)提供一些统计各类信息的功能。 2 系统总体设计2.1 系统目标(1) 根据查询条件实现学生的作业的完成情况查询(2) 学生的作业完成信息的增加、删除、修改(3) 方便各任课教师记录,统计所带班学生的在作业完成情况,提高工作效率,减轻负担;总结经验,提高教学质量(4) 为教务处管理人员提供各学期、各班级学生的作业完成情况,以作为其进行作业分数的汇总,分析和

5、总结评比的依据。2.2 主体功能据需求把整个系统分化成不同的模块,每个模块完成一个特定的子功能。把这些模块结合起来组成一个整体。逐一实现各个功能。学生学籍管理系统输入模块输出模块更改模块查询模块统计模块保存退出排序学生成绩退出模块按姓名查询按学号查询退出模块添加学生学籍信息删除学生学籍信息修改学生学籍信息退出模块图2-1 系统功能模块图2.3 系统流程开始输入学生a学籍信息判断学生a学籍信息输入模块输出模块查询模块更新模块排序模块退出模块输要更新的值输要查询的值输要排序的值判断a的值判断a的值判断a的值分数排序退出模块修改模块删除模块退出模块添加模块按学号查询按姓名查询退出模块图3-1 数据的

6、录入:如录入学生的基本信息 数据的修改:如修改指定学号、或者指定姓名的学生信息, 数据的插入:插入某个学生信息; 数据的查询:如按学号查询、按姓名查询等; 数据的删除:如删除指定学号、或者指定姓名的学生; 列出不及格学生清单(学号、姓名、不及格的课程和成绩)。 用文件把数据保存起来2.4 开发环境 系统开发环境:Microsoft Visual C+ 6.0 系统开发语言:C语言3系统详细设计3.1系统主界面设计由主函数界面分成留个子模块主函数界面输入学生信息修改学生学籍信息删除学生学籍信息查询学生学籍信息排序学生成绩保存退出图4-13.2 输入模块设计数据的录入: 录入学生的基本信息,如姓名

7、、学号3.3 输出模块设计两部分:1.按总分名次输出 2.按学号顺序输出3.4 查询模块设计查询信息:本功能实现是调用struct stu *findnum(void)函数查找该条信息的地址,然后再采用for循环进行信息的输出,本功能的实现比较简单,难点在于对函数的调用的灵活运用。3.5 更改模块设计信息的修改:本系统采用的是按学号查找信息,系统采用一个由判断语句和循环语句构成的查询函数struct stu *findnum(void)来提供信息存储地址;再按照地址来进行修改,其中采用switch语句和循环语句来控制使系统能够提供选择修改的功能。在这一功能的设计中,作者感到课程信息的修改中的添

8、加课程信息功能是一个难点,解决方案是按插入方案来进行设计。增加信息:本系统采用的是按学号顺序来进行插入的,在这一功能的设计中,首先在开辟一个结构体空间将插入学生的信息存储于其中,在采用判断语句和循环语句来查找该条信息应该插入位置的地址,将上一结点的下行指针指向本结点,再将该节点的下行指针指向下一个结点从而达到插入信息的目的。在这一功能的设计中作者感到插入的具体算法是个难点,本系统采用的教材书本上的方法。删除信息:系统采用按学号删除的方案,在这一功能的设计中我没有采用直接调用struct stu *findnum(void)函数,而是又重写查找地址程序,这是出于考虑系统功能的更好实现而采用的举措

9、。具体删除算法采用该节点上一个结点的下行指针直接指向该结点下一个结点从而达到删除该结点的目的。在此功能的设计中,本作者感到难点不在于算法而在于思维设计的是否缜密。3.6 统计模块设计排序学生成绩:通过菜单选择排序依据,采用排序算法(冒泡、插入、选择等)对数据进行排序并输出结果。首先要读文件。3.7 保存退出模块设计每次执行完修改信息包括添加、录入、修改、删除等都需要保存信息。当然在每个修改函数最后都需要调用一下保存函数。4 测试4.1 测试方案测试方案一:登录学生作业完成管理系统 测试方案二:录入学生信息测试方案三:显示学生信息测试方案四:查找学生作业完成情况的信息测试方案五:修改学生作业完成

10、情况的信息测试方案六:删除学生信息测试结果七:添加学生信息测试结果八:保存退出4.2 测试结果测试结果一: 图 6-1测试结果二:测试方案三:图7-1测试结果三:图7-2测试结果四:图8-1测试结果五:图8-2测试结果六:图9-1测试结果七:图9-2测试结果八:图10-15 小结为期两周的课程设计结束了,在老师和同学的帮助下,我基本完成系统的设计。我按照系统工程软件设计的要求,从需求分析,概念设计,总体设计,详细设计,系统测试等各个步骤,分步完成系统的各项任务,实现了系统中的学生作业完成情况的查询,学生信息更新,学生信息添加等模块的功能。在这两个星期里我收获如下:1、巩固和加深了对C+的理解,

11、提高综合运用本课程所学知识的能力。2、培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。3、通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。根据我在课程设计中遇到的问题,我将在以后的学习当中注意以下几点:1、认真上好专业实验课,多在实践中锻炼自己。2、写程序的过程中要考虑周到,严密。3、在做设计的时候要有信心,有耐心,切勿浮躁。4、认真的学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。5、在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。参考文献1谭浩强.C+程序设计

12、(第二版)M.北京:清华大学出版社,2012. 2谭浩强.C+程序设计题解与上机指导(第二版)M.北京:清华大学出版社,2012.J,附 录附录1 源程序清单附录1.1 主函数源程序#include#include#include#include#define max 10void input();void display();void find();void change();void del();void read();void save();void add();void sort(int n);void sortx(int n);void shuchu(int n);void no_p

13、ass();int now=0;/*标记位*/struct studentint num;char name20;char sex;int NO;float score1;float score2;float score3;float score4;float score5;float score6;float score7;float score8;float score9;float score10;float sum;struct student stumax+1;void main()/*主函数(菜单)*/int as;doprintf(nttt欢迎使用学生作业完成情况管理系统nn);

14、printf(ntttt1.录入学生信息ntttt2.显示学生信息ntttt3.查找学生作业完成情况的信息ntttt4.修改学生完成情况的信息ntttt5.删除学生信息ntttt6.添加学生信息ntttt7.读入学生信息ntttt8.保存学生信息ntttt9.退出);printf(nnntttt请选择);scanf(%d,&as);switch(as)case 1:system(cls);input();break;case 2:system(cls);display();break;case 3:system(cls);find();break;case 4:system(cls);chan

15、ge();break;case 5:system(cls);del();break;case 6:system(cls);add();break;case 7:system(cls);read();break;case 8:system(cls);save();break;case 9:system(cls);exit(0);while(1);附录1.2 输入模块源程序void input()/*输入函数*/int i,n,j; for(i=0;i+) printf(n请输入添加的学生数量(在%d以内):,max-now); scanf(%d,&n); if(nmax)printf(n请确保添

16、加的数量在%d以内t!,max); if(n=max)break; now=n;for(i=0;in;i+)printf(ntttt输入第%d个学生的信息n,i+1);printf(n输入学生的学号:);scanf(%d,&stui.num);getchar();printf(n输入学生的姓名:);gets();printf(n请输入学生第一次作业分数:);scanf(%f,&stui.score1);printf(n请输入学生第二次作业分数:);scanf(%f,&stui.score2); printf(n请输入学生第三次作业分数:);scanf(%f,&stui.sco

17、re3);printf(n请输入学生第四次作业分数:);scanf(%f,&stui.score4);printf(n请输入学生第五次作业分数:);scanf(%f,&stui.score5);printf(n请输入学生第六次作业分数:);scanf(%f,&stui.score6);printf(n请输入学生第七次作业分数:);scanf(%f,&stui.score7);printf(n请输入学生第八次作业分数:);scanf(%f,&stui.score8);printf(n请输入学生第九次作业分数:);scanf(%f,&stui.score9);printf(n请输入学生第十次作业分

18、数:);scanf(%f,&stui.score10);stui.sum=stui.score1+stui.score2;sort(n);save(); system(cls);void display()/*整体输出函数*/int as,i;printf(nttt班级学生作业完成情况的列表nnn);printf(ntttt请选择nnttt1.按名次输出nttt2.按学号输出nttt3.不及格的学生信息nttt);scanf(%d,&as);switch(as) case 1:sort(now);for(i=0;inow;i+)shuchu(i);break; case 2:sort(now)

19、;sortx(now);for(i=0;inow;i+)shuchu(i);break;case 3:no_pass();break;附录1.3 查询模块源程序void find()/*查询函数*/int num,as,i;char name20;printf(nttt请选择nnn);printf(nttt1.按学号查找nttt2.按姓名查找nttt); scanf(%d,&as);switch(as) case 1:system(cls);printf(请输入要查找的学号:); doscanf(%d,&num); for(i=0;i=now) printf(ntt该生信息不存在!请重新输入学

20、号:);while(i=now);break; case 2:system(cls);getchar();printf(请输入要查找的学生姓名:); do gets(name); for(i=0;i=now) printf(nnttt该生信息不存在!请重新输入姓名:); while(i=now);break;附录1.4 删除模块源程序void del()/*删除函数*/int num,i;printf(nttt输入要删除的学生学号);scanf(%d,&num);for(i=0;i=now)printf(nnnttt学号输入有误!删除失败!nn);break;if(stui.num=num)i

21、f(i=now-1)now-=1;else stui=stunow-1; now-=1; printf(nnttt删除成功!nn); sort(now);break;save();附录1.5 添加模块源程序void add()/*添加函数*/char ch;int j;printf(ntttt还能添加%d个学生信息!nn,max-now);if(now=max) printf(nnntt存储空间已满无法继续添加!nn);break; printf(nttt是否继续添加?(Y/N); getchar(); ch=getchar(); while(ch!=n|ch!=n);void save()/*文件保存函数*/FILE *fp;/*fp为文件指针*/int i;if(fp=fopen(stu_infer,wb)=NULL)printf(nnttt文件打开失败!);return;for(i=0;imax+1;i+)if(fwrite(&stui,sizeof(struct student),1,fp)!=1)printf(nnttt文件保存错误!);fclose(fp);附录1.6 排序模块源程序void read()/*从磁盘读入函数*/int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论