C语言课程设计报告书样板

湖北第二师范学院

《程序设计基础》课程设计报告书

             

    

   目: 飞机订票系统                   

   部:  计算机                             

   业:  系统维护和信息安全                             

   级:  08系统维护                             

   名:  李思                            

   号:   08D0401008                      

同组人员:  杨婷、余丽花                             

指导老师:  鲁静                            

设计时间:  20##67 ~201071  

 

1. 课程设计计划·· 3

2. 前言·· 3

3. 需求分析·· 4

4. 概要设计·· 5

5. 详细设计·· 6

6. 技术难点与分析·· 7

7. 心得体会·· 8

8. 致谢·· 9

9. 参考文献·· 9

 

第二篇:C语言课程设计报告书——张杉

西安郵電學院

高级语言课程设计报告书

系部名称

学生姓名

专业名称

班 级

学号 电信系 张 杉 电子信息工程 电子0701 05071032

指导教师 衡 霞

20xx年06月09日至

时间

20xx年06月20日

实验题目 学生成绩管理系统

一、实验目的:

(1)本课程设计为学生提供了一个既动手又动脑,自学,查资料,独立实

践的机会。将本学期课本上的理论知识和实际有机的结合起来,锻炼学生实际分析问题和解决问题的能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解。

(2)C语言的实践。掌握C语言函数的定义方法,函数的声明及函数的调用

过程。掌握结构体类型变量的定义和使用,综合应用C语言的知识,实现一个完整的系统,提高编程能力,体会软件程序的开发过程。

二、实验内容:

(1)运用结构体数组编辑一个简单的学生成绩管理系统,使之能够完成学

生成绩的创建、添加,查询、修改,删除、统计、排序等操作,并对文件进行保存和读取。

(2)执行编译操作,并根据提示调试此程序,排除所有的错误和警告。直

到编译成功为止。

(3)执行运行操作,逐一对每个模块进行调试。直到全部程序运行成功为

止。

(4)请老师检查,向老师演练此程序,并能回答老师提出的相关问题。

三、 需求分析:

(1)根据学生成绩管理的需要,建立一个“学生信息管理系统”, 系统具

有输入、查询、修改、删除、统计、排序等基本功能;以方便对成绩的各项管理操作。每一条记录包括一个学生的学号、姓名、性别,年龄,生日,成绩。系统的各个功能模块都用函数的形式来实现;可以将学生成绩信息保存在文件中,并从文件中读取出来。有一个清晰美观界面来调用各个功能。

本程序是由C语言的基本单位—函数来设计实现与其功能的多次使用函数调用以及函数的嵌套调用。本程序分为7个模块,分别为创建学生资料;添加学生的资料; 查询学生的成绩;修改学生的资料;删除学生的资料;统计学生的成绩;对学生的资料进行排序。本程序可以处理多个学生的成绩的输入、添加、修改、排序等问题。本程序的使用特别方便,每做完一个模块,下面都有提示信息。使用环境为Win-Tc。

(2)创建该学生成绩管理系统目的就是能够对学生基本信息进行创建、追

加、查询、修改、删除、统计、排序等功能,这样可以简化许多人工做起来很复杂的问题。譬如:“排序”,有了此程序只需将信息输入,计算机就可自动执行,省时、省力。另外,它还可以重复使用,方便、快捷。

(3)该学生基本信息管理系统是在WIN-TC中文简体环境下运行。

该系统要测试的数据如下:

1.输入模块:(输入5个学生的信息)

Number name sex age birthday score 1 a m 20 1988-01-01 60 2 b m 20 1988-02-02 70 3 c f 20 1988-03-03 80

2.追加模块:(再加1个信息)

4 d f 20 1988-04-04 90

3.查询模块:(查询GULI的基本信息)

1 (按学号即可查询)或 a(按姓名也可查询)

4.修改模块:(修改b的成绩)

(输入)1(修改number)(输入)2(修改name)(输入)3(修改sex)(输入)4(修改age) (输入)5(修改birthday)(输入)6(修改score)

5.删除模块:(删除c的基本信息):06(输入学号即可删除)

6.统计模块:可统计各分数的人数。

7.排序模块:按成绩进行排序。

四、概要设计

(1) 主函数结构图:

C语言课程设计报告书张杉

(2)数据类型:

结构体类型

struct date /*结构体类型*/

{int year; /*结构体变量,用来定义生日中的年*/

??};

struct student_type /*结构体类型*/

{int num; /*结构体变量,用来定义学号*/

char name[10]; /*结构体数组,用来定义姓名*/

??

struct date birth; /*结构体中的结构体*/

};

(3)模块功能详细说明:

