C语言学生成绩查询系统_第1页
C语言学生成绩查询系统_第2页
C语言学生成绩查询系统_第3页
C语言学生成绩查询系统_第4页
C语言学生成绩查询系统_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、.实训目的能力目标全面熟悉、掌握C语言基本知识,掌握C程序设计中数组、函数、指针的操作,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,规范编程思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。实训要求:(1) 掌握C语言中的基本数据输入、输出;(2) 熟练使用C语言中的数组;(3) 熟练使用C语言中的函数;(4) 熟练使用C语言中的指针;(5) 熟练使用C语言中的结构体。实训内容(过程及步骤)设计题目:

2、学生成绩查询系统1、基本思路:以数组为基础,加以函数和结构体。然后程序分由“输入学生成绩”,“输出学生成绩”,“查询学生成绩”,“修改学生成绩”, “查看成绩排序”,“查看成绩统计保存数据”, “读取数据”等等这几大部分组成。这五部分各自用一个程序列出,然后在用其他函数将他们连接起来。2、程序:#include<stdafx.h>#include<stdlib.h>#include<stdio.h>#include<string.h>#include<conio.h>#define N 10/*定义结构体*/typedef struc

3、t students /*标记为students*/ char num10; /*学生学号*/ char name10; /*学生姓名*/ int age; /*年龄*/ char sex10; /*性别*/ float cyy; /*C语言成绩*/ float computer; /*计算机成绩*/ float english; /*英语成绩*/ float pj; /*平均成绩*/STU;STU temp;void sort(STU students,int n); /排序void save(STU students,int n);/导出int Locate(STU students,in

4、t n);/查询/*-显示菜单-*/char displaymenu() char k; system("cls"); printf(" 学生成绩管理 n"); printf("-应用菜单-n"); printf(" 1 输入学生成绩nn"); printf(" 2 输出学生成绩nn"); printf(" 3 查询学生成绩nn"); printf(" 4 修改学生成绩nn"); printf(" 5 查看成绩排序nn"); print

