高校学生成绩管理系统设计说明书_第1页
高校学生成绩管理系统设计说明书_第2页
高校学生成绩管理系统设计说明书_第3页
高校学生成绩管理系统设计说明书_第4页
高校学生成绩管理系统设计说明书_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、实践教学实践教学 * 兰兰 州州 理理 工工 大大 学学 计算机与通信学院 2011 年 秋季 学期 面向对象面向对象 课程设计课程设计 课设题目: 学生成绩管理系统 专业班级: 10 级计算机四班 姓 名: 学 号: 指导老师: 成 绩: 目目 录录 1 摘摘 要要.1 1 序序 言言.2 2 正正 文文.3 3 (一)题目简介.3 (二)主要任务.3 (三)主要内容、功能及技术指标.3 (四)实验目的.5 (五)实验步骤.6 1.分析设计,构建函数 .6 2.函数的调用关系图 .6 3.各模块伪码算法 .8 4.程序调试分析 .21 5.测试运行结果 .22 总 结.28 参考文献参考文献

2、.3030 致致 谢谢.3131 2 摘要 此说明书专为计算机与通信学院计算机科学与技术专业 2011 年秋季学期面向对象课程的课程设计而做的。 我们计算机专业在 2011 年秋季学期开设了面向对象技 术。我们在理论课程结束以后也开始了面向对象课程设计, 可以更好的理解面向对象在实际应用中的作用。 关键词: 面向对象、课程设计、计算机与通信学院、学生成绩管理系 统。 3 序言 经过一个学期的学习, 我已经顺利地完成了面向对象这门课 程的理论学习阶段。通过一个学期的学习,我发现数据结构作为 我们计算机专业的一门必修课程是计算机程序设计的重要理论技 术基础、是计算机科学的核心课程。 为了巩固并且实

3、践学习到的理论知识,学校在理论教学结束 后随即开始了面向对象课程设计。这是一个检验学习效果并将所 学知识灵活运用的实践教学环节,对巩固所学内容,加深理解有 着不可估量的作用,所以我要以端正的态度来好好完成这次课程 设计。 在本次课程设计当中,我的课题是设计“学生成绩管理系统” 的仿真软件。通过设计任务书中的要求以及介绍,大致确定了主 要运用的知识要点是:线性表、查找表的逻辑结构、存储结构, 掌握查找、排序等基本运算,以及课本中提及的其他相关算法。 经过自己的一番努力以及指导老师的悉心指导,终于完成了 此方针软件的设计,通过这次课程设计,我基本了解并且学习了 如何分析研究数据对象的特性、数据的组

4、织方法、如何选取合适 的数据逻辑结构和存储结构。这对以后的学习都有着很大的帮助。 以下是这次课程设计的详细资料,希望对大家有所帮助。 4 正文正文 一一 题目简介题目简介 该设计要求学生以算法与数据结构课程成绩管理为背景,设 计出一个简单的能够实现成绩管理功能的系统。通过该题目的设 计过程,可以加深理解线性表、查找表的逻辑结构、存储结构, 掌握查找、排序等基本运算的实现,进一步理解和熟练掌握课本 中所学的各种数据结构,学会如何把学到的知识用于解决实际问 题,培养学生的动手能力。 二二任务任务 1、查阅文献资料,一般在 5 篇以上; 2、以兰州理工大学学生成绩管理业务为背景,通过调研、分析现有的

5、管理模 式和已有的管理软件,建立系统模型; 3、完成软件结构设计、数据库设计和算法设计; 4、完成高校学生成绩管理系统的软件开发和测试工作。 5、撰写设计说明书; 6、做好答辩工作。 三三. 主要内容、功能及技术指标主要内容、功能及技术指标 (1)整个系统由学生成绩管理系统、学生学分管理系统、学生基本信息管理系 5 统等组成; (2)系统要实现基本信息录入、修改、查询等功能; (3)系统要实现满足多种条件的统计分析功能,有些统计数据要采用图表的格 式呈现; (4)系统要有一定的安全控制策略; (5)整个系统可以选择采用 2 层结构。数据库系统采用 Access,SQL Server 2000,

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

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

