C语言课程设计资料.doc_第1页
C语言课程设计资料.doc_第2页
C语言课程设计资料.doc_第3页
C语言课程设计资料.doc_第4页
C语言课程设计资料.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

C语言课程设计资料学生成绩管理系统1、 某班学生成绩管理,包括以下功能:(1) 从键盘输入包括学号、姓名、各门课程成绩,并将其保存在磁盘文件student里(2) 打开文件后,计算每个人的总分和平均分,排序并保存(3) 具有在文件中进行单项查询或多项查询的功能(即能够按照给定的关键字姓名等找出满足条件的纪录)(4) 具有输出文件数据信息的功能实验报告包含内容:一、问题描述二、系统设计说明1、 数据结构设计(1) 系统用到哪些数据类型。(2)系统包括哪些功能模块,模块功能描述,各模块间的层次结构(即相互调用关系)以及模块之间的信息交换问题。2、算法设计各个模块内部的具体算法,包括输入、处理和输出,相当于C语言的过程或函数设计。3、测试用例设计准备典型测试数据和测试方案,测试数据要有代表性、敏感性。三、数据流程图系统整体的一个流程图。(加文字说明)具体算法的流程图。(加文字说明)四、程序源代码#include stdio.h #include stdlib.h #include string.h int shoudsave=0; /* */ struct student char num10;/* 学号 */ char name20; char class10;char term2;int ygrade;int cgrade; int mgrade; int egrade;int totle;int ave; char neartime10;/* 最近更新时间 */ ;typedef struct node struct student data; struct node *next; Node,*Link;void menu() printf(*); printf(t1登记学生资料ttttt2删除学生资料n); printf(t3查询学生资料ttttt4修改学生资料n); printf(t5保存学生资料ttttt0退出系统n); printf(*n); void printstart() printf(-n); void Wrong() printf(n=提示:输入错误!n); void Nofind() printf(n=提示:没有找到该学生!n); void printc() /* 本函数用于输出中文 */ printf( 学号t 姓名 班级 学期 语文成绩 英语成绩 数学成绩 C语言成绩 总分 平均分n);void printe(Node *p)/* 本函数用于输出英文 */ printf(%-12s%st%st%st%dt%dt%dt %dt %dn,p-data.num,,p-data.class,p-data.term,p-data.ygrade,p-data.egrade,p-data.mgrade,p-data.cgrade,p-data.totle,p-data.ave);Node* Locate(Link l,char findmess,char nameornum) /* 该函数用于定位连表中符合要求的接点,并返回该指针 */ Node *r; if(strcmp(nameornum,num)=0) /* 按学号查询 */ r=l-next; while(r!=NULL) if(strcmp(r-data.num,findmess)=0) return r; r=r-next; else if(strcmp(nameornum,name)=0) /* 按姓名查询 */ r=l-next; while(r!=NULL) if(strcmp(,findmess)=0) return r; r=r-next; return 0; void Add(Link l) /* 增加学生 */ Node *p,*r,*s; char num10; r=l; s=l-next; while(r-next!=NULL) r=r-next; /* 将指针置于最末尾 */ while(1) printf(请你输入学号(以0返回上一级菜单:);scanf(%s,num);if(strcmp(num,0)=0)break; while(s) if(strcmp(s-data.num,num)=0) printf(=提示:学号为%s的学生已经存在,若要修改请你选择4 修改!n,num); printstart(); printc(); printe(s); printstart(); printf(n); return; s=s-next; p=(Node *)malloc(sizeof(Node);strcpy(p-data.num,num); printf(请你输入姓名:); scanf(%s,); getchar(); printf(请你输入班级:);scanf(%s,p-data.class);getchar(); printf(请你输入学期:);scanf(%s,p-data.term);getchar(); printf(请你输入语文成绩:);scanf(%d,&p-data.ygrade);getchar(); printf(请你输入c语言成绩:); scanf(%d,&p-data.cgrade); getchar(); printf(请你输入数学成绩:); scanf(%d,&p-data.mgrade); getchar(); printf(请你输入英语成绩:); scanf(%d,&p-data.egrade); getchar(); p-data.totle=p-data.ygrade+p-data.egrade+p-data.cgrade+p-data.mgrade;p-data.ave=p-data.totle / 3; /* 信息输入已经完成 */ p-next=NULL; r-next=p; r=p; shoudsave=1; void Qur(Link l) /* 查询学生 */ int sel; char findmess20; Node *p;if(!l-next) printf(n=提示:没有资料可以查询!n); return; printf(n=1按学号查找n=2按姓名查找n); scanf(%d,&sel); if(sel=1)/* 学号 */ printf(请你输入要查找的学号:); scanf(%s,findmess); p=Locate(l,findmess,num); if(p) printf(tttt查找结果n); printstart(); printc(); printe(p); printstart(); else Nofind(); else if(sel=2) /* 姓名 */ printf(请你输入要查找的姓名:); scanf(%s,findmess); p=Locate(l,findmess,name); if(p) printf(tttt查找结果n); printstart(); printc(); printe(p); printstart(); else Nofind(); else Wrong();void Del(Link l) /* 删除 */ int sel; Node *p,*r; char findmess20; if(!l-next) printf(n=提示:没有资料可以删除!n); return; printf(n=1按学号删除n=2按姓名删除n); scanf(%d,&sel); if(sel=1) printf(请你输入要删除的学号:); scanf(%s,findmess); p=Locate(l,findmess,num); if(p) r=l; while(r-next!=p) r=r-next; r-next=p-next; free(p); printf(n=提示:该学生已经成功删除!n); shoudsave=1; else Nofind(); else if(sel=2) printf(请你输入要删除的姓名:); scanf(%s,findmess); p=Locate(l,findmess,name); if(p) r=l; while(r-next!=p) r=r-next; r-next=p-next; free(p); printf(n=提示:该学生已经成功删除!n); shoudsave=1; else Nofind(); else Wrong(); void Modify(Link l) Node *p; char findmess20; if(!l-next) printf(n=提示:没有资料可以修改!n); return; printf(请你输入要修改的学生学号:); scanf(%s,findmess); p=Locate(l,findmess,num); if(p) printf(请你输入新学号(原来是%s):,p-data.num); scanf(%s,p-data.num);printf(请你输入新姓名(原来是%s):,);scanf(%s,); getchar(); printf(请你输入新班级(原来是%s):,p-data.class);scanf(%s,p-data.class);getch();printf(请你输入新学期(原来是%s):,p-data.term);scanf(%s,p-data.term);getchar();printf(请你输入新的语文成绩(原来是%d分):,p-data.ygrade);scanf(%d,&p-data.ygrade);getchar(); printf(请你输入新的c语言成绩(原来是%d分):,p-data.cgrade); scanf(%d,&p-data.cgrade); getchar(); printf(请你输入新的数学成绩(原来是%d分):,p-data.mgrade); scanf(%d,&p-data.mgrade); getchar(); printf(请你输入新的英语成绩(原来是%d分):,p-data.egrade); scanf(%d,&p-data.egrade); p-data.totle=p-data.egrade+p-data.cgrade+p-data.mgrade; p-data.ave=p-data.totle/3; printf(n=提示:资料修改成功!n); shoudsave=1; else Nofind();void Disp(Link l) int count=0; Node *p; p=l-next;if(!p) printf(n=提示:没有资料可以显示!n); return; printf(tttt显示结果n); printstart(); printc(); printf(n); while(p) printe(p); p=p-next; printstart(); printf(n); void Tongji(Link l) Node *pm,*pe,*pc,*pa; /* 用于指向不及格学生的接点 */Node *r=l-next; if(!r) printf(n=提示:没有资料可以统计!n); return ; pm=pe=pc=pa=r;while(r!=NULL) if(r-data.ygradedata.cgradedata.mgradedata.egradenext; printf(-统计结果-n); printf(语文不及格:t%s %d分n,,pe-data.ygrade);printf(英语不及格:t%s %d分n,,pe-data.egrade);printf(数学不及格:t%s %d分n,,pm-data.mgrade);printf(c语言不及格:t%s %d分n,,pc-data.cgrade);printstart(); void Sort(Link l) Link ll; Node *p,*rr,*s;ll=(Link)malloc(sizeof(Node); /* 用于做新的连表 */ ll-next=NULL;if(l-next=NULL) printf(n=提示:没有资料可以排序!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; printf(n=提示:排序已经完成!n); void Save(Link l) FILE* fp; Node *p; int flag=1,count=0; fp=fopen(c:student,wb); if(fp=NULL) printf(n=提示:重新打开文件时发生错误!n); exit(1); p=l-next;while(p) if(fwrite(p,sizeof(Node),1,fp)=1) p=p-next; count+; else flag=0; break; if(flag) printf(n=提示:文件保存成功.(有%d条记录已经保存.)n,count); shoudsave=0; fclose(fp); void main() Link l;/* 连表 */ FILE *fp; /* 文件指针 */ int sel; char ch; char jian;int count=0; Node *p,*r;l=(Node*)malloc(sizeof(Node); l-next=NULL; r=l;fp=fopen(C:student,rb); if(fp=NULL) printf(n=提示:文件还不存在,是否创建?(y/n)n); scanf(%c,&jian); if(jian=y|jian=Y) fp=fopen(C:student,wb); else exit(

温馨提示

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

评论

0/150

提交评论