课程设计报告学生成绩管理系统_第1页
课程设计报告学生成绩管理系统_第2页
课程设计报告学生成绩管理系统_第3页
课程设计报告学生成绩管理系统_第4页
课程设计报告学生成绩管理系统_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、高级语言程序设计课程设计说明书设计题目:学生成绩管理系统 目 录1 需求分析·······························11.问题描述 ···········&#

2、183;······················22功能要求 ··························&

3、#183;·······22 总体设计 ·······························31. 程序设计组成框图 ·······

4、3;······················32. 模块功能说明 ··························

5、;·······33. 程序流程图 ···································44. 函数调用关系 ····&#

6、183;·····························43 部分部分模块说明··················

7、83;······51. 主函数 ····································52. 菜单选择函数 ····&#

8、183;·························53. 输入函数 ·······················

9、;··········64 用户使用说明及测试结果 ················75 设计小结····················&

10、#183;·········106 参考文献 ·····························117 源代码 ········&#

11、183;······················11一、需求分析1.问题描述对一个有N个学生的班级,每个学生有M个课程。该系统能对成绩进行录入和修改,能计算每个学生的平均成绩以及各个功课的平均成绩,能根据学生的学号来查询该学生的成绩,能删除该学生的记录,能根据每个学生的平均成绩来给他们进行排序。2.功能要求1. 每一条记录包括一个学生的学号、姓名、各科成绩、平均成绩。2、输

12、入功能:可以一次完成无数条记录的输入。3、保存功能:将学生记录保存在任何自定义的文件中。4、显示功能:完成全部学生记录的显示。5、排序功能:按学生平均成绩进行排序。6、查找功能:按学号查找学生信息。7、读取功能:将保存在文件中的学生记录读取出来。 9、有一个清晰美观界面来调用各个功能。二、总体设计1程序设计组成框图学生成绩管理系统1.输入学生成绩信息2.保存学生信息3.显示全部学生信息4.按平均成绩排序5.删除学生信息6.按学号查找学生信息7.读取保存的信息8.退出2模块功能说明1 输入功能:输入学生信息。2 保存功能:保存学生信息。3 显示功能:显示全部学生的信息。 4 排序功能:按平均成绩