8、主函 数之外,分别编写操作界面函数 Interface()、信息添加函数 Add()、 信息插入函数 enter()、信息输出函数 Display()、查找信息函数 Find()、信息修改 Modify()、信息删除 Delete()、总成绩排序函数 SortTotal()、姓名排序函数 SortName()、语文成绩排序函数 SortChinese()、文件保存 SaveFile()等函数,通过主函数调用 Interface 来实现。 7 2、实验流程图: 8 3、实验模块 /* 主函数 */ void main() 9 int i; struct student stuMax; /*定义结

9、构数组*/ FILE *fp; /*结构数组,即可输入的最大学生数,最大值为声明中预定义的 Max*/ int s; /*设置变量,以用于用户输入信息的接收,并将其作为转向函数的参数*/ int n=0; /*整型变量*/ char menu20=添加学生信息,显示学生信息,按姓名排序,按总分排序 ,按语文成绩排序, 按数学成绩排序,按外语成绩排序,按物理成绩排序,按化学成绩排序, 检索学生信息,修改学生信息,插入学生信息,删除学生信息,信息存盘, 退出系统; /*系统密码管理*/ char pass8; int flag=0; int w=3; char openfile10; char o

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

11、931-2976018nnn); printf(* *nnn); printf(nttt 正在进入系统-); Sleep(2000); system(cls); /*用 system 调用 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

12、) 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, n+; printf(n 数据读入完毕!); fclose(fp); system(cls); printf(n*学生信息显示 11 *nn); Display(stu,0,n-1); Sleep(3000); printf(nn*学生姓名排序显示 *nn); SortName(stu

13、,n); Display(stu,0,n-1); Sleep(3000); printf(nn*学生总分排序显示 *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); So

14、rtForeignLanguage(stu,n); Display(stu,0,n-1); Sleep(3000); printf(nn*学生物理成绩排序显示 *nn); SortPhysics(stu,n); Display(stu,0,n-1); Sleep(3000); printf(nn*学生化学成绩排序显示 *nn); SortChemistry(stu,n); Display(stu,0,n-1); 12 Sleep(3000); system(cls); printf(nn 其它复杂操作,请进入界面完成-); Sleep(2000); system(cls); goto stop

15、; /*打开已有文件*/ printf(n 请进行手动操作-nn); printf (n 打开已有的文件d:student.txt?(y/n) bb); scanf(%s,openfile); 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 %

16、d %d %d %dn,stun.rank,stun.StudentNumber,stun.Name, 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: SortTo

17、tal(stu,n);break; case 5: SortChinese(stu,n);break; case 6: SortMath(stu,n);break; case 7: SortForeignLanguage(stu,n);break; case 8: SortPhysics(stu,n);break; 13 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=Dele

18、te(stu,n);break; case 14: SaveFile(stu,n);break; case 15: exit(0); while(s0 do scanf(%d, 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

19、);break; case 5: SortChinese(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);br

20、eak; case 14: SaveFile(stu,n); case 15: exit(0); break; else printf(输入有误,请重新输入:); while(f!=0); /* 操作界面函数 */ int Interface(char (*x)20,int n) int w1; 14 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):