1.录入模块:此模块可以连续输入20个学生的资料,若学生数少于20,则可以在输入学号处输入0 便可退出此模块,并把输入的信息保存到e:\\score.txt文件中。

2.输出模块:此模块分两页输出二十名同学的信息。

3.添加模块:输入要添加的学生信息。

4.删除模块:输入要删除的同学学号,然后删除。

5.查询模块:此模块中使用者可以用三种方式查询学生成绩。

分别为(1)按学号查询(2)按姓名查询。

6.修改模块:此模块中可以修改一门科的成绩也可以同时修改四门科的成绩。修改完毕后输入y 可以继续修改,输入n 则退出此模块。

7.删除模块:此模块中用到的删除原理为覆盖要删除的学生的资料。过程简述,先输入要删除的学生的学号,系统找到此学生的信息后给它复制下一个学生的信息,给下一个学生的纪录复制下下一个学生的信息,一直到最后一个学生的信息复制给倒数第二个学生的信息为止。然后文件中的学生总数减一。

8.统计模块:统计一个分数的人数。

9.排序模块:此模块用的方法为冒泡法。

五、详细设计及运行结果

(1)各个模块的程序流程图加模块:

添加模块:

C语言课程设计报告书张杉

C语言课程设计报告书张杉

C语言课程设计报告书张杉

C语言课程设计报告书张杉

C语言课程设计报告书张杉

( 2 ) 函数之间相互调用的图示:

C语言课程设计报告书张杉

C语言课程设计报告书张杉

C语言课程设计报告书张杉

C语言课程设计报告书张杉

2.调试情况:

(1).刚开始时,输入的成绩不能保存在文件中,所有数据都是一次性的。后来知道是没在主程序中加保存模块,添加后就可以了。但调试中又发现在添加模块中加入数据还是不能保存,在老师的帮助下发现问题出现在sum值上,我的添加后sum值不变,导致天价的数据不能保存。我在程序中加了sum++;使每次添加数据后,sum也随之添加。问题就解决了。

(2).删除模块是最头疼的,调试了n多次才成功,问题也出现在sum值上。

(3).其他问题也就在粗心或者简单的错误,印象不是很深刻。

3.自我评价:

在没有输入任何信息的情况下,不能执行查询、修改、删除、统计、排序功能 。

本程序是由C语言的基本单位—函数来设计实现与其功能的多次使用函数调用以及函数的嵌套调用。本程序分为8个模块,分别为(1)录入学生资料。((3)添加学生的资料(4)查询学生的成绩(5)修改学生的资料(6)删除学生的资料(7)统计学生的成绩(8)对学生的资料进行排序。本程序可以处理多个学生的成绩的输入、添加、修改、排序等问题。本程序的使用特别方便,每做完一个模块,下面都有提示信息。使用环境为Win-Tc。

此程序的不足之处在学生基本信息方面还不够完善, 另一方面就是在运行此程序时,需要执行操作的提示语不够具体和完善.

改进方法: 可以在学生基本信息的结构体中添加更多的学生信息,使得学生信息更加完善,此外,还可以在编程时加一些必要的提示语,用printf(“”); 语句直接可输入.

4.感受:经过两周的编程实习,并在后一段的报告总结,我对C语言这门科有新的认识。要成功编一套程序,不仅需要有一个整体的思路,更重要的是对基础知识把握一定要扎实。通过编程,对我发现了很多知识上的漏洞和不足,也得到了用诸多C语言解决实际问题的宝贵经验。相信在以后的学习生活包括考试中一定会有很大帮助。

当然我的成绩也离不开老师的热心帮助,不管是粗心造成的错误还是正需本身的错误,老师都耐心给我讲解调试,知道成功运行。我想没有老师的帮助我很难在短期内把程序设计做的这样好,在此特地感谢老师的帮助。

七、源程序清单:

#include "stdio.h"

#include "string.h"

#define MAX 20

#define PAGE 10

#define PRINT1 printf(" -------------------------------------------------------------------\n")

#define PRINT2 printf(" num name sex age birthday score \n")

#define PRINT3 printf(" %d %s %c %d %d-%d-%d %d\n",student[i].num,student[i].name,student[i].sex,student[i].age,student

[i].birth.year,student[i].birth.month,student[i].birth.date,student[i].score)

#define PRINT4 printf(" *******************************************************************\n")

int sum;

/*date*/

struct date

{int year;

int month;

int date;

};

/*student struct type*/

struct student_type

{int num;

char name[10];

int sex;

int age;

int score;

struct date birth;

}student[MAX];

/* stone message*/

save_message(int sum)

