c语言课程设计报告

时间:2024.3.31

内蒙古科技大学

本科生课程设计说明书

题    目:C语言课程设计

      ——  学生成绩管理系统

学生姓名:

学    号:

专    业:计算机科学与技术

班    级:计算机四班

指导教师:


内蒙古科技大学课程设计任务书


目    录

内蒙古科技大学课程设计任务书······························································· 2

第一章  需求分析··················································································· 4

1.1     引言························································································ 4

1.2     任务概述················································································· 4

1.3     数据描述················································································· 4

1.4     功能需求················································································· 4

1.5     性能需求················································································· 4

1.6     运行需求················································································· 5

1.7     任务计划················································································· 5

第二章      概要设计················································································· 5

2.1     总体设计················································································· 5

2.2     数据类型设计(或数据结构设计)·············································· 7

2.3     接口设计  //函数声明······························································ 7

2.4     运行界面设计··········································································· 7

第三章      详细设计················································································· 9

3.1     输入模块设计··········································································· 9

3.2     输出模块设计··········································································· 9

3.3      查找及修改模块设计································································· 9

3.4     排序模块设计·········································································· 11

3.5     保存及读取模块设计································································ 12

第四章      测试分析················································································ 13

4.1     测试程序执行情况··································································· 13

4.2     出现的问题和解决的方法························································· 15

第五章      用户手册(可选)··································································· 16

5.1     使用说明················································································ 16

5.2     运行说明················································································ 16

第六章      课程设计总结········································································· 17

附录:程序代码···················································································· 17

参考文献······························································································ 17

致谢···································································································· 27


第一章  需求分析

1.1   引言

学生成绩管理系统

1.2   任务概述

1.建立学生信息,信息至少包含学生姓名,学号及五门功课的成绩;

2.能够提供录入、浏览、查找、修改、删除及保存信息的功能;

3.能够提供按不同方式查询的功能,如按姓名或学号等查询;

1.3   数据描述

struct student 

{

       long id;

       char name[MAX_NAME];

       float Chinese,math,English,chemistry,physical;

       float ave;

       float tot;

}stu[100]={0};

1.4   功能需求

1、    输入功能:一次可以完成自定义学生人数的学生信息记录的输入。

2、    删除功能:对指定学生的信息进行删除。

3、    修改功能:对指定学生的信息进行修改。

4、    查询功能:选择某种方式并输入该信息查询符合条件的学生信息。

5、    排序功能:以英语课程的分数为依据对学生信息进行排序。

6、    显示功能:将以上功能操作后的学生信息显示出来。

7、  退出主菜单。

1.5   性能需求

1、    输入功能:一次可以完成自定义学生人数的学生信息记录的输入。

2、    删除功能:对指定学生的信息进行删除。

3、    修改功能:对指定学生的信息进行修改。

4、    查询功能:选择某种方式并输入该信息查询符合条件的学生信息。

5、    排序功能:以英语课程的分数为依据对学生信息进行排序。

6、    显示功能:将以上功能操作后的学生信息显示出来。

7、  退出主菜单。

1.6    运行需求

1、    输入完成后,编译时要无误;

2、    链接势无误;

3、    能正确运行且完成要求功能。

1.7   任务计划

熟练掌握学生成绩管理系统的各项功能,并且要在规定的时间内完成代码的输入,还必须能正确的运行出来。

第二章   概要设计

2.1   总体设计

总体结构我们采取模块化方式进行程序设计,要求程序的功能设计、数据结构设计及整体结构设计合理。也可根据自己对题目的理解增加新的功能模块。
    系统以菜单界面方式(至少采用文本菜单界面,如能采用图形菜单界面更好)工作,运行界面友好,演示程序以用户和计算机的对话方式进行

椭圆: 4、插入学生信息

2.2   数据类型设计(或数据结构设计)

struct student 

{

       long id;

       char name[MAX_NAME];

       float Chinese,math,English,chemistry,physical;

       float ave;

       float tot;

}stu[100]={0};

2.3   接口设计  

表2.1:函数列表

2.4   运行界面设计