21、bbb); do scanf(%d, if(i15) w1=1; printf(请选择 1-15 之间的数,请再次输入: bbb); else 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(姓名:); 1

22、5 scanf(%s,(p+n)-Name); printf(语文:); scanf(%d, printf(数学:); scanf(%d, printf(外语:); scanf(%d, printf(物理:); scanf(%d, printf(化学:); scanf(%d, (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,

23、 int start, int end) int i; printf(n%9s%10s%10s,名次,学号,姓名); /*显示标题*/ printf(%8s%8s%8s%8s%8s%8s,总分,语文,数学,外语,物理,化学); printf(n nn); 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); prin

24、tf(n n); /* 按姓名排序函数 */ void SortName(struct student *p,int n) int i,j,k; for (i=0;in-1;i+) 16 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)

25、k=j; if(i!=k)Swap(p+k,p+i); /*交换总分*/ printf(n-完成总分排序(由高到低)!-n); /* 按语文成绩排序函数 */ 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

26、) int i,j,k; 17 for (i=0;in-1;i+) k=i; for (j=i+1;jScore1Score1)k=j; if(i!=k)Swap(p+k,p+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

27、(n-完成外语成绩由高到低排序!-n); /* 按物理成绩排序函数 */ void SortPhysics(struct student *p,int n) int i,j,k; for (i=0;in-1;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) 18 int i,j,k; for (i=0;in-1;i+) k=i;

28、 for (j=i+1;jScore4Score4)k=j; if(i!=k)Swap(p+k,p+i); /*交换化学成绩*/ printf(n-完成化学成绩由高到低排序!-n); /* 按姓名检索函数 */ int Find(struct student *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); else Display(p,i,i); getchar();

29、 return i; /* 修改信息函数 */ void Modify(struct student *p,int n) int i; i=Find(p,n); /*调用 Find()函数*/ if(i=0) /*若找到匹配信息,则修改*/ printf(请输入新信息:n); printf(名次:); scanf(%s,(p+i)-rank); printf(学号:); scanf(%s,(p+i)-StudentNumber); printf(姓名:); scanf(%s,(p+i)-Name); printf(语文:); 19 scanf(%d, printf(数学:); scanf(%d

30、, printf(外语:); scanf(%d, printf(物理:); scanf(%d, printf(化学:); scanf(%d, (p+i)-Total=0; (p+i)-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) /*若找到匹配信息

31、,则删除*/ pi=pn-1; n=n-1; printf(n-信息已删除!-n); return n; /* 信息交换函数 */ void Swap(struct student *p1,struct student *p2) struct student temp; temp=*p1; *p1=*p2; *p2=temp; /* 信息检索函数 */ 20 int Search(struct student *p,char *t,int n) int i; for (i=0;iName,t) return i; return -1; /* 保存文件函数 */ void SaveFile(st

32、ruct 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)=NULL) printf(文件写入出

33、错!n); /*写入文件,如果为空,则提示出错*/ printf(n-文件已保存!n-); fclose(fp1); /*关闭文件*/ /* 信息插入函数 */ int enter(struct student *p,int n) int i,j; printf(n 新信息将插入此学生信息之前!nn); i=Find(p,n); /*调用 Find()函数*/ if(i=0) /*若找到插入点*/ for(j=n-1;j=i-1;j-) pj+1=pj; 21 printf(请输入新信息:n); printf(名次:); scanf(%s,(p+i)-rank); printf(学号:); s

34、canf(%s,(p+i)-StudentNumber); printf(姓名:); scanf(%s,(p+i)-Name); printf(语文:); scanf(%d, printf(数学:); scanf(%d, printf(外语:); scanf(%d, printf(物理:); scanf(%d, printf(化学:); scanf(%d, (p+i)-Total=0; (p+i)-Total=(p+i)-Total+(p+i)-Score0+(p+i)-Score1 +(p+i)-Score2+(p+i)-Score3+(p+i)-Score4); n=n+1; printf

35、(n-信息已插入!-n); return n; 4、程序的调试与测试: 所谓程序调试是指对程序的查错与排错。在编写完一个源程序 之后,不要立即进行编译,而应对程序进行全面的人工检查一遍, 检查无误后,可以开始进行程序调试。由编译系统进行检查、发现 错误,根据编译系统提示的错误类型和警告及出现的位置,我们可 以定位到错误地点进行修改,然后再编译,如此反复进行,直至不 再出现错误位置,最后才进行程序的连接于运行。调试完以后,下 一步就是对程序进行测试,运行程序,向程序中输入数据,根据输 22 出结果是否正确(是否符合自己的想法)来判断程序是否正确,如 果不正确或不符合自己的目的,就需要对程序进行修

36、改。然后再调 试,再测试,直至结果无误或符合要求后,测试才算结束,此时, 程序才算是满足题目要求的正确程序。 5、运行结果: (1)运行结果界面如下: (2)选择 1 号菜单,添加学生信息,运行结果如下: 23 (3)选择 2 号菜单,读入所有学生信息,运行结果如下: 24 (4)选择 4 号菜单,进入学生总分成绩排序功能菜单,运行 结果如下: (5)选择 5 号功能菜单,按学生的语文成绩排序,运行结果如下: 25 (6)选择 10 号功能菜单,查询学生信息,运行结果如下: 26 (7)选择 6 号功能菜单,按学生的数学成绩排序,运行结果如下: (8)选择 11 号菜单,修改学生信息,运行结果

37、如下: 27 (9)选择 12 号菜单,插入学生信息,按任意键结束程序,运行结果 如下: 28 (10)选择 13 号功能菜单,删除学生信息,运行结果如下: (11)选择 14 号功能菜单,文件保存,运行结果如下: 七、实验总结七、实验总结 通过完成这个综合的设计实例,我的收获颇深。首先从一个 课程的角度而言,课程的设计波及知识的广度,学生的动手能力, 实践能力,解决问题的能力。在此次课设中,我了解到写一个程 序是多么的不易,它不但需要一定的专业知识,还要有足够的耐 29 心和细心。这对于我们一个初学者来说,无疑是一个具大的挑战。 一个小小的算法虽然不是很难,但你只要有一点点的错误, ,它 就

38、不能运行,它就不是一个完整的好程序。在编译过程中就遇到 很多这样的情况,比如输入错误的频率很高,证明自己对程序的 熟练程度很低,不上手,容易漏掉东西,最后单个程序都没错误 了,但放到一起就总出现错误,经过仔细检查发现时函数输入时 出现了错误,经改正,程序正常运行了。可见程序不允许有一丁 点的错误。 在课设刚刚开始的时候就遇到好多问题不知道怎么办,静下 心来,仔细去写程序。老师会给我们需要编程的内容一些讲解, 顺着老师的思路,来完成自己的设计,我们可以开始运行自己的 程序,可是好多处的错误让人看的可怕,还看不出到底是哪里出 现了错误,但是程序还是得继续下去,我多次请教了老师和同学, 逐渐能自己找

39、出错误,并加以改正。Visual C+里检查错误都是 用英文来显示出来的,经过了这次课程设计,现在已经可以了解 很多错误在英文里的提示,这对我来说是一个突破性的进步,眼 看着一个个错误通过自己的努力在我眼前消失,觉得很是开心。 此次的程序设计能够成功,是我努力的结果。在这一段努力学习 的过程中,我的编程设计有了明显的提高。 通过这次课设的实战练习,我熟悉了 Visual C+开发环境, 熟练掌握了在 Visual C+软件环境下编写和调试程序。对程序调 试和编译时系统提供的错误提示,我能很快地找到错误并排除这 30 些错误,使程序能正确运行。最重要的是在此过程中我积累了丰 富的经验,锻炼了我独

40、立思考的能力,增强了我对 C/C+语言应 用这门课程的兴趣。为以后编程和调试程序奠定了基础。 8、参考文献 1 严蔚敏,吴伟民.数据结构(C 语言版).清华大学出版社. 2 严蔚敏,吴伟民.数据结构题集(C 语言版).清华大学出 版社. 3 DATA STRUCTURE WITH C+. William Ford,William Topp .清华大学出版社(影印版). 4 谭浩强.c 语言程序设计. 清华大学出版社. 5数据结构与算法分析(Java 版) , A Practical Introduction to Data Structures and Algorithm Analysis J

41、ava Edition Clifford A. Shaffer , 张铭,刘晓丹译 电子工 业出版社 2001 年 1 月 31 九、致谢九、致谢 致致 谢谢 首先感谢我的指导老师朱红蕾老师在我的课程设计过程中提 出了指导性的方案和架构,并指引我阅读相关的资料和书籍,使 我在面对从书本到实际应用的鸿沟之时有了一座坚固的桥。 感谢我的面向对象老师年福忠老师在以往的基础课学习中为 我打下良好的基础,这是我这次课程设计能够顺利完成的前提。 我的同学在设计过程及完成后的测试中起到了相当重要的作 用,没有他们,我就不能发现后期测试过程出现的错误和漏洞, 在此一并表示感谢。 32 附录:源代码 /* 主函

42、数 */ void main() int i; struct student stuMax; /*定义结构数组*/ FILE *fp; /*结构数组,即可输入的最大学生数,最大值为声明中预定义的 Max*/ int s; /*设置变量,以用于用户输入信息的接收,并将其作为转向函数的参数*/ int n=0; /*整型变量*/ char menu20=添加学生信息,显示学生信息,按姓名排序,按总分排序 ,按语文成绩排序, 按数学成绩排序,按外语成绩排序,按物理成绩排序,按化学成绩排序, 检索学生信息,修改学生信息,插入学生信息,删除学生信息,信息存盘, 退出系统; /*系统密码管理*/ char

43、 pass8; int flag=0; int w=3; char openfile10; char openfile110; do printf(n 请输入管理员密码:); scanf(%s,pass); if(!strcmp(pass,password) for(i=0;i0); if(!flag) printf(你已连续三次输入错误,请确认后再使用本系统,谢谢!n); exit(0); Sleep(1000); system(cls); /*用 system 调用 dos 命令,清屏*/ printf(nttt 欢迎进入学生成绩管理系统nn); printf(* *nnn); print

44、f(单位:兰州理工大学nn); printf(地址:兰州市七里河区nn); printf(电话nn); printf(* *nnn); printf(nttt 正在进入系统-); Sleep(2000); system(cls); /*用 system 调用 dos 命令,清屏*/ printf(nn 是否启用智能浏览系统?(y/n) bb); scanf(%s,openfile1); system(cls); if(strcmp(openfile1,y)=NULL) printf(nn-进入智能学生成绩管理浏览系统-nn); Sleep(2000); printf

45、(现在打开已有存储数据-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 %d %d %dn,stun.rank,stun.StudentNumber,stun.Name, n+; printf(n 数据读入完毕!); 34 fclose(fp); system(cls); printf(n*学生信息显示 *nn); Display(stu,0,n-1); S

46、leep(3000); printf(nn*学生姓名排序显示 *nn); SortName(stu,n); Display(stu,0,n-1); Sleep(3000); printf(nn*学生总分排序显示 *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

47、,n-1); Sleep(3000); printf(nn*学生外语成绩排序显示 *nn); SortForeignLanguage(stu,n); Display(stu,0,n-1); Sleep(3000); printf(nn*学生物理成绩排序显示 *nn); SortPhysics(stu,n); Display(stu,0,n-1); Sleep(3000); 35 printf(nn*学生化学成绩排序显示 *nn); SortChemistry(stu,n); Display(stu,0,n-1); Sleep(3000); system(cls); printf(nn 其它复杂

48、操作,请进入界面完成-); Sleep(2000); system(cls); goto stop; /*打开已有文件*/ printf(n 请进行手动操作-nn); printf (n 打开已有的文件d:student.txt?(y/n) bb); scanf(%s,openfile); if(strcmp(openfile,y)=NULL)/*strcmp 字符串比较函数,相等为 0,前者小 为负,前者大为正*/ if(fp=fopen(d:student.txt,r)=NULL) printf(不能打开文件!n); exit(0); while (feof(fp)=0)/*feof 函数

49、判断文件是否结束,结束为 1,否则为 0*/ fscanf(fp,%s %s %s %d %d %d %d %d %dn,stun.rank,stun.StudentNumber,stun.Name, 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);bre

50、ak; case 3: SortName(stu,n);break; 36 case 4: SortTotal(stu,n);break; case 5: SortChinese(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);br

51、eak; case 12: enter(stu,n);break; case 13: n=Delete(stu,n);break; case 14: SaveFile(stu,n);break; case 15: exit(0); while(s0 do scanf(%d, 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

52、3: SortName(stu,n);break; case 4: SortTotal(stu,n);break; case 5: SortChinese(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

53、: enter(stu,n);break; case 13: n=Delete(stu,n);break; case 14: SaveFile(stu,n); case 15: exit(0); break; else printf(输入有误,请重新输入:); while(f!=0); 37 /* 操作界面函数 */ 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

54、,j+1,xj); printf(nn* *nn); printf (请选择操作项(1-15): bbb); do scanf(%d, if(i15) w1=1; printf(请选择 1-15 之间的数,请再次输入: bbb); else 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(学号

55、:); scanf(%s,(p+n)-StudentNumber); printf(姓名:); scanf(%s,(p+n)-Name); printf(语文:); scanf(%d, printf(数学:); scanf(%d, printf(外语:); scanf(%d, printf(物理:); scanf(%d, printf(化学:); scanf(%d, (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

56、; /* 显示信息函数 */ void Display(struct student *p, int start, int end) int i; printf(n%9s%10s%10s,名次,学号,姓名); /*显示标题*/ printf(%8s%8s%8s%8s%8s%8s,总分,语文,数学,外语,物理,化学); printf(n nn); 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)-Scor

57、e2,(p+i)-Score3,(p+i)-Score4); printf(n); printf(n n); /* 按姓名排序函数 39 */ void SortName(struct student *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;

58、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); /* 按语文成绩排序函数 */ 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); /* 40 按

59、数学成绩排序函数 */ 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+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

60、)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;i+) k=i; for (j=i+1;jScore3Score3)k=j; if(i!=k)Swap(p+k,p+i); /*交换物理成绩*/ printf(n-完成物理成绩由高到低排序!-n); 41 /* 按化学成绩排序函数 */ void SortChemistry(struct stude

温馨提示

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

最新文档

评论

0/150

提交评论