{

FILE *fp;

int i;

if((fp=fopen("e:\\score.txt","wb"))==NULL)

{

printf("the file you read is wrong1\n");

return;

}

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

if(fwrite(&student[i],sizeof(struct student_type),1,fp)!=1)

printf("the file you write is wrong!\n");

fclose(fp);

}

/*input message*/

input_message()

{int i=0;

system("cls");

printf("\n\n input student message\n"); PRINT1;

do

{printf(" NO.%d student\n",i+1); printf("\n student number(****):"); scanf("%d",&student[i].num);

if(student[i].num==0)break;

printf("\n student name:");

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

printf("\n student sex(m/f):"); getchar();

scanf("%c",&student[i].sex);

printf("\n student age:");

scanf("%d",&student[i].age);

printf("\n student birthday(yyyy-mm-dd):");

scanf("%d-%d-%d",&student[i].birth.year,&student[i].birth.month,&student[i].birth.date);

printf("\n student sorce:");

scanf("%d",&student[i].score);

i++;

}while(i<MAX);

printf("\n %dstudents message innput over!--\n",i);

sum=i;

printf("\n press any key back! "); bioskey(0);

}

/*read messang*/

int read_message()

{ FILE *fp;

int i=0;

if((fp=fopen("e:\\score.txt","rb"))==NULL)

{printf("\n\n********&*%%%%%%%%%%%%%%%%press any key*******\n"); return;

}

while(feof(fp)!=1)

{fread(&student[i],sizeof(struct student_type),1,fp);

if(student[i].num==0)break;

else i++;

}

fclose(fp);

return(i);

}

output_message()

{ int i=0,j=0,count,page=1;

system("cls");

printf("\n\n student message from page%d\n\n",page); PRINT2;

PRINT1;

do

{if(student[i].num!=0)

{ j++;

if(j%PAGE!=0)

{

PRINT3;

PRINT1;

}

else

{ PRINT3;

PRINT1;

if(student[i+1].num!=0)

{ printf("press any key continue!");

bioskey(0);

system("cls");

printf("\n\n student message form page%d\n\n",++page); PRINT2;

PRINT1;

}

}

}

i++;

} while(student[i].num!=0);

printf("press any key back!");

bioskey(0);

}

insert_message()

{int i=sum,j,flag=0;

char choice;

system("cls");

printf("\n\n Insert a mew student\n");

PRINT1;

do

{printf("\n new student number:");

scanf("%d",&student[i].num);

printf("\n student name:");

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

getchar();

printf("\n student sex:");

scanf("%c",&student[i].sex);

getchar();

printf("\n student age:");

scanf("%d",&student[i].age);

getchar();

printf("\n student birthday:");

scanf("%d-%d-%d",&student[i].birth.year,&student[i].birth.month,&student[i].birth.date);

getchar();

printf("\n student score:");

scanf("%d",&student[i].score);

PRINT4;sum++;

printf(" continue?(y/n)");

choice=getch();

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

{printf("\n continue!");

i++;

flag=1;

} else flag=0;

}while(flag==1);

save_message(sum);

printf("\n press any key back!");

bioskey(0);

}

/*delete message*/

del_message()

