当前位置:文档之家› 查找学生成绩与学号编程

查找学生成绩与学号编程

云南师范大学
实验报告
课程:《计算机技术基础》任课教师:陈娟实验指导教师:陈娟
姓名:李华福学号:114090395 专业:物电学院电子信息科学类日期:2012-5-31
成绩:
一.实验项目名称:《学生成绩查询》
二.实验项目的目的和任务:存入N个学生的成绩表(学号、姓名、成绩),输入学号或姓名,查找其成绩。

输入学生信息,制成学生成绩信息表,通过查找方法查询该学生成绩(比较输入的学生姓名或学号与原来的信息大小,判断是否符合),最后输出表及成绩。

三.实验内容:通过input函数录入学生成绩表,并通过output函数输出学生成绩表;xmchazhao函数和xhchazhao函数能分别以不同的方式查找成绩;最后顺利查找到学生成绩。

四.程序描述:考虑到结构体非常适合该题解答(后面总结结构体与与数组在该题中的优劣),首先定义结构体struct biao[],并分别定义了序号、姓名、学号、成绩信息(假设其为10个字符长)。

编写函数input(),该函数实现了从键盘输入数据,构成前面说到列表。

随之的是函数output(),实现把学生信息制表。

Xmchazhao()(姓名查找)函数能比较两字符串的大小,将其输出,xhchazhao()(学号查找)函数类似前一个函数。

最后是主函数,实现了调用input()、output()、xmchazhao()、xhchazhao ()函数,并利用switch( )函数选择查找方式。

五.运行截图:
(图一:录入数据并制表)
(图二:按1通过姓名查找成绩) (图三:按2通过学号查找成绩)
(图四:输入的不是1和2) (图五:姓名输入错误)
(图六:学号输入错误)
五.程序代码:
六.#include<stdio.h>
七.#include<string.h>
八.#define N 3 //N 位同学的信息
九.struct //定义结构体
十.{
十一. int num; //序号
十二. char xingming[11]; //姓名
十三. char xuehao[11]; //学号
十四. char chengji[11]; //成绩
十五. }biao[N];
十六. int input() //输入函数
十七. {
十八. int n=0;
十九. while(n<N)
二十. {
二十一. biao[n].num=n+1;
二十二. printf("\n 第%d 条信息:
\n",biao[n].num);
二十三.printf("请输入姓名:");
二十四.gets(biao[n].xingming);
二十五.if(biao[n].xingming[0]=='\0')
二十六.break;
二十七.printf("请输入学号:");
二十八.gets(biao[n].xuehao);
二十九.printf("请输入成绩:");
三十.gets(biao[n].chengji);
三十一.n++;
三十二.}
三十三.
三十四.return n;
三十五.}
三十六.void output() //输出函数
三十七.{
三十八. int i;
三十九.puts("\n序号\t姓名\t学号\t成绩");
四十.for(i=0;i<N;i++)
四十一.
printf("%d\t%s\t%s\t%s\n",biao[i].num,biao[i].xingming,biao[i] .xuehao,biao[i].chengji);
四十二.}
四十三.int xmchazhao() //按姓名查找
四十四.{
四十五. int i=0;
四十六. char xm[11];
四十七. printf("\n请输入姓名:");
四十八. scanf("%s",xm);
四十九. while(strcmp(xm,biao[i].xingming)!=0&&i<N) //比较两个字符串的大小
五十.i++;
五十一.
五十二.if(i>=N)
五十三.i=-1;
五十四.return i;
五十五.}
五十六.int xhchazhao() //按学号查找
五十七.{
五十八.int i=0;
五十九.char xh[11];
六十.printf("\n请输入学号:");
六十一.scanf("%s",xh);
六十二.while(strcmp(xh,biao[i].xuahao)!=0&&i<N) //比较大小
六十三.i++;
六十四.if(i>=N)
六十五.i=-1;
六十六.return i;
六十七.}
六十八.Void main()
六十九.{
七十.
七十一. int n,i;char ch;char A[11],B[11];
七十二. n=input(n);
七十三. output(n);
七十四. puts("\n1.通过姓名查找!");
七十五. puts("\n2.通过学号查找!");
七十六. printf("请选择:");
七十七. scanf("%d",&ch);
七十八.switch(ch)
七十九. {
八十. case 1:i=xmchazhao();
八十一. if(i>=0) puts(strcpy(A,biao[i].chengji));
//如果找到,把它复制到数组A中
八十二. else
八十三. printf("输入错误!");
八十四. break;
八十五. case 2:i=xhchazhao();
八十六. if(i>=0) puts(strcpy(B,biao[i].chengji));
//如果找到,把它复制到数组B中
八十七.
八十八. else
八十九. printf("输入错误!");
九十. break;
九十一. default: //当输入的
不是1和2时提示错误
九十二. printf("\n选择错误!\n");
九十三. }
九十四.}
九十五.实验总结:通过该实验认真学习了解了:结构体的定义与使用情况(体会到了结构体与数组的异同:数组要同类型的数据才能进行定义和使用,而结构体可以有不同数据类型,如序号是整,姓名、学号、成绩是字符型;可以把结构体看成是几个不同的一位数组加以定义和使用);循环结构的使用与意义;函数调用使得整个程序看起来清晰有序,容易理解与查找错误;主函数有几个函数组成(input、output、xmchazhao和xhchazhao),使得主函数更有针对性。

九十六.三天的努力成果,貌似不错。

不过也遇到不少麻烦:比如,puts(strcpy(B,biao[i].chengji))中把biao[i].chengji复制给B数组写反了,查找了半天;调用函数时形参与实参模糊,对数据的传递理解也是个问题。

相关主题