while (select=Menu()) {

               switch(select)

               {

                     case 1:

                            ReadScore();

                            break;

                     case 2:

                            ave();

                            break;

                     case 3:

                            find();

                            break;

                     case 4:

                            ReadScore();

                            break;

                     case 5:

                            delete_();

                            break;

                     case 6:

                            writetofile();

                            break;

                     default:

                            printf("%s\n", "输入错误!");

               }


第三章   详细设计

3.1   输入模块设计

static short i=0;

       char temp='Y';

       for(;i<100&&temp=='Y'||temp=='y';i++)

       {

              printf("请输入学号:");

              scanf("%ld",&stu[i].id);

              printf("请输入姓名:");

              scanf("%s",stu[i].name);

              printf("请输入语文成绩:");

              scanf("%f",&stu[i].Chinese);

              printf("请输入数学成绩:");

              scanf("%f",&stu[i].math);

              printf("请输入英语成绩:");

              scanf("%f",&stu[i].English);

              printf("请输入物理成绩:");

              scanf("%f",&stu[i].physical);

              printf("请输入化学成绩:");

              scanf("%f",&stu[i].chemistry);

              printf("是否继续输入(Y/N): ");

              scanf(" %c",&temp);

              stu[i].tot=(stu[i].Chinese+stu[i].math+stu[i].English+stu[i].chemistry+stu[i].physical);

              stu[i].ave=stu[i].tot/5;

              people++;

3.2   输出模块设计

printf("%ld\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",stu[i].id,stu[i].name,stu[i].Chinese,stu[i].math,stu[i].English,stu[i].chemistry,stu[i].physical,stu[i].tot,stu[i].ave);

3.3   查找及修改模块设计

char temp;

       char k[MAX_NAME];

       short i;

       long n;

       short m;

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

       printf("*\t\t\t1.按学号查找\t\t\t\t*\n");

       printf("*\t\t\t2.按姓名查找\t\t\t\t*\n");

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

       printf("Please enter your choice:");

       scanf("%d",&m);

       if(m==1)

       {

              printf("请输入学号:");

              scanf("%ld",&n);

              for(i=0;stu[i].id!=0;i++)

              {

                     if(n==stu[i].id)

                            printf("%ld\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",stu[i].id,stu[i].name,stu[i].Chinese,stu[i].math,stu[i].English,stu[i].chemistry,stu[i].physical,stu[i].tot,stu[i].ave);

              }

       }

       else if(m==2)

       {

              printf("请输入姓名:");

              scanf("%s",k);

              for(i=0;stu[i].id!=0;i++)

              {

                     if((strcmp(k,stu[i].name))==0)

                            printf("%ld\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",stu[i].id,stu[i].name,stu[i].Chinese,stu[i].math,stu[i].English,stu[i].chemistry,stu[i].physical,stu[i].tot,stu[i].ave);

              }

       }

       else

              printf("输入的选项有误!");

       printf("是否修改(Y/N):");

       fflush(stdin);

       scanf("%c",&temp);

       if(temp=='Y'||temp=='y')

       {

              if(m==1)

              {

                     printf("请输入语文成绩:");

                     scanf("%f",&stu[i].Chinese);

                     printf("请输入数学成绩:");

                     scanf("%f",&stu[i].math);

                     printf("请输入英语成绩:");

                     scanf("%f",&stu[i].English);

                     printf("请输入物理成绩:");

                     scanf("%f",&stu[i].physical);

                     printf("请输入化学成绩:");

                     scanf("%f",&stu[i].chemistry);

                     stu[i].tot=(stu[i].Chinese+stu[i].math+stu[i].English+stu[i].chemistry+stu[i].physical);

                     stu[i].ave=stu[i].tot/5;

              }

              if(m==2)

              {

                     printf("请输入学号:");

                     scanf("%ld",&n);

                     for(i=0;stu[i].id!=n;i++);

                     printf("请输入语文成绩:");

                     scanf("%f",&stu[i].Chinese);

                     printf("请输入数学成绩:");

                     scanf("%f",&stu[i].math);

                     printf("请输入英语成绩:");

                     scanf("%f",&stu[i].English);

                     printf("请输入物理成绩:");

                     scanf("%f",&stu[i].physical);

                     printf("请输入化学成绩:");

                     scanf("%f",&stu[i].chemistry);

                     stu[i].tot=(stu[i].Chinese+stu[i].math+stu[i].English+stu[i].chemistry+stu[i].physical);

                     stu[i].ave=stu[i].tot/5;

              }

       }

3.4   排序模块设计

       short i=0,j=1;

       for(i=0;i<j;i++)

       {

              for(j=i+1;j<people;j++)

              {

                     if(stu[i].ave>stu[j].ave)

                     {

                            stu[people]=stu[i];

                            stu[i]=stu[j];

                            stu[j]=stu[people];

                     }

              }

              printf("%ld\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",stu[i].id,stu[i].name,stu[i].Chinese,stu[i].math,stu[i].English,stu[i].chemistry,stu[i].physical,stu[i].tot,stu[i].ave);

       }

3.5   保存及读取模块设计

FILE *fp;

       if((fp=fopen("D:\\student.txt","w"))==NULL)

       {

              printf("文件打开失败!\n");

              exit(0);

       }

       fwrite(stu,sizeof(struct student),people,fp);

       fclose(fp);


第四章   测试分析

4.1   测试程序执行情况

主菜单:

输入信息:

显示学生信息:

按学号查找:

按姓名查找:

修改学生信息:

4.2   出现的问题和解决的方法

在编代码时,编完一个模块,便要对其进行运行,检查是否有错,根据下方提示对错误的地方进行修改,直到运行结果正确。


第五章   用户手册(可选)

5.1   使用说明

(1)用户进入系统后,就会看到学生管理系统的主菜单页面。系统总共有七个模块,分别由0到6表示,在主菜单页面只能输入数字0到6,输入其他字符无效,如果用户输入无效字符,系统仍停留在主菜单页面。 

(2)进入到主菜单页面后,用户可以根据自己的需求选择不同的选项,选择后系统就会进入子系统页面,然后用户按系统的提示操作就行了。

5.2   运行说明

1、  编写代码。

2、  对代码进行编译。

3、  编译之后进行链接。

4、  最后运行结果。


第六章   课程设计总结

在我上机调试程序的过程中,我遇到了很多的问题,我总结出在整个过程中,调试时非常重要的。调试程序需要较大的耐心。可能调试程序的时间比自己编写整个程序的时间还要长,下的工夫还要深,但这是一个程序员必须了解,也必须接受的事实。有好几次,几个错误让我很是头疼啊,很想删了,重新来过,可是最后发现,还是得有耐心去调试程序。课程设计不仅让我们巩固了所学的知识,还使得我们学习到了更多平时所忽略的,最重要的是,它磨砺了我们,让我们在大学的下一个阶段能更好的成长。


附录:程序代码

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#define MAXN 35

#define MAX_NAME 256

struct student 

{

       long id;

       char name[MAX_NAME];

       float Chinese,math,English,chemistry,physical;

       float ave;

       float tot;

}stu[100]={0};

short people=0;

short Menu()

{

       short select;

       printf("                        学生成绩管理系统                           \n");

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

       printf("*                        1.输入信息                               *\n");

       printf("*                        2.按平均分排序                           *\n");

       printf("*                        3.关键字查找,修改                        *\n");

       printf("*                        4.插入                                   *\n");

       printf("*                        5.按学号删除                             *\n");

       printf("*                        6.保存到磁盘                             *\n");

       printf("*                        0.退出                                   *\n");

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

       printf("Please enter your choice:");

       scanf("%d",&select);

       return select;

}

void ReadScore()

{

       static short i=0;

       char temp='Y';

       for(;i<100&&temp=='Y'||temp=='y';i++)

       {

              printf("请输入学号:");

              scanf("%ld",&stu[i].id);

              printf("请输入姓名:");

              scanf("%s",stu[i].name);

              printf("请输入语文成绩:");

              scanf("%f",&stu[i].Chinese);

              printf("请输入数学成绩:");

              scanf("%f",&stu[i].math);

              printf("请输入英语成绩:");

              scanf("%f",&stu[i].English);

              printf("请输入物理成绩:");

              scanf("%f",&stu[i].physical);

              printf("请输入化学成绩:");

              scanf("%f",&stu[i].chemistry);

              printf("是否继续输入(Y/N): ");

              scanf(" %c",&temp);

              stu[i].tot=(stu[i].Chinese+stu[i].math+stu[i].English+stu[i].chemistry+stu[i].physical);

              stu[i].ave=stu[i].tot/5;

              people++;

       }

}

void ave()

{

       short i=0,j=1;

       for(i=0;i<j;i++)

       {

              for(j=i+1;j<people;j++)

              {

                     if(stu[i].ave>stu[j].ave)

                     {

                            stu[people]=stu[i];

                            stu[i]=stu[j];

                            stu[j]=stu[people];

                     }

              }

              printf("%ld\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",stu[i].id,stu[i].name,stu[i].Chinese,stu[i].math,stu[i].English,stu[i].chemistry,stu[i].physical,stu[i].tot,stu[i].ave);

       }

}

void find()

{

       char temp;

       char k[MAX_NAME];

       short i;

       long n;

       short m;

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

       printf("*\t\t\t1.按学号查找\t\t\t\t*\n");

       printf("*\t\t\t2.按姓名查找\t\t\t\t*\n");

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

       printf("Please enter your choice:");

       scanf("%d",&m);

       if(m==1)

       {

              printf("请输入学号:");

              scanf("%ld",&n);

              for(i=0;stu[i].id!=0;i++)

              {

                     if(n==stu[i].id)

                            printf("%ld\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",stu[i].id,stu[i].name,stu[i].Chinese,stu[i].math,stu[i].English,stu[i].chemistry,stu[i].physical,stu[i].tot,stu[i].ave);

              }

       }

       else if(m==2)

       {

              printf("请输入姓名:");

              scanf("%s",k);

              for(i=0;stu[i].id!=0;i++)

              {

                     if((strcmp(k,stu[i].name))==0)

                            printf("%ld\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",stu[i].id,stu[i].name,stu[i].Chinese,stu[i].math,stu[i].English,stu[i].chemistry,stu[i].physical,stu[i].tot,stu[i].ave);

              }

       }

       else

              printf("输入的选项有误!");

       printf("是否修改(Y/N):");

       fflush(stdin);

       scanf("%c",&temp);

       if(temp=='Y'||temp=='y')

       {

              if(m==1)

              {

                     printf("请输入语文成绩:");

                     scanf("%f",&stu[i].Chinese);

                     printf("请输入数学成绩:");

                     scanf("%f",&stu[i].math);

                     printf("请输入英语成绩:");

                     scanf("%f",&stu[i].English);

                     printf("请输入物理成绩:");

                     scanf("%f",&stu[i].physical);

                     printf("请输入化学成绩:");

                     scanf("%f",&stu[i].chemistry);

                     stu[i].tot=(stu[i].Chinese+stu[i].math+stu[i].English+stu[i].chemistry+stu[i].physical);

                     stu[i].ave=stu[i].tot/5;

              }

              if(m==2)

              {

                     printf("请输入学号:");

                     scanf("%ld",&n);

                     for(i=0;stu[i].id!=n;i++);

                     printf("请输入语文成绩:");

                     scanf("%f",&stu[i].Chinese);

                     printf("请输入数学成绩:");

                     scanf("%f",&stu[i].math);

                     printf("请输入英语成绩:");

                     scanf("%f",&stu[i].English);

                     printf("请输入物理成绩:");

                     scanf("%f",&stu[i].physical);

                     printf("请输入化学成绩:");

                     scanf("%f",&stu[i].chemistry);

                     stu[i].tot=(stu[i].Chinese+stu[i].math+stu[i].English+stu[i].chemistry+stu[i].physical);

                     stu[i].ave=stu[i].tot/5;

              }

       }

}

void delete_()

{

       short i,j,k;

       long id;

       printf("输入要删除的学号:");

       scanf("%ld",&id);

       for(i=0;stu[i].id!=0;i++)

       {

              if(id==stu[i].id)

              {

                     for(j=i+1,k=i;stu[k].id!=0;j++,k++)

                     {

                            stu[k]=stu[j];

                     }

                     people--;

              }

       }

}

void writetofile()

{

       FILE *fp;

       if((fp=fopen("D:\\student.txt","w"))==NULL)

       {

              printf("文件打开失败!\n");

              exit(0);

       }

       fwrite(stu,sizeof(struct student),people,fp);

       fclose(fp);

}

int main()

{

       short select;

         while (select=Menu()) {

               switch(select)

               {

                     case 1:

                            ReadScore();

                            break;

                     case 2:

                            ave();

                            break;

                     case 3:

                            find();

                            break;

                     case 4:

                            ReadScore();

                            break;

                     case 5:

                            delete_();

                            break;

                     case 6:

                            writetofile();

                            break;

                     default:

                            printf("%s\n", "输入错误!");

               }

               puts("按任意键继续");

               getchar();

               getchar();

               system("CLS");

       }

       return 0;

 }


致谢

姓名:樊喆

学号:1276807431

班级:12级计算机四班

学院:国际学院

更多相关推荐:
《C语言程序设计》课程设计报告(小组)

东莞理工学院《C语言程序设计》课程设计题目:图书信息管理系统院系:电子工程学院专业:电子信息工程年级:20##班别:2班指导教师:##组长:##同组成员:##目录一、目的....................…

c语言课程设计报告

C语言程序设计课程设计学生姓名学号系院专业设计论文题目学生选课系统管理完成日期20xx年6月指导教师目录一实验目的二实验内容三总体设计四详细设计五运行结果六课程设计体会一实验目的1通过课程设计加深对结构化程序设...

C语言课程设计报告

河南理工大学计算机科学与技术学院课程设计报告20XX20XX学年第一学期课程名称C语言课程设计设计题目《小学算术运算测试》学生姓名学号专业班级计算机07-2班指导教师20XX年9月12日目录1.设计任务书21.…

C语言课程设计报告范例

C语言课程设计报告设计题目专业班级学号姓名任课老师时间目录一课程设计题目及所涉及知识点二课程设计思路及设计流程图三课程设计中遇到的难点及解决办法四小结五附录原程序2一课程设计题目及所涉及知识点一课程设计题目1基...

厦门理工学院11级C语言C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期题目专业班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求1二方案实现与调试221掷骰子游戏222射击游戏323汽车...

C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期专业计算机科学与技术班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求3二方案实现与调试321掷骰子游戏322汽车加...

c语言程序贪吃蛇课程设计报告

山东工商学院信电学院自动111班第一组贪吃蛇课程设计报告高级语言程序设计课程设计报告ExperimentDesigningreporter课程名称高级语言程序设计英文名称CProgramExperimentDe...

C语言课程设计报告 学生选课系统加源代码

兰州理工大学计算机与通信学院20XX年春季学期C程序设计课程设计题目:学生选课系统专业班级:通信工程1班姓名:学号:指导教师:XXX成绩:摘要学生选课系统是一个教育单位不可缺少的重要系统组成部分,它对于学校的决…

c语言课程设计报告

青岛农业大学课程设计报告题目:使用菜单选择趣味程序姓名:学院:理学与信息科学学院专业:通信工程班级:2班学号:指导教师:年月日一设计目的进一步加深、巩固所学专业课程(《C语言程序设计》)的基本理论知识,理论联系…

C语言课程设计报告-图书管理系统

课程设计报告图书馆管理系统目录1题目与要求22系统总体设计要给出必要的文字说明及必要的图示321功能需求分析明确选题的功能需求322系统功能模块划分要给出系统功能模块图43详细设计431重要数据的数据结构设计即...

C语言课程设计报告_运动会分数统计系统

C语言课程设计报告_运动会分数统计系统一.需求分析1问题描述运动会分数统计系统参加运动会有n个系,系编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前…

C语言课程设计报告---学籍信息管理系统

中国地质大学本科生课程论文封面1课程设计评语注1无评阅人签名成绩无效2必须用钢笔或圆珠笔批阅用铅笔阅卷无效3如有平时成绩必须在上面评分表中标出并计算入总成绩2目录课程设计评语2目录31课程论文题目42程序设计思...

c语言程序设计课程设计报告(34篇)