毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

C语言课程设计之学生成绩简单管理程序

更新时间:2007-10-22:  来源:毕业论文
C语言课程设计之学生成绩简单管理程序|c语言程序代码编程小程序设计|c语言课程设计报告课程案例系统菜单的主要功能

1)输入若干条记录

2)显示所有记录

3)按学号排序

4)插入一条记录

5)按姓名查找,删除一条记录

6)查找并显示一条记录

7)输出统计信息 (新增)

8)从正文中添加数据到结构体数组中

9)将所有数据写入文件中

    0)退出程序

2.   题目分析

该题主要考察学生对结构体,指针,文件的操作,以及C语言算法的掌握,所以完成此道题目要求较强的设计能力,尤其是要有一种大局观的意识。如何调程序也非常重要,通过这个程序可以学习到以前调试短程序没有的的经验。

菜单中的每一个选项都对应一个子程序,子程序的算法几乎囊获了所有C语言学过的技巧,下面就各个子程序中的功能进行说明:

功能14的算法相似,输入一条记录到结构体中去,其中有一部很关键,就是通过gets将所有的多余的字符,回车读去,否则就会出错。

功能2是显示所有的记录,通过循环输出,格式也比较重要。

功能3为按学号排序,因为学号定义成了字符数组的形式,因此在运用冒泡法进行排序的时候,要用到strcmp,strcpy等函数。

功能5为按姓名删除记录,先输入姓名,再一一比较,如果没有则返回失败信息,如果找到就将此记录都向前移一位,返回n-1

功能6的算法在5中就已经体现了,输入姓名,一一比较。

功能7为新增的功能,因为考虑到原来给出的函数中竟然没有对学生成绩的统计功能,因此新增此功能,可以得出所有的记录个数,最高、最低、平均分,并输出相关的学生信息等。

功能89是对文件的操作,提前准备好数据。

3.   感受

学了将近一个学期的C语言了,说实话,挺疲惫的,特别是最后的课设,调得好烦。但现在想想收获也不小,以前高中学VB的时候,一直觉得计算机语言挺简单的,现在看来当时根本没有接触到计算机语言的精髓。

看到了自己做出的这个小程序,挺自豪的,以前一直以为做出一个软件一样的程序是遥不可及的事情。我选择的是第二个程序,因为自我觉得它涉及面更广,把以前学过的算法几乎都过了一遍。以后在碰到像等级考试这样的事情我就再也不怕了。

谢藏洌老师的热情指导。

恭维的话就不多说了,感受大概就这么多吧。

4.   程序正文部分

#include<stdio.h>                   /*引用库函数*/

#include<stdlib.h>

#include<ctype.h>

#include<string.h>

 

typedef struct                /*定义结构体数组*/

{

                    char num[10];               /*学号*/

                    char name[20];              /*姓名*/

                    int score;             /*成绩*/

}Student;

Student stu[80];             /*结构体数组变量*/

 

int menu_select()           /*菜单函数*/

{

                    char c;

                    do{

                             system("cls");              /*运行前清屏*/

                             printf("\t\t****Students' Grade Management System****\n");            /*菜单选择*/

                             printf("\t\t    | 1. Input Records             |\n");

                             printf("\t\t    | 2. Display All Records                |\n");

                             printf("\t\t    | 3. Sort                                      |\n");

                             printf("\t\t    | 4. Insert a Record                |\n");

                             printf("\t\t    | 5. Delete a Record            |\n");

                             printf("\t\t    | 6. Query                     |\n");

                             printf("\t\t    | 7. Statistic                 |\n");

                             printf("\t\t    | 8. Add Records from a Text File|\n");

                             printf("\t\t    | 9. Write to a Text file          |\n");

                             printf("\t\t    | 0. Quit                                     |\n");

                             printf("\t\t*****************************************\n");

                             printf("\t\t\tGive your Choice(0-9):");

                             c=getchar();                  /*读入选择*/

                    }while(c<'0'||c>'9');

                    return(c-'0');                  /*返回选择*/

}

 

int Input(Student stud[],int n)                  /*输入若干条记录*/