13、进行排序。5 删除功能:删除学生信息。6查找功能:查找学生信息。7读取功能:读取已保存学生信息。 8 退出系统。3.程序流程图开始输入指令(18)输入学生成绩保存学生信息学生学生信息平均成绩排序删除学生信息按学号查找读取保存信息退出退出12345678结 束4.主要函数之间相互调用如下:主函数main ()的调用switch(Menu_Select() case 1:head=Create();break;case 2:Save(head);break;case 3:Print(head);break;case 4:head=Sort(head);break;case 5:head=Delet

14、e(head);break; case 6:Search(head);break; case 7:head=Load(); break; case 8:exit(0);三、部分系统模块说明1. 主函数主函数通过指针调用各个模块的函数int main() STUDENT *head,New; head=Init(); for(;) switch(Menu_Select() case 1:head=Create();break; case 2:Save(head);break; case 3:Print(head);break; case 4:head=Sort(head);break; case

15、 5:head=Delete(head);break; case 6:Search(head);break; case 7:head=Load(); break; case 8:exit(0); return 0;2. 菜单选择函数选择系统相应功能int Menu_Select() int n;struct tm *pt;time_t t;t=time(NULL);pt=localtime(&t); /*读取系统日期并把它放到结构体中*/ printf("n按任一键进入主菜单. n"); getch(); system("pause");syst

16、em("cls");printf("t*欢迎使用学生成绩管理系统*n");printf("t* *n");printf("t* *n");printf("t*-请选择相应功能-*n");printf("t* *n");printf("t* 1. 输入学生成绩信息 *n");printf("t* 2. 保存所有学生信息 *n");printf("t* 3. 显示学生成绩 *n");printf("t* 4.

17、按平均成绩排序 *n");printf("t* 5. 删除学生成绩 *n");printf("t* 6. 按学号查找学生信息 *n");printf("t* 7. 读取学生信息 *n");printf("t* 8. 退出 *n");printf("t* *n");printf("t*n");printf("t* 当前系统时间: *n");printf("t*%d-%d-%d *n",pt->tm_year+1900,pt

18、->tm_mon+1,pt->tm_mday);/显示当前系统日期printf("t*%d:%02d:%02d *n",pt->tm_hour,pt->tm_min, pt->tm_sec);/显示系统当前时间printf("t*n");do printf("nttt输入你的选择(18):"); fflush(stdin);scanf("%d",&n); while(n<1|n>8); return(n); 3. 输入函数通过指针移动,将学生信息进行输入 STUDE

19、NT *Create() int i,s; STUDENT *head=NULL,*p; system("cls"); for(;) p=(STUDENT *)malloc(LEN); if(!p) return (head); printf("请输入学号(0返回主菜单):"); scanf("%s",p->num); if(p->num0='0') break; printf("请输入名字:"); scanf("%s",p->name); printf(&qu

20、ot;请输入3门成绩:n",3);printf("成绩1-3依次为高数、计算机、英语成绩:n");s=0; for(i=0;i<3;i+) do printf("成绩%d:",i+1); scanf("%d",&p->scorei); if(p->scorei<0 | p->scorei>100) printf("数据错误,请重新输入!n"); while(p->scorei<0 | p->scorei>100); s=s+p->s

21、corei; p->sum=s; p->average=(float)s/3; p->order=0; p->next=head; head=p; return(head); 四、用户使用说明及测试结果1.主界面2.输入界面 1. 保存2. 排序3. 删除4. 查找5. 读取五、设计小结C语言的学习是一个系统的过程,需要长期的知识积累和储备并辅以大量的上机实际操作练习,自己也有所体会,在实践中成长,在实践中求知。这次我设计的课题是学生信息管理系统。课题要求对学生信息实现一系列基本操作。我选择通过结构体数组来实现这个设计。通过这次课程设计让我对指针的理解更深,通过大量的符

22、号和printf语句,使得操作界面更加和谐友善,这些都是我通过这次实习积累的经验。总之,通过这次实习,我也认识到了我自己在程序设计这门课程上的不足,在以后的学习实践中,要更加的严谨踏实,对知识的把握要更加的细致入微,要活学活用,争取在这个学科上取得更大的进步。六参考文献 【1】谭浩强.C程序设计(第三版).北京:清华大学出版社,2005 【2】刘振安.C程序设计.北京:机械工业出版社,2004 【3】张宏烈.C语言程序设计方法.哈尔滨:哈尔滨工业大学出版社,2004源代码:/*学生成绩管理系统*/#include<stdio.h>#include<conio.h>#in

23、clude<malloc.h>#include<string.h>#include<time.h>#include <stdlib.h>#define LEN sizeof(STUDENT) typedef struct stu char num6; char name5; int score3; int sum; float average; int order; struct stu *next; STUDENT; /*初始化函数*/ STUDENT *Init() return NULL; /*菜单选择函数*/ int Menu_Selec

24、t() int n;struct tm *pt;time_t t;t=time(NULL);pt=localtime(&t); /*读取系统日期并把它放到结构体中*/ printf("n按任一键进入主菜单. n"); getch(); system("pause");system("cls");printf("t*欢迎使用学生成绩管理系统*n");printf("t* *n");printf("t* *n");printf("t*-请选择相应功能-*n&qu

25、ot;);printf("t* *n");printf("t* 1. 输入学生成绩信息 *n");printf("t* 2. 保存所有学生信息 *n");printf("t* 3. 显示学生成绩 *n");printf("t* 4. 按平均成绩排序 *n");printf("t* 5. 删除学生成绩 *n");printf("t* 6. 按学号查找学生信息 *n");printf("t* 7. 读取学生信息 *n");printf(&q

26、uot;t* 8. 退出 *n");printf("t* *n");printf("t*n");printf("t* 当前系统时间: *n");printf("t* %d-%d-%d *n",pt->tm_year+1900,pt->tm_mon+1,pt->tm_mday);/显示当前系统日期printf("t* %d:%02d:%02d *n",pt->tm_hour,pt->tm_min, pt->tm_sec);/显示系统当前时间printf

27、("t*n");do printf("nttt输入你的选择(18):"); fflush(stdin);scanf("%d",&n); while(n<1|n>8); return(n); /*输入函数*/ STUDENT *Create() int i,s; STUDENT *head=NULL,*p; system("cls"); for(;) p=(STUDENT *)malloc(LEN); if(!p) return (head); printf("请输入学号(0返回主菜单)

28、:"); scanf("%s",p->num); if(p->num0='0') break; printf("请输入名字:"); scanf("%s",p->name); printf("请输入3门成绩:n",3);printf("成绩1-3依次为高数、计算机、英语成绩:n");s=0; for(i=0;i<3;i+) do printf("成绩%d:",i+1); scanf("%d",&p-&

29、gt;scorei); if(p->scorei<0 | p->scorei>100) printf("数据错误,请重新输入!n"); while(p->scorei<0 | p->scorei>100); s=s+p->scorei; p->sum=s; p->average=(float)s/3; p->order=0; p->next=head; head=p; return(head); /* 显示全部记录函数*/ void Print(STUDENT *head) int i=0;STU

30、DENT *p; system("cls"); p=head; printf("n*结果*n"); printf("-n"); printf("序号t学号t姓名t高数t英语t计算机t总分t平均分t名次tn"); printf("-n"); while(p!=NULL) i+; printf("%dt%st%st%dt%dt%dt%dt%.2ft%dtn", i, p->num,p->name,p->score0,p->score1,p->scor

31、e2,p->sum,p->average,p->order); p=p->next; printf("-n"); printf("*结束*n"); /*查找记录函数*/ void Search(STUDENT *head) STUDENT *p; char s5; system("cls"); printf("请输要查询的学生的姓名:n"); scanf("%s",s); p=head; while(strcmp(p->name,s) && p !=

32、 NULL) p=p->next; if(p!=NULL) printf("n*结果*n"); printf("-n"); printf("学号t姓名t高数t英语t计算机t总分t平均分t名次n"); printf("-n"); printf("%st%st%dt%dt%dt%dt%.2ft%dtn", p->num,p->name,p->score0,p->score1,p->score2,p->sum,p->average,p->order

33、); printf("-n"); printf("*结束*n"); else printf("n没有该学生!n",s); /*删除记录函数*/ STUDENT *Delete(STUDENT *head) STUDENT *p1,*p2; char c,s6; system("cls"); printf("请输入要删除学生的学号: "); scanf("%s",s); p1=p2=head; while(strcmp(p1->num,s) && p1 !

34、= NULL) p2=p1; p1=p1->next; if(strcmp(p1->num,s)=0) printf("*结果*n"); printf("-n"); printf("学号t姓名t高数t英语t计算机t总分t平均分t名次n"); printf("-n"); printf("%st%st%dt%dt%dt%dt%.2ft%dtn", p1->num,p1->name,p1->score0,p1->score1,p1->score2,p1->

35、;sum,p1->average,p1->order); printf("-n"); printf("*结束*n"); printf("n是否要删除,输入Y删除,N则退出n?");for(;) scanf("%c",&c); if(c='n'|c='N') break; if(c='y'|c='Y') if(p1=head) head=p1->next; else p2->next=p1->next;printf(

36、"n学号为: %s 学生已被删除n",s); printf("别忘了保存!n");break; else printf("n表上没有这个学生的信息!n",s); return(head); /*排序函数*/ STUDENT *Sort(STUDENT *head) int i=0; STUDENT *p1,*p2,*t,*temp;temp=head->next; head->next=NULL; while(temp!=NULL) t=temp; temp=temp->next; p1=head; p2=head; while(t->average<p1->average&&p1!=NULL) p2=p1; p1=p1->next; if(p1=p2) t->next=p1; head=t; else t->next=p1; p2->next=t; p1=head; while(p1!=NULL) i+; p1->order=i; p1=p1->next; printf

温馨提示

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

评论

0/150

提交评论