5、f(" 6 查看成绩统计nn"); printf(" 7 保存数据nn"); printf(" 8 读取数据nn"); printf(" 9 退出系统nn"); printf(" 请选择你想进行的操作:"); k=getchar(); return k;/*定义输出函数*/void printheader() /*格式化输出表头*/ printf("nn*学生成绩管理系统*nnn"); printf("| 学号| 姓名 | 年龄| 性别| C语言成绩|计算机成绩|

6、英语成绩| 平均成绩| n"); void printdata(STU pp) /*格式化输出表中数据*/ STU* p; p=&pp; printf("| %-5s| %-5s | %-4d| %-4s| %-6.0f| %-6.0f| %-5.0f| %-6.0f|n",p->num,p->name,p->age,p->sex,p->cyy,p->computer,p->english,p->pj);/*添加学生信息*/int add(STU students ,int *n) int i=0; syst

7、em("cls"); printf(" n"); printf(" 请输入学生信息 n"); printf(" 退出请在学生号处输入:0 n"); printf("请输入学生学号:n "); scanf("%s",studentsi.num); while(strcmp(studentsi.num,"0") )/当输入的学号为时结束输入 printf("请输入学生姓名:n "); scanf("%s",student

8、); printf("*nnn"); printf("请输入学生年龄:n "); scanf("%d",&studentsi.age); printf("*nnn"); printf("请输入学生性别:n"); scanf("%s",studentsi.sex); printf("*nnn"); printf("请输入C语言成绩:n "); scanf("%f",&studentsi.c

9、yy); printf("*nnn"); printf("请输入计算机成绩:n "); scanf("%f",&puter); printf("*nnn"); printf("请输入英语成绩:n "); scanf("%f",&studentsi.english); printf("*nnn"); studentsi.pj=(studentsi.cyy+puter+studentsi.en

10、glish)/3; printf("学生平均成绩: %-8.0fn",studentsi.pj); i+; printf("*nnn"); printf("请输入学生学号:n "); scanf("%s",studentsi.num); *n=i; save(students ,i); return i; /*查询学生信息函数*/int Locate(STU students,int n) int k,m=-1; char num10,name20; int i=0; system("cls")

11、; printf(" 退出请输入:0 n"); printf("请选择以什么方式查询:1).按学生学号查询 2).按学生姓名查询 n"); scanf("%d",&k); if(k=1) printf("请输入你要查询的学生学号:n"); scanf("%s",num); while(i<n) if(strcmp(studentsi.num,num)=0) /*若找到学号*/ printf(">>学生学号:%sn*学生姓名:%sn*学生年龄:%dn*学生性别:

12、%sn>C语言成绩:%-8.0fn>计算机成绩:%-8.0fn>>英语成绩:%-8.0fn>>平均成绩:%-8.0fn",studentsi.num,,studentsi.age,studentsi.sex,studentsi.cyy,puter,studentsi.english,studentsi.pj); m=i; getchar(); break; i+; if(i>=n) printf("没有所找学生信息n"); getchar(); else if(k=2)

13、 printf("请输入你要查询的学生姓名:n"); scanf("%s",name); while(i<n) if(strcmp(,name)=0) /*若找到姓名*/ printf("学生学号:%sn学生姓名:%sn学生年龄:%dn学生性别:%sn学生C语言成绩:%-8.0fn计算机成绩:%-8.0fn英语成绩:%-8.0fn平均成绩:%-8.0fn",studentsi.num,,studentsi.age,studentsi.sex,studentsi.cyy,st

14、puter,studentsi.english,studentsi.pj); m=i; getchar(); break; i+; if(i>=n) printf("没有所找学生信息n"); return m;/*返回一个根m便于修改学生信息*/ getchar();/*显示函数*/ void input(STU students,int n) int i; system("cls"); /清屏 if(n=0) /*表示没有学生信息记录*/ printf("n没有学生记录!n"); printf("

15、;nn"); printheader(); /*输出表格头部*/ i=0; while(i<n) /*逐条输出数组中存储的学生信息*/ printdata(studentsi); i+; getchar(); /*修改子程序*/void Modify(STU students,int n) int i; if(n<=0) system("cls"); printf(" n退出请输入:0 n"); printf("n-not found!-n"); getchar(); return ; system("

16、cls"); printf("修改学生信息"); input(students,n); i=Locate(students,n); /*查询到该数组元素,并返回下标值*/ if(i!=-1) /*若i!=,表明已经找到该数组元素*/ printf("请输入新的学生信息: n"); printf(" 学号: "); scanf("%s",studentsi.num); printf(" 姓名: "); scanf("%s",); print

17、f(" 年龄: "); scanf("%d",&studentsi.age); printf(" 性别: "); scanf("%s",studentsi.sex); printf(" C语言: "); scanf("%f",&studentsi.cyy); printf(" 英语: "); scanf("%f",&studentsi.english); printf(" 计算机: "); s

18、canf("%f",&puter); studentsi.pj=(studentsi.cyy+studentsi.english+puter)/3; printf("平均成绩: %-9.0fn",studentsi.pj); save(students ,n); printf("n-修改成功!-n"); else printf("not found!n"); getchar();/*学生成绩排序子程序*/ void sort(STU students,in

19、t n) int i,j,a,b,c,d,e,f,k; float p; printf(" n退出请输入:0 n"); printf("成绩排序方式选择: 1.按C语言 2.按英语 3.按平均 n "); scanf("%d",&k); if(k=1) /*用选择法对C语言排序*/ for(i=0; i<n; i+) for(j=0;j<n-1;j+) if(studentsi.english<studentsj+1.english) temp=studentsi; studentsi=studentsj+1

20、; studentsj+1=temp; else if(k=2)/*英语用冒泡法*/ for(a=0; a<n-1; a+) c=a; for(b=a+1; b<n; b+) if(studentsb.cyy>studentsc.cyy) c=b; if (c!=a) temp=studentsa; studentsa=studentsc; studentsc=temp; if(k=3) /*平均成绩用插入法*/ for(d=1;d<n;d+) p=studentsd.pj; for(e=0;e<d;e+) if(studentse.pj<p) break;

21、 if(e=d) continue; for(f=d;f>e;f-) studentsf=studentsf-1; studentse=temp; input(students,n); /*显示排序后的所有记录*/ save(students ,n); printf("n 排序完成!n"); /*统计学生分数在各等级的人数子程序*/void Tongji(STU students,int n) int count6085=0,count85=0,count60=0; int i=0; system("cls"); printf(" n退出

22、请输入:0 n"); input(students,n);i=0;while(i<n) if(studentsi.pj>85) count85+;i=i+1;continue; /*平均成绩=>85*/ if(studentsi.pj>=60&&studentsi.pj<=85) count6085+;i=i+1;continue; /*60<平均成绩<85*/ if(studentsi.pj<60) count60+;i=i+1;continue; /*平均成绩<60*/printf("n*统计结果*n

23、n");printf("平均成绩高于分的人数:%d n",count85);printf(" n");printf("平均成绩在分和分之间的人数:%d n",count6085);printf(" n");printf("平均成绩低于分的人数:%d n",count60);printf(" n");printf("nn*统计结束*");getchar();/*导出或保存数据*/void save(STU students,int n) FILE*

24、 fp; int i=0; fp=fopen("students","wb+");/*以读写方式打开创建一个二进制文件*/ if(fp=NULL) /*打开文件失败*/ printf("n*打开文件错误!*n"); return ; for(i=0;i<n;i+) if(fwrite(&studentsi,sizeof(STU),1,fp)=1)/*每次写一条记录或一个结构数组元素至文件*/ continue; else break; if(i>0) getchar(); printf("nn*共导出%d

25、个学生信息*n",i); getchar(); else system("cls"); printf("*没有信息导出*n"); getchar(); fclose(fp); /*关闭此文件*/*导入数据*/void Read(STU students,int * n) FILE* fp; int i=0; fp=fopen("students","rb");/*以只读方式打开一个已有的二进制文件*/ if(fp=NULL) /*打开文件失败*/ printf("n*打开文件错误!*n"

26、;); exit(0); for(i=0;i<N;i+) if(fread(&studentsi,sizeof(STU),1,fp)=1)/*每次读一条记录或一个结构数组元素至文件*/ continue; else break; *n=i; if(i>0) printf("nn*共导入:%d 个学生信息*n",i); getchar(); else system("cls"); printf("*没有信息导入!*n"); getchar(); getchar(); fclose(fp); /*关闭此文件*/*主函数

27、*/void main() STU studentsN; int n; char s13,s23="1" int i,k; printf("nn"); printf("*n"); printf(" < 欢迎使用本软件> nn"); printf(" <版本: 修改版> nnn"); printf(" <姓名>:邢曾智 <班级>: 09511002 <学号>:0951100201n"); printf(" n

28、"); printf("*n"); printf("nn"); for(i=0;i<3;i+) printf("n请输入密码:"); gets(s1); if(strcmp(s1,s2)=0) break; else printf("n>密码错误,请重新输入"); if(i>2) printf("n您已连续次输错,系统将退出!n"); exit(0); else while(1) k=displaymenu(); switch(k) case '1'

29、: add(students,&n); break; case '2' : Read(students,&n);input(students,n) ;break; case '3' : Read(students,&n);Locate(students,n);break; case '4' : Read(students,&n);Modify(students,n);break; case '5' : Read(students,&n);sort(students,n);break; case '6' : Read(students,&n);Tongji(students,n); break; case '7' : save(students,n) ;break; case '8' : Read(student

温馨提示

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

评论

0/150

提交评论