{int i=0;

 char sign,x[10];            /*x[10]为清除多余的数据所用*/

 while(sign!='n'&&sign!='N')          /*判断*/

 {

                     printf("\t\t\tstudent's num:");                 /*交互输入*/

                     scanf("\t\t\t%s",stud[n+i].num);

                     printf("\t\t\tstudent's name:");

                     scanf("\t\t\t%s",stud[n+i].name);

                     printf("\t\t\tstudent's score:");

                     scanf("\t\t\t%d",&stud[n+i].score);

                     gets(x);              /*清除多余的输入*/

                     printf("\t\t\tany more records?(Y/N)");

                     scanf("\t\t\t%c",&sign);                /*输入判断*/

                     i++;

 }

 return(n+i);

}

 

void Display(Student stud[],int n)            /*显示所有记录*/

{

 int i;

 printf("\t\t\t-----------------------------------\n");          /*格式头*/

 printf("\t\t\tnumber          name          score\n");

 printf("\t\t\t-----------------------------------\n");

 for(i=1;i<n+1;i++)                /*循环输入*/

 {

                    printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score);

                    if(i>1&&i%10==0)               /*每十个暂停*/

                             {printf("\t\t\t-----------------------------------\n");                  /*格式*/

                              printf("\t\t\t");

                              system("pause");

                              printf("\t\t\t-----------------------------------\n");

                             }

 }

 printf("\t\t\t");

 system("pause");

}

 

void Sort_by_num(Student stud[],int n)            /*按学号排序*/

{

                    int i,j,*p,*q,s;

                    char t[10];

                    for(i=0;i<n-1;i++)                  /*冒泡法排序*/

                             for(j=0;j<n-1-i;j++)

                                       if(strcmp(stud[j].num,stud[j+1].num)>0)

                                       {strcpy(t,stud[j+1].num);

                                        strcpy(stud[j+1].num,stud[j].num);

                                        strcpy(stud[j].num,t);

                                        strcpy(t,stud[j+1].name);

                                        strcpy(stud[j+1].name,stud[j].name);

                                        strcpy(stud[j].name,t);

                                        p=&stud[j+1].score;

                                        q=&stud[j].score;

                                        s=*p;

                                        *p=*q;

                                        *q=s;

                                       }

}

 

int Insert_a_record(Student stud[],int n)            /*插入一条记录*/

{char x[10];          /*清除多余输入所用*/

                    printf("\t\t\tstudent's num:");                   /*交互式输入*/

                    scanf("\t\t\t%s",stud[n].num);

                    printf("\t\t\tstudent's name:");

                    scanf("\t\t\t%s",stud[n].name);

                    printf("\t\t\tstudent's score:");

                    scanf("\t\t\t%d",&stud[n].score);

                    gets(x);

                    n++;

                    Sort_by_num(stud,n);           /*调用排序函数*/

                    printf("\t\t\tInsert Successed!\n");           /*返回成功信息*/

                    return(n);

}

 

int Delete_a_record(Student stud[],int n)           /*按姓名查找,删除一条记录*/

{

                    char s[20];

                    int i=0,j;

                    printf("\t\t\ttell me his(her) name:");                 /*交互式问寻*/

                    scanf("%s",s);

                    while(strcmp(stud[i].name,s)!=0&&i<n) i++;           /*查找判断*/

                    if(i==n)

                             {

                              printf("\t\t\tnot find!\n");              /*返回失败信息*/

                              return(n);

                             }

                    for(j=i;j<n-1;j++)                   /*删除操作*/

                             {

                              strcpy(stud[j].num,stud[j+1].num);

                              strcpy(stud[j].name,stud[j+1].name);

                              stud[j].score=stud[j+1].score;

                             }

                    printf("\t\t\tDelete Successed!\n");          /*返回成功信息*/

                    return(n-1);

}

 

void Query_a_record(Student stud[],int n)                 /*查找并显示一个记录*/

{

                    char s[20];

                    int i=0;

                    printf("\t\t\tinput his(her) name:");                   /*交互式输入*/

                    scanf("\t\t\t%s",s);

                    while(strcmp(stud[i].name,s)!=0&&i<n) i++;           /*查找判断*/

                    if(i==n)

                             {

                              printf("\t\t\tnot find!\n");              /*输入失败信息*/

                              return;

                             }

                    printf("\t\t\this(her) number:%s\n",stud[i].num);                /*输出该学生信息*/

                    printf("\t\t\this(her) score:%d\n",stud[i].score);

}

[1] [2] 下一页

C语言课程设计之学生成绩简单管理程序下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©lwfree.cn 六维论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。