学生成绩管理系统 C语言课程设计.doc_第1页
学生成绩管理系统 C语言课程设计.doc_第2页
学生成绩管理系统 C语言课程设计.doc_第3页
学生成绩管理系统 C语言课程设计.doc_第4页
学生成绩管理系统 C语言课程设计.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

课程设计说明书 NO.26学生成绩管理系统1.程设计的目的通过本程序可以训练学生程序设计的基本技能,让学生掌握C程序各种函数的应用。同时也大大增加了学生的学习兴趣,提高了学生的编程能力。进一步掌握和利用C语言进行程设计的能力;进一步理解和运用结构化程设计的思想和方法;初步掌握开发一个小型实用系统的基本方法;学会调试一个较长程序的基本方法;掌握书写课程设计开发文档的能力.2设计方案论证2.1设计思路(1)输入学生初始信息模块:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。当正确输入存在的学生学号,系统进行判断时,提示存在此学生。(2)查询模块:可用stu *lookdata(stu *p1) 来实现。找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。当正确输入查找信息时,系统却不能够得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。(3)插入模块:可用insert( )函数来实现。其中通过学号的大小来比较的,并且以此来排序。当我们输入插入信息时,系统却提示插入不进数据。(4) 学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage() 、maverage() 、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。(5)退出系统:学生成绩管理系统可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。退退出系统信信息及成绩插插入模块查查询模块初初始信息模块3程序源代码 #include #include #include #include #include#include#include#include#define PRINT1 textcolor(12); cprintf(r 请按任意键返回主菜单nr);textcolor(10); getch();clrscr(); break;int shoudsave=0;struct student /* 学生信息结构体定义*/char num10,name20,sex4;int score1,score2,score3,totle,ave;typedef struct nodestruct student data;struct node *next;Node,*L;void print1() cprintf(r=);void print2() cprintf(nr 1.输入学生信息 在这里你可以按照提示输入学生的学号,姓名,性别及各科成绩.n); cprintf(nr 2.注销学生信息 在这里你可以按照学号或姓名将某一名学生的信息从本系统中删除.n); cprintf(nr 3.查询学生信息 在这里你可以按照学号或姓名查询某一名学生的信息.n); cprintf(nr 4.修改学生信息 在这里你可以按照提示修改某一名学生的学号,姓名,性别及各科成绩.); cprintf(nr 5.学生信息排序 在这里你可以看到所有学生的成绩成绩.n); cprintf(nr 6.学生信息统计 在这里本系统将为你显示所有科目的最高分及最低分所得学生.n); cprintf(nr 7.显示学生信息 在这里你可以看到系统中所有学生的信息.n); cprintf(nr 8.保存学生信息 在这里你可以将学生你信息保存到内存中.n); cprintf(nr 9.帮助信息 在这里你可以获得帮助信息.n); cprintf(nr 0.退出系统 在这里选择是否保存后,你可以安全的退出本系统.nnr );void menu() cprintf(nrxc9xcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcbxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxbb); cprintf(rxba 学生信息导入 xba 学生信息处理 xba); cprintf(rxba_xba_xba); cprintf(rxba 1-输入学生信息 xba 6-学生信息统计 xba); cprintf(rxba 2-注销学生信息 xba 7-显示学生信息 xba); cprintf(rxba 3-查询学生信息 xba 8-保存学生信息 xba); cprintf(rxba 4-修改学生信息 xba 9-帮助信息 xba); cprintf(rxba 5-学生信息排序 xba 0-退出系统 xba); cprintf(rxc8xcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcaxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxcdxbc);void wrong() cprintf(nr输入错误!请验证后重新输入.n);void notfind()cprintf(nr该学生信息不存在!请验证后重新输入.n);void printc() /* 此函数用于输出中文格式 */cprintf(r 学号 姓名 性别 英语成绩 数学成绩 C语言成绩 总分 平均分n );void printe(Node *p) /* 此函数用于输出英文格式 */cprintf( %-8s%-10s%5s%12d%13d%13d%8d%9dnr,p-data.num,,p-data.sex,p-data.score3,p-data.score2,p-data.score1,p-data.totle,p-data.ave);Node* Locate(L l,char findinfo,char nameornum) /* 该函数用于定位连表中符合要求的接点,并返回该指针 */Node *r;if(strcmp(nameornum,num)=0) /* 按学号查询 */r=l-next;while(r!=NULL)if(strcmp(r-data.num,findinfo)=0)return r;r=r-next;else if(strcmp(nameornum,name)=0) /* 按姓名查询 */r=l-next;while(r!=NULL)if(strcmp(,findinfo)=0)return r;r=r-next;return 0;void input(L l) /* 增加学生 */ Node *p,*r,*s; char num10; r=l; s=l-next;while(r-next!=NULL) r=r-next; /* 将指针置于最末尾 */while(1) cprintf(r如果输入完毕,请按任意键返回主菜单n); cprintf(r如果你还想输入,请按y(yes)继续nr); scanf(%s,num); if(strcmp(num,y)=0) cprintf(请你输入学号:); scanf(%s,num); else break;while(s) if(strcmp(s-data.num,num)=0) printf(t学号为%s的学生已经存在,若要修改请你选择4 修改!n,num);print1();printc(); printe(s); print1();printf(n); getch();return; s=s-next; p=(Node *)malloc(sizeof(Node);strcpy(p-data.num,num);cprintf(r请你输入姓名:);scanf(%s,);getchar();cprintf(r请你输入性别(M OR F):);scanf(%s,p-data.sex);getchar();cprintf(r请你输入c语言成绩(0-100):);scanf(%d,&p-data.score1);getchar();cprintf(r请你输入数学成绩(0-100):);scanf(%d,&p-data.score2);getchar();cprintf(r请你输入英语成绩(0-100):);scanf(%d,&p-data.score3);getchar();p-data.totle=p-data.score3+p-data.score1+p-data.score2;p-data.ave=p-data.totle / 3; /* 信息输入已经完成 */p-next=NULL;r-next=p;r=p;shoudsave=1;void query(L l) /* 查询学生信息 */int select;char findinfo20;Node *p;if(!l-next)cprintf(n 没有信息可以查询!n);return;cprintf(n1=按学号查找nr2=按姓名查找nr);scanf(%d,&select);if(select=1) /* 学号 */cprintf(r请你输入要查找的学号:);scanf(%s,findinfo);p=Locate(l,findinfo,num);if(p)cprintf( 查找结果nr);print1();printc();printe(p);print1();elsenotfind();else if(select=2) /* 姓名 */cprintf(r请你输入要查找的姓名:);scanf(%s,findinfo);p=Locate(l,findinfo,name);if(p)cprintf( 查找结果nr);print1();printc();printe(p);print1();elsenotfind();elsewrong();void Delete(L l) /* 删除学生信息 */int select;Node *p,*r;char findinfo20;if(!l-next)cprintf(n 没有信息可以删除!n);return;cprintf(n1=按学号删除nr2=按姓名删除nr);scanf(%d,&select);if(select=1)cprintf(r请你输入要删除的学号:);scanf(%s,findinfo);p=Locate(l,findinfo,num);if(p)r=l;while(r-next!=p)r=r-next;r-next=p-next;free(p);cprintf(nr该学生已经成功删除!n);shoudsave=1;elsenotfind();else if(select=2)cprintf(r请你输入要删除的姓名:);scanf(%s,findinfo);p=Locate(l,findinfo,name);if(p)r=l;while(r-next!=p)r=r-next;r-next=p-next;free(p);cprintf(nr该学生已经成功删除!n);shoudsave=1;elsenotfind();else wrong();void modify(L l) /*修改学生信息*/Node *p;char findinfo20;if(!l-next)cprintf(nr没有信息可以修改!n);return;cprintf(r请你输入要修改的学生学号:);scanf(%s,findinfo);p=Locate(l,findinfo,num);if(p)cprintf(r请你输入新学号(原来是%s):,p-data.num);scanf(%s,p-data.num);cprintf(r请你输入新姓名(原来是%s):,);scanf(%s,);getchar();cprintf(r请你输入新性别(原来是%s):,p-data.sex);scanf(%s,p-data.sex);cprintf(r请你输入新的c语言成绩(原来是%d分):,p-data.score1);scanf(%d,&p-data.score1);getchar();cprintf(r请你输入新的数学成绩(原来是%d分):,p-data.score2);scanf(%d,&p-data.score2);getchar();cprintf(r请你输入新的英语成绩(原来是%d分):,p-data.score3);scanf(%d,&p-data.score3);p-data.totle=p-data.score3+p-data.score1+p-data.score2;p-data.ave=p-data.totle/3;cprintf(nr信息修改成功!n);shoudsave=1;elsenotfind();void display(L l) /*显示全部学生信息*/int count=0;Node *p;p=l-next;if(!p)cprintf(nr 没有信息可以显示!n);return;cprintf( 显示结果 );print1();printc();while(p) if(count%5=0) getch();printe(p);p=p-next;count+;print1();cprintf(n);void Statistic(L l) /*统计学生信息*/ Node *pm_max,*pe_max,*pc_max,*pt_max,*pa_max; /* 用于指向分数最高的接点 */Node *pm_min,*pe_min,*pc_min,*pt_min,*pa_min;Node *r=l-next;if(!r)cprintf(nr 没有信息可以统计!n);return ;pm_max=pe_max=pc_max=pt_max=pa_max=pm_min=pe_min=pc_min=pt_min=pa_min=r;while(r!=NULL) if(r-data.score1=pc_max-data.score1)pc_max=r;if(r-data.score1data.score1)pc_min=r;if(r-data.score2=pm_max-data.score2)pm_max=r;if(r-data.score2data.score2)pm_min=r;if(r-data.score3=pe_max-data.score3)pe_max=r;if(r-data.score3data.score3)pe_min=r;if(r-data.totle=pt_max-data.totle)pt_max=r;if(r-data.totledata.totle)pt_min=r;if(r-data.ave=pa_max-data.ave)pa_max=r;if(r-data.avedata.ave)pa_min=r;r=r-next;cprintf(=统计结果=n);cprintf(r总分最高者: %-16s %d分n,pt_,pt_max-data.totle);cprintf(r平均分最高者: %-16s %d分n,pa_,pa_max-data.ave);cprintf(r英语最高者: %-16s %d分n,pe_,pe_max-data.score3);cprintf(r数学最高者: %-16s %d分n,pm_,pm_max-data.score2);cprintf(rc语言最高者: %-16s %d分nr,pc_,pc_max-data.score1);cprintf(r总分最低者: %-16s %d分n,pt_,pt_min-data.totle);cprintf(r平均分最低者: %-16s %d分n,pa_,pa_min-data.ave);cprintf(r英语最低者: %-16s %d分n,pe_,pe_min-data.score3);cprintf(r数学最低者: %-16s %d分n,pm_,pm_min-data.score2);cprintf(rc语言最低者: %-16s %d分nr,pc_,pc_min-data.score1);print1(); void Sort(L l)L ll;Node *p,*rr,*s; ll=(L)malloc(sizeof(Node); /* 用于做新的连表 */ll-next=NULL; if(l-next=NULL)cprintf(nr 没有信息可以排序!n);return ; p=l-next; while(p)s=(Node*)malloc(sizeof(Node); /* 新建接点用于保存信息 */s-data=p-data;s-next=NULL;rr=ll;while(rr-next!=NULL & rr-next-data.totle=p-data.totle) rr=rr-next;if(rr-next=NULL)rr-next=s;else s-next=rr-next;rr-next=s; p=p-next; free(l);l-next=ll-next;cprintf(nr 排序已经完成!n);void Save(L l) /* */FILE* fp; Node *p;int flag=1,count=0; fp=fopen(c:student,wb); if(fp=NULL)cprintf(nr 重新打开文件时发生错误!n);exit(1);p=l-next;while(p)if(fwrite(p,sizeof(Node),1,fp)=1)p=p-next;count+;elseflag=0;break;if(flag)cprintf(nr 文件保存成功.(有%d条信息已经保存.)nr,count);shoudsave=0;fclose(fp);void main() /* */L l; /* 链表 */FILE *fp; /* 文件指针 */int count=0 ,i,menu_select; /*菜单选择 */char ch ,creat;Node *p,*r;time_t it;clrscr(); textmode(C80);window(1,1,80,25);textbackground(1); clrscr();textcolor(10);cprintf(r 学生成绩管理系统 );cprintf(r -天津工业大学电科063班 ) ;cprintf(r 设计人员:赵利军,闵祖涛,张延,张参贵,付广莲,刘月 );l=(Node*)malloc(sizeof(Node);l-next=NULL;r=l;fp=fopen(c:student,rb);if(fp=NULL)cprintf(nr 该文件还未存在,是否需要创建?(y/n,Y/N)nr);scanf(%c,&creat);if(creat=y|creat=Y)fp=fopen(c:student,wb);elseexit(0);gotoxy(9,11); textcolor(12);cprintf(nr 文件已经打开,系统正在导入信息);for(i=0;inext=NULL;r-next=p;r=p; /* 将该接点挂入连中 */count+;fclose(fp); /* 关闭文件 */gotoxy(1,3);cprintf(nr信息导入完毕,系统共导入%d条信息 ,count);sleep(1);while(1) menu();textcolor(12);cprintf(r现在时间: ); it=time(NULL);cprintf(ctime(&it);cprintf(r左边数字对应功能选择,请按0-9选择操作:nr);textcolor(10) ;scanf(%d,&menu_select);if(menu_select=0)if(shoudsave=

温馨提示

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

评论

0/150

提交评论