高校学生成绩管理系统设计说明书.doc

上传人:精*** 文档编号:850817 上传时间:2023-09-16 格式:DOC 页数:44 大小:318KB
下载 相关 举报
高校学生成绩管理系统设计说明书.doc_第1页
第1页 / 共44页
高校学生成绩管理系统设计说明书.doc_第2页
第2页 / 共44页
高校学生成绩管理系统设计说明书.doc_第3页
第3页 / 共44页
高校学生成绩管理系统设计说明书.doc_第4页
第4页 / 共44页
高校学生成绩管理系统设计说明书.doc_第5页
第5页 / 共44页
点击查看更多>>
资源描述

1、 目 录摘 要1序 言2正 文3(一)题目简介3(二)主要任务3(三)主要内容、功能及技术指标3(四)实验目的5(五)实验步骤61.分析设计,构建函数62.函数的调用关系图63.各模块伪码算法84.程序调试分析215.测试运行结果22总 结28参考文献30致 谢31 摘要此说明书专为计算机与通信学院计算机科学与技术专业2011年秋季学期面向对象课程的课程设计而做的。我们计算机专业在2011年秋季学期开设了面向对象技术。我们在理论课程结束以后也开始了面向对象课程设计,可以更好的理解面向对象在实际应用中的作用。 关键词:面向对象、课程设计、计算机与通信学院、学生成绩管理系统。序言经过一个学期的学习

2、, 我已经顺利地完成了面向对象这门课程的理论学习阶段。通过一个学期的学习,我发现数据结构作为我们计算机专业的一门必修课程是计算机程序设计的重要理论技术基础、是计算机科学的核心课程。为了巩固并且实践学习到的理论知识,学校在理论教学结束后随即开始了面向对象课程设计。这是一个检验学习效果并将所学知识灵活运用的实践教学环节,对巩固所学内容,加深理解有着不可估量的作用,所以我要以端正的态度来好好完成这次课程设计。在本次课程设计当中,我的课题是设计“学生成绩管理系统”的仿真软件。通过设计任务书中的要求以及介绍,大致确定了主要运用的知识要点是:线性表、查找表的逻辑结构、存储结构,掌握查找、排序等基本运算,以

3、及课本中提及的其他相关算法。经过自己的一番努力以及指导老师的悉心指导,终于完成了此方针软件的设计,通过这次课程设计,我基本了解并且学习了如何分析研究数据对象的特性、数据的组织方法、如何选取合适的数据逻辑结构和存储结构。这对以后的学习都有着很大的帮助。以下是这次课程设计的详细资料,希望对大家有所帮助。正文一 题目简介该设计要求学生以算法与数据结构课程成绩管理为背景,设计出一个简单的能够实现成绩管理功能的系统。通过该题目的设计过程,可以加深理解线性表、查找表的逻辑结构、存储结构,掌握查找、排序等基本运算的实现,进一步理解和熟练掌握课本中所学的各种数据结构,学会如何把学到的知识用于解决实际问题,培养

4、学生的动手能力。二任务1、查阅文献资料,一般在5篇以上;2、以兰州理工大学学生成绩管理业务为背景,通过调研、分析现有的管理模式和已有的管理软件,建立系统模型;3、完成软件结构设计、数据库设计和算法设计;4、完成高校学生成绩管理系统的软件开发和测试工作。5、撰写设计说明书;6、做好答辩工作。三. 主要内容、功能及技术指标(1)整个系统由学生成绩管理系统、学生学分管理系统、学生基本信息管理系统等组成;(2)系统要实现基本信息录入、修改、查询等功能;(3)系统要实现满足多种条件的统计分析功能,有些统计数据要采用图表的格式呈现;(4)系统要有一定的安全控制策略;(5)整个系统可以选择采用2层结构。数据

5、库系统采用Access,SQL Server 2000,前台开发工具可以选用PowerBuilder或Visual C+等;(6)系统要采用实际数据进行测试。(7)系统所涉及的信息有:学生基本情况。包括的数据项有:学号、姓名、性别、民族、出生年月、考生来源、培养方式、入学分数、入学政治面貌、家庭住址、通讯地址、邮政编码、所在院系、专业等。课程信息。包括的数据项有:课程编号、课程名、学时、学分、考核方式、开课院系、任课教师等。成绩信息。包括的数据项有:课程编号、学生编号、成绩等。四、 实验目的1、了解和熟悉Visual C+软件编程开发环境2、熟练掌握结构化程序设计的步骤和模块化设计方法3、熟练