{

int i,j,t,choice1;

char choice2;

system("cls");

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

printf(" please input the number of student you

want to delete: ");

scanf("%d",&choice1);

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

{

if(student[i].num==choice1)

{t=i;

break;

}

}

PRINT4;

PRINT1;

PRINT2;

PRINT1;

PRINT3;

PRINT1;

getchar();

for(i=t;i<sum;i++)

{ j=i+1;

student[i]=student[j];

}

sum=sum-1;

printf("the information of this student has deleted!"); bioskey(0);

}

/*revise message*/

revise_message()

{int i=0,choice,revise_num,flag;

do

{ system("cls");

printf("\n input student number:"); scanf("%d",&revise_num);

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

if(student[i].num==revise_num)

{printf("\n --student message--\n"); PRINT1;

PRINT2;

PRINT3;

printf("\n which do you want to revise?\n"); printf("\n 1.number\n");

printf("\n 2.name\n");

printf("\n 3.sex\n");

printf("\n 4.age\n");

printf("\n 5.birthday\n");

printf("\n 6.score\n");

printf("\n select(1-6):");

scanf("%d",&choice);

switch(choice)

{case 1:printf("\n input reviesd number:");

scanf("%d",&student[i].num);break;

case 2:printf("\n input reviesd name:");

scanf("%s",&student[i].name);break;

case 3:printf("\n input reviesd sex:");

getchar();

scanf("%c",&student[i].sex);break;

case 4:printf("\n input reviesd age:");

scanf("%d",&student[i].age);break;

case 5:printf("\n input reviesd birthday:");

scanf("%d-%d-%d",&student[i].birth.year,&student[i].birth.month,&student[i].birth.date);break;

case 6:printf("\n input reviesd score:");

scanf("%d",&student[i].score);break;

}

PRINT1;

PRINT2;

PRINT3;

break;

}

if(i==sum)

{printf(" the student doesn't exsit!");

bioskey(0);

}

printf("\n\n continue?(y/n)");

choice=getch();

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

{flag=1;

printf("\n continue!");

}

else flag=0;

}

while(flag==1);

printf("\n press any key back!");

bioskey(0);

}

renew_message()

{int choice;

do

{

system("cls");

printf("\n\n\n **************renew student message**************\n\n\n");

printf(" 1.insert student message\n\n"); printf(" 2.delete student message\n\n"); printf(" 3.revise student message\n\n"); printf(" 0.back\n\n");

printf(" select(0-3):");

scanf("%d",&choice);

switch(choice)

{case 1:insert_message();break;

case 2:del_message();break;

case 3:revise_message();break;

case 0:break;

}

}

while(choice!=0);

}

/*inquire by name*/

inquire_name()

{ int i,choice,j=0;

char inquire_name[10];

system("cls");

printf("\n input student name:");

scanf("%s",&inquire_name);

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

if(strcmp(student[i].name,inquire_name)==0&&student[i].num!=0) {printf("\n --student message--\n");

PRINT1;

PRINT2;

PRINT3;

}

else j++;

if(j==sum)

printf("\n the student doesn't exisit");

bioskey(0);

}

/*inquire by num*/

inquire_num()

{ int i,choice,j=0;

char inquire_num;

system("cls");

printf("\n input student number:");

scanf("%d",&inquire_num);

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

if(student[i].num==inquire_num&&student[i].num!=0)

{printf("\n --student message--\n");

PRINT1;

PRINT2;

PRINT3;

}

else j++;

if(j==sum)

printf("\n the student doesn't exisit");

bioskey(0);

}

inquire_message()

{ int choice;

do

{ system("cls");

printf("\n\n\n *************inquire student message**********\n\n");

printf(" 1.inquire by name\n\n");

printf(" 2.inquire by num\n\n");

printf(" 0.back\n\n");

printf(" select(0-2):");

scanf("%d",&choice);

switch(choice)

{case 1:inquire_name();break;

case 2:inquire_num();break;

case 0:break;

}

}while(choice!=0);

}

count_message()

{ int i,choice,j=0,count_score,num=0;

system("cls");

printf("input the score you want to count:\n");

scanf("%d",&count_score);

printf("\n the results \n\n\n");

PRINT2;

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

if(student[i].score==count_score)

{

num++;

PRINT3;

}

else j++;

printf("\n score number \n");

printf("%15d%13d",count_score,num);

if(j==sum)

printf(" \n the score is not exist,press anykey to return \n\n");

bioskey(0);

}

sort_message()

{ struct student_type *p,*q[MAX];

int i,j,k;

system("cls");

printf("\n\n\n sort by score: \n");

PRINT1;

printf("\n rank---number----name---sex---score\n\n\n"); PRINT1;

p=student;

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

q[i]=p++;

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

{

k=i;

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

if(q[k]->score<q[j]->score) k=j;

if (k!=i)

{

p=q[i];q[i]=q[k];q[k]=p;

}

}

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

printf("\n %4d %6d %s %c %d",i+1,q[i]->num,q[i]->name,q[i]->sex,q[i]->score);

bioskey(0);

}

/*main */

main()

{ int choice,i=0;

char tt[20];

char t;

char screat[]="05071032";

sum=read_message();

bioskey(0);

system("cls");

printf("\n\n\n please input the password:");

t=getch();

while(t!='\r')

{

printf("*");

tt[i]=t;

i++;

t=getch();

}

tt[i]='\0';

if(strcmp(screat,tt)!=0)

{

printf("\n error!");

exit(0);

}

do

{ system("cls");

printf("\n\n

*************************************\n");

printf(" * students message system *\n"); printf("

*************************************\n\n");

printf(" 1.input message\n\n\n"); printf(" 2.output message\n\n\n"); printf(" 3.renew messagen\n\n\n"); printf(" 4.inquire message\n\n\n"); printf(" 5.count message\n\n\n"); printf(" 6.sort message\n\n\n"); printf(" select(0-6):");

scanf("%d",&choice);

switch(choice)

{case 1:input_message();break;

case 2:output_message();break;

case 3:renew_message();break;

case 4:inquire_message();break;

case 5:count_message();break;

case 6:sort_message();break;

case 0:break;

}

}while(choice!=0);

save_message(sum);

}

相关推荐