6、掌握C语言数据类型,熟记字符型数据和整形数据的定义和使用4、熟练掌握用while语句、dowhile语句和for语句实现循环结构程序设计的方法5、掌握线型结构的定义、赋值和输入输出的方法6、掌握与线型,查找,排序有关的算法7、熟悉函数的定义、声明方法及全局变量和局部变量的概念与用法,掌握函数的调用方法8、掌握结构体类型变量的定义和使用及结构体类型数组的概念和应用五、 实验步骤1、 分析设计题目:根据题目要求,可以使用结构体数组来存储学生的信息,包括名次、学号、姓名、总成绩、各科成绩五个成员,名次、学号、姓名使用字符数组,总成绩和各科成绩使用整型数组来表示。在主函数之外,分别编写操作界面函数In

7、terface()、信息添加函数 Add()、信息插入函数 enter()、信息输出函数Display()、查找信息函数 Find()、信息修改 Modify()、信息删除 Delete()、总成绩排序函数SortTotal()、姓名排序函数SortName()、语文成绩排序函数SortChinese()、文件保存 SaveFile()等函数,通过主函数调用Interface来实现。2、 实验流程图: 3、实验模块/*主函数*/void main() int i;struct student stuMax; /*定义结构数组*/FILE *fp; /*结构数组,即可输入的最大学生数,最大值为声

8、明中预定义的Max*/int s; /*设置变量,以用于用户输入信息的接收,并将其作为转向函数的参数*/int n=0; /*整型变量*/char menu20=添加学生信息,显示学生信息,按姓名排序,按总分排序,按语文成绩排序,按数学成绩排序,按外语成绩排序,按物理成绩排序,按化学成绩排序,检索学生信息,修改学生信息,插入学生信息,删除学生信息,信息存盘,退出系统;/*系统密码管理*/char pass8;int flag=0;int w=3;char openfile10;char openfile110;doprintf(n请输入管理员密码:);scanf(%s,pass);if(!st

9、rcmp(pass,password)for(i=0;i0);if(!flag)printf(你已连续三次输入错误,请确认后再使用本系统,谢谢!n);exit(0);Sleep(1000);system(cls); /*用system调用dos命令,清屏*/printf(nttt欢迎进入学生成绩管理系统nn);printf(*nnn);printf(单位:兰州理工大学nn);printf(地址:兰州市七里河区nn);printf(电话:0931-2976018nnn);printf(*nnn);printf(nttt正在进入系统-);Sleep(2000);system(cls); /*用sy

10、stem调用dos命令,清屏*/printf(nn是否启用智能浏览系统?(y/n) bb);scanf(%s,openfile1);system(cls);if(strcmp(openfile1,y)=NULL)printf(nn-进入智能学生成绩管理浏览系统-nn);Sleep(2000);printf(现在打开已有存储数据-n);if(fp=fopen(d:student.txt,r)=NULL)printf(不能打开文件!n);exit(0);while (feof(fp)=0)/*feof函数判断文件是否结束,结束为1,否则为0*/fscanf(fp,%s %s %s %d %d %d

11、 %d %d %dn,stun.rank,stun.StudentNumber,stun.Name,&stun.Total,&stun.Score0,&stun.Score1,&stun.Score2,&stun.Score3,&stun.Score4);n+;printf(n数据读入完毕!);fclose(fp);system(cls);printf(n*学生信息显示*nn);Display(stu,0,n-1);Sleep(3000);printf(nn*学生姓名排序显示*nn);SortName(stu,n);Display(stu,0,n-1);Sleep(3000);printf(n

12、n*学生总分排序显示*nn);SortTotal(stu,n);Display(stu,0,n-1);Sleep(3000);printf(nn*学生语文成绩排序显示*nn);SortChinese(stu,n);Display(stu,0,n-1);Sleep(3000);printf(nn*学生数学成绩排序显示*nn);SortMath(stu,n);Display(stu,0,n-1);Sleep(3000);printf(nn*学生外语成绩排序显示*nn);SortForeignLanguage(stu,n);Display(stu,0,n-1);Sleep(3000);printf(

13、nn*学生物理成绩排序显示*nn);SortPhysics(stu,n);Display(stu,0,n-1);Sleep(3000);printf(nn*学生化学成绩排序显示*nn);SortChemistry(stu,n);Display(stu,0,n-1);Sleep(3000);system(cls);printf(nn其它复杂操作,请进入界面完成-);Sleep(2000);system(cls);goto stop;/*打开已有文件*/printf(n请进行手动操作-nn);printf (n 打开已有的文件d:student.txt?(y/n) bb);scanf(%s,ope

14、nfile);if(strcmp(openfile,y)=NULL)/*strcmp字符串比较函数,相等为0,前者小为负,前者大为正*/if(fp=fopen(d:student.txt,r)=NULL)printf(不能打开文件!n);exit(0);while (feof(fp)=0)/*feof函数判断文件是否结束,结束为1,否则为0*/fscanf(fp,%s %s %s %d %d %d %d %d %dn,stun.rank,stun.StudentNumber,stun.Name,&stun.Total,&stun.Score0,&stun.Score1,&stun.Score2

15、,&stun.Score3,&stun.Score4);n+;printf(n数据读入完毕!);fclose(fp);Sleep(1000);system(cls);stop: s=Interface(menu,15); /*调用Interface()函数*/switch (s) /*转向语句,选择以实现不同的功能*/case 1: n=Add(n,stu);break;case 2: Display(stu,0,n-1);break;case 3: SortName(stu,n);break;case 4: SortTotal(stu,n);break;case 5: SortChinese

16、(stu,n);break;case 6: SortMath(stu,n);break;case 7: SortForeignLanguage(stu,n);break;case 8: SortPhysics(stu,n);break;case 9: SortChemistry(stu,n);break;case 10: Find(stu,n);break;case 11: Modify(stu,n);break;case 12: enter(stu,n);break;case 13: n=Delete(stu,n);break;case 14: SaveFile(stu,n);break;c

17、ase 15: exit(0);while(s0&s15)printf(nn返回上一级请按数字0n);doscanf(%d,&f);if(f=0)system(cls);s=Interface(menu,15); /*调用Interface()函数*/switch (s) /*转向语句,选择以实现不同的功能*/case 1: n=Add(n,stu);break;case 2: Display(stu,0,n-1);break;case 3: SortName(stu,n);break;case 4: SortTotal(stu,n);break;case 5: SortChinese(stu

18、,n);break;case 6: SortMath(stu,n);break;case 7: SortForeignLanguage(stu,n);break;case 8: SortPhysics(stu,n);break;case 9: SortChemistry(stu,n);break;case 10: Find(stu,n);break;case 11: Modify(stu,n);break;case 12: enter(stu,n);break;case 13: n=Delete(stu,n);break;case 14: SaveFile(stu,n);case 15: ex

19、it(0);break;else printf(输入有误,请重新输入:);while(f!=0);/*操作界面函数*/int Interface(char (*x)20,int n)int w1;int i;int j;printf(nttt兰州理工大学学生成绩管理系统nnn);printf(*MENU*nn);for (j=0;jn;j+)printf(nttt%d.%sn,j+1,xj);printf(nn*nn);printf (请选择操作项(1-15): bbb);doscanf(%d,&i);if(i15)w1=1;printf(请选择1-15之间的数,请再次输入: bbb);els

20、e w1=0;while(w1=1);if(i=15)printf(nn-谢谢你的使用!-);return i;/*添加信息函数*/int Add(int start,struct student *p)int n;for (n=start;nrank);if (strcmp(p+n)-rank,e)=0)break;printf(学号:);scanf(%s,(p+n)-StudentNumber);printf(姓名:);scanf(%s,(p+n)-Name);printf(语文:);scanf(%d,&(p+n)-Score0);printf(数学:);scanf(%d,&(p+n)-S

21、core1);printf(外语:);scanf(%d,&(p+n)-Score2);printf(物理:);scanf(%d,&(p+n)-Score3);printf(化学:);scanf(%d,&(p+n)-Score4);(p+n)-Total=0;(p+n)-Total=(p+n)-Total+(p+n)-Score0+(p+n)-Score1+(p+n)-Score2+(p+n)-Score3+(p+n)-Score4);return n;/*显示信息函数*/void Display(struct student *p, int start, int end)int i;print

22、f(n%9s%10s%10s,名次,学号,姓名); /*显示标题*/printf(%8s%8s%8s%8s%8s%8s,总分,语文,数学,外语,物理,化学);printf(nnn);for(i=start;irank,(p+i)-StudentNumber,(p+i)-Name);printf(%8d%8d%8d%8d%8d%8d,(p+i)-Total,(p+i)-Score0,(p+i)-Score1,(p+i)-Score2,(p+i)-Score3,(p+i)-Score4);printf(n);printf(nn);/*按姓名排序函数*/void SortName(struct st

23、udent *p,int n)int i,j,k;for (i=0;in-1;i+)k=i;for (j=i+1;jName,(p+j)-Name)0)k=j; /*交换学生姓名*/if(i!=k)Swap(p+k,p+i);printf(n-完成姓名排序!-n);/*按总分排序函数*/void SortTotal(struct student *p,int n)int i,j,k;for (i=0;in-1;i+)k=i;for (j=i+1;jTotalTotal)k=j;if(i!=k)Swap(p+k,p+i); /*交换总分*/printf(n-完成总分排序(由高到低)!-n);/*

24、按语文成绩排序函数*/void SortChinese(struct student *p,int n)int i,j,k;for (i=0;in-1;i+)k=i;for (j=i+1;jScore0Score0)k=j;if(i!=k)Swap(p+k,p+i); /*交换语文成绩*/printf(n-完成语文成绩由高到低排序!-n);/*按数学成绩排序函数*/void SortMath(struct student *p,int n)int i,j,k;for (i=0;in-1;i+)k=i;for (j=i+1;jScore1Score1)k=j;if(i!=k)Swap(p+k,p

25、+i); /*交换数学成绩*/printf(n-完成数学成绩由高到低排序!-n);/*按外语成绩排序函数*/void SortForeignLanguage(struct student *p,int n)int i,j,k;for (i=0;in-1;i+)k=i;for (j=i+1;jScore2Score2)k=j;if(i!=k)Swap(p+k,p+i); /*交换外语成绩*/printf(n-完成外语成绩由高到低排序!-n);/*按物理成绩排序函数*/void SortPhysics(struct student *p,int n)int i,j,k;for (i=0;in-1;

26、i+)k=i;for (j=i+1;jScore3Score3)k=j;if(i!=k)Swap(p+k,p+i); /*交换物理成绩*/printf(n-完成物理成绩由高到低排序!-n);/*按化学成绩排序函数*/void SortChemistry(struct student *p,int n)int i,j,k;for (i=0;in-1;i+)k=i;for (j=i+1;jScore4Score4)k=j;if(i!=k)Swap(p+k,p+i); /*交换化学成绩*/printf(n-完成化学成绩由高到低排序!-n);/*按姓名检索函数*/int Find(struct stu

27、dent *p,int n)int i;char str20;printf(n 请输入学生姓名:);scanf(%s,str);i=Search(p,str,n); /*调用Search()函数*/if(i=-1)printf(没有匹配信息,请重试 %s!n,str);elseDisplay(p,i,i);getchar();return i;/*修改信息函数*/void Modify(struct student *p,int n)int i;i=Find(p,n); /*调用Find()函数*/if(i=0) /*若找到匹配信息,则修改*/printf(请输入新信息:n);printf(名

28、次:);scanf(%s,(p+i)-rank);printf(学号:);scanf(%s,(p+i)-StudentNumber);printf(姓名:);scanf(%s,(p+i)-Name);printf(语文:);scanf(%d,&(p+i)-Score0);printf(数学:);scanf(%d,&(p+i)-Score1);printf(外语:);scanf(%d,&(p+i)-Score2);printf(物理:);scanf(%d,&(p+i)-Score3);printf(化学:);scanf(%d,&(p+i)-Score4);(p+i)-Total=0;(p+i)-

29、Total=(p+i)-Total+(p+i)-Score0+(p+i)-Score1+(p+i)-Score2+(p+i)-Score3+(p+i)-Score4);printf(n-修改已完成!-n);/*删除信息函数*/int Delete(struct student *p,int n)int i;i=Find(p,n); /*调用Find()函数*/if(i=0) /*若找到匹配信息,则删除*/pi=pn-1;n=n-1;printf(n-信息已删除!-n);return n;/*信息交换函数*/void Swap(struct student *p1,struct student

30、*p2)struct student temp;temp=*p1;*p1=*p2;*p2=temp;/*信息检索函数*/int Search(struct student *p,char *t,int n)int i;for (i=0;iName,t)return i;return -1;/*保存文件函数*/void SaveFile(struct student *p,int n)FILE *fp1;char i;if(fp1=fopen(d:student_new.txt,w)=NULL) /*以文本方式生成并写打开文件*/printf(不能打开文件!n); /*检测打开文件中出现的错误,并决定是否写入文件*/exit(1);for (i=0;irank,(p+i)-StudentNumber,(p+i)-Name,(p+i)-Total,(p+i)-Score0,(p+i)-Score1,(p+i)-Score2,(p+i)-Score3,(p+i)-Score4)

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 技术资料 > 课程设计

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922