C语言课程设计模板.docx

上传人:b****2 文档编号:2311806 上传时间:2023-05-03 格式:DOCX 页数:32 大小:156.02KB
下载 相关 举报
C语言课程设计模板.docx_第1页
第1页 / 共32页
C语言课程设计模板.docx_第2页
第2页 / 共32页
C语言课程设计模板.docx_第3页
第3页 / 共32页
C语言课程设计模板.docx_第4页
第4页 / 共32页
C语言课程设计模板.docx_第5页
第5页 / 共32页
C语言课程设计模板.docx_第6页
第6页 / 共32页
C语言课程设计模板.docx_第7页
第7页 / 共32页
C语言课程设计模板.docx_第8页
第8页 / 共32页
C语言课程设计模板.docx_第9页
第9页 / 共32页
C语言课程设计模板.docx_第10页
第10页 / 共32页
C语言课程设计模板.docx_第11页
第11页 / 共32页
C语言课程设计模板.docx_第12页
第12页 / 共32页
C语言课程设计模板.docx_第13页
第13页 / 共32页
C语言课程设计模板.docx_第14页
第14页 / 共32页
C语言课程设计模板.docx_第15页
第15页 / 共32页
C语言课程设计模板.docx_第16页
第16页 / 共32页
C语言课程设计模板.docx_第17页
第17页 / 共32页
C语言课程设计模板.docx_第18页
第18页 / 共32页
C语言课程设计模板.docx_第19页
第19页 / 共32页
C语言课程设计模板.docx_第20页
第20页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言课程设计模板.docx

《C语言课程设计模板.docx》由会员分享,可在线阅读,更多相关《C语言课程设计模板.docx(32页珍藏版)》请在冰点文库上搜索。

C语言课程设计模板.docx

C语言课程设计模板

 

《高级语言程序设计》

课程设计报告

 

姓名:

熊丹学号:

11058224

专业:

电子信息科学与技术实验室:

2602

设计时间:

2012年07月09日——2012年07月11日

评定成绩:

指导教师:

朱智林

 

四、详细设计4

五、调试与测试15

六、课程设计的总结17

在本次的课程设计中,我主要负责搜集相关资料,和罗丹丹一起修改了程序,调试了程序中的几处错误,

程序在运行过程中还是比较顺利的,并没有出现什么无法解决的的问题。

对于流程图我主要负责的有:

输入数据函数、显示数据函数、插入数据函数、删除数据函数、查找数据函数。

此外负责了课程设计报告的撰写。

 

一、课程设计的目的

1.巩固和加深学生对C语言课程的基本知识的理解和掌握

2.掌握C语言编程和程序调试的基本技能

3.利用C语言进行基本的软件设计

4.掌握书写程序设计说明文档的能力

5.提高运用C语言解决实际问题的能力

二.设计的内容与要求

学生纪录用文件存储,因而要提供文件的输入输出操作;要实现插入一个新的学生纪录,因而要提供文件的插入操作;要实现学生纪录得修改和删除,以及登记成绩和修改成绩,因而要提供文件纪录的修改和删除操作;要浏览全班成绩,故要提供显示操作;计算学生总成绩需要提供简单的统计操作;要按学号排序输出全班成绩表,因而要提供排序操作;另外要提供键盘式选择菜单以实现功能选择。

三.总体设计

(1)整个成绩管理系统设计分为11个模块:

1.录入学员信息2.显示学员信息3.成绩排序信息4.添加学员信息5.删除学员信息6.修改学员信息7.查询学员信息8.从文件读入学员信息9.删除文件中学员信息10.保存学员信息11.退出

(2)算法描诉(此程序中所包含的函数)

1.主函数main():

定义学生结构体数组,调用录入,统计等函数对成绩表进行处理。

2.输入数据函数input():

输入学生姓名,性别,学号,成绩1,成绩2,成绩3以及成绩的排序,平均值和总和。

3.排序函数sort():

对总成绩进行排序,按有多到少的顺序。

4.显示数据函数display():

显示各个学生的总成绩

5.插入数据函数insert():

插入新的同学的成绩,需要输入新同学的姓名,学好,性别。

6.删除数据函数del():

由于各种原因,删除某些同学的成绩,这也需要这位同学的姓名,学好,性别。

7.平均值函数average():

求各个同学总成绩的平均值。

8.查询数据函数find():

查找某位同学的成绩,同样需要这位同学的姓名,学号,性别。

9.保存数据函数save():

再一次打开界面是,仍有上次所找的讯息。

10.读出数据函数read():

可以读到所有的信息。

11.删除文件函数del_file():

删除某个文件的函数,这需要知道该文件的路径。

12.修改文件函数modify():

修改文件中的信息,这同样需要文件的路径。

四.详细设计

数据的组织描述(比如主要的变量类型,结构体等等),模块之间的参数设计(接口设计,模块的功能说明),系统控制流程图,各个模块的流程图,采用的算法

数据结构采用结构体,设计学生纪录结构体:

 

structstudent

{

intno;//学号

charname[20];//姓名

charsex[4];//性别

floatscore1;//成绩1

floatscore2;//成绩2

floatscore3;//成绩3

floatsort;//排序成绩

floatave;//平均分

floatsum;//总分

};

(1)主函数输出提示菜单:

插入学生纪录修改学生纪录删除学生纪录登记成绩

修改成绩浏览学生纪录查看总成绩查看成绩表

(2)数据插入模块

采用追加的方式把学生成绩信息写入学生成绩信息文件。

(3)数据修改模块

通过菜单选择修改学生纪录,打开该文件,从文件中读一条记录,判断是否要修改,如果是,则修改后重新写入文件;否则直接重新写入文件,读下一条记录。

(4)数据删除模块

通过菜单选择删除学生纪录,打开该文件,从文件中读一条记录,判断是否要删除,如果是,则舍弃;否则重新写入文件,读下一条记录。

(5)成绩登记模块

类似数据修改模块,只是修改字段为各个科目的成绩。

(6)成绩修改模块

参考数据修改模块。

(7)数据浏览模块

读取学生成绩信息文件,显示输出。

(8)成绩统计模块

从学生成绩信息文件中读取一个学生纪录,计算该学生的总成绩(简单的成绩相加),输出,然后读取下一条纪录。

(9)成绩表查看模块

建立结构体数组

Struct

{

SRrecord;//学生纪录

Floattotal;//总成绩

}stu[N];

从学生成绩信息文件中读取各个纪录,total中存放计算得到的总成绩。

然后采用排序算法(冒泡、插入、选择等)对数组按照总成绩进行排序。

最后顺序输出。

sort函数

i=1

i<=n-1?

Min=s[i],j=i+1

j

S[j]

Min=j

j=j+1

输出排序结果

结束

Min>i?

temp=s[i]

S[i]=s[min]

S[min]=temp

i=i+1

display函数

intI,charas

输出stu[i]学号姓名性别成绩1成绩2成绩3平均值

i=0

i

Y

i++

as=getchar()

while(!

as)Y

system(“cls”)

结束

charch

输入新学生的信息stu[now_no].no

输入学生姓名

输入学

生性别

输入学生学号

输入学

生成绩1

输入学生成绩2

输入学生成绩3

insert函数

now_no=now_no+1

是否继续输入Y

N

ch=getch()

while(ch=’n’&&ch!

=’N’)Y

结束

del函数

unsignedlonginum

inti=0

输入要删除学生的学号

输入

i

Y

i=i+1

stu[i].no==inumN

Y

i==now_noN

Y

now_no-=1

stu[i]=stu[now_no-1]

now_no-=1

排序

结束

find函数

inti

charstr[20],as

输入要查询的学生姓名

gets[str]

i=0

i

Y

i++

if(!

strcmp(stu[i].name,str))N

Y

输出stu[i]的学号姓名性别成绩1成绩2成绩3平均值

as=getch()

while(!

as)Y

system(“cls”)

结束

save函数

i=0

输入要保存的文件路径

是否能打开文件?

输入成绩1,成绩2,成绩3

总成绩=成绩1+成绩2+成绩3

平均成绩=总成绩/3

输出得到学生的基本信息:

姓名,性别,学号,成绩1,成绩2,成绩3,平均成绩。

i=i+1

i>n?

 

保存成功,关闭文件

保存失败!

退出该功能,返回主菜单,继续选择

删除文件函数流程图

修改文件函数流程图

五.调试与测试

调试

1.在编程当中,由于要输入大量的程序,所以经常出现很多不让人注意的小错误。

例如大小写int写成Int(因为是在word中写的,会自动将字母大写)

2.关系运算符和赋值运算符总是用错,而这种错误也总是被忽略。

3.有时候会忘记加分号或是在不该加的地方加上了分号。

不过这种情况还是比较容易被发现的。

4.有时候大括号也会忘加,尤其是在if语句和for语句中。

5.最重要的是函数的应用,函数应该应用得当,否则程序会出现很大的错误,尤其是在如此庞大的程序中。

测试

开始界面

 

菜单

 

 

 

六.课程设计的总结

通过这个课程设计,我们更加牢固的掌握了书本上的知识。

并对于以前不熟悉的知识有了更加深刻的了解。

在完成此次课程设计的过程中,虽然有些疲劳和困倦,但带给我很多的收获。

C语言已经学了一个学期了,有许多知识都存在似懂非懂的现象,这种现象通过实际的上机操作,已经减少了许多。

很多程序理论上说得过去,但真正上机了却会发现行不通。

所以说无论做什么事空有理论而不去实践都收获不到真正的果实。

说实话,我这个程序在所有程序当中算是简单的,所包含的知识也就是调用函数和结构体,当中穿插了一些排序算法,总体来说结构还是很清晰的,由各个模块小模块组成了一个管理系统。

但过程中也是遇到了不少的麻烦,很多地方都想不到或是想不全的。

所以说对待任何事情我们都不容小觑,一件自己没做过的事谁都不能说你就一定能做好了。

输入和调试程序的过程是相当枯燥的,但构思和完善程序的过程还是比较有趣的,无论怎样,当你完成了一个程序时,还是相当有成就感的。

此次任务的完成,也体现出同学之间的团结精神。

实践是检验真理的唯一标准。

没有实践,就不会发现和深刻体会它的真实所在。

只有通过检验的真理,在自己的心里,才会认可它的真实性。

面向对象程序设计的完成,使我们懂得了真理的重要性,理论和实际的相结合,才能真正把握所学和所掌握的知识。

同时培养了我们的团队精神,使我我们懂得了团队的重要性。

在今后的学习工作中我们将会更好的发挥团队精神。

总的来说,C语言还是十分有趣的,可以通过人为的设计而让电脑来辅助性的做一些机械的东西。

在今后的学习过程中,我也加更加认真地学习C语言,希望能在今后设计出一个属于自己的程序。

 

参考书目:

(五号,宋体加粗)

[1]谭浩强,《C语言程序设计》(第四版)[M],清华大学出版社,2008年

(要求:

五号字,宋体,单倍行距。

按作者、书名、出版社、出版时间格式逐一列出,中间用逗号格开)

附录:

程序清单

#include

#include/*清屏*/

#include/*显示目录*/

#include

#defineMAX1000

voidinput();/*输入数据函数*/

voidsort();/*排序数据函数*/

voiddisplay();/*显示数据函数*/

voidinsert();/*插入数据函数*/

voiddel();/*删除数据函数*/

voidaverage();/*平均值函数*/

voidfind();/*查找数据函数*/

voidsave();/*保存数据函数*/

voidread();/*读出数据函数*/

voiddel_file();/*删除文件函数*/

voidmodify();/*修改文件函数*/

intnow_no=0;

structstudent

{

intno;

charname[20];

charsex[4];

floatscore1;

floatscore2;

floatscore3;

floatsort;

floatave;

floatsum;

};

structstudentstu[MAX],*p;

voidmain()/*主函数*/

{

intas;

charch;

do{

printf("\n\n\n\n\t\t___︵︵︿︿︿︿︿﹀︿﹀O(∩_∩)O﹀︿﹀︿︿︿︿︿︵︵___");

start:

printf("\n\n\n\n\n\t\t---★你好欢迎使用学生成绩管理系统!

★---\n");

printf(“\n\n\n\t\t\t\t编程者:

熊丹罗丹丹\t\t\t\t\t\n\n”);

printf("\n\n\n\n\t\t******************按任意键继续*******************");

ch=getch();

}

while(!

ch);

system("cls");

/*一下为功能选择模块*/

do

{

printf("\n\t\t\t\t1.录入学员信息\n\t\t\t\t2.显示学员信息\n\t\t\t\t3.成绩排序信息\n\t\t\t\t4.添加学员信息\n\t\t\t\t5.删除学员信息\n\t\t\t\t6.修改学员信息\n\t\t\t\t7.查询学员信息\n\t\t\t\t8.从文件读入学员信息\n\t\t\t\t9.删除文件中学员信息\n\t\t\t\t10.保存学员信息\n\t\t\t\t11.退出\n");

printf("\t\t\t\t选择功能选项(输入所选功能前的数字):

");

fflush(stdin);

/*可用可不用,用于清除缓存防止下次用scanf输入是出现错误*/

scanf("%d",&as);

switch(as)

{

case1:

system("cls");

input();

break;

case2:

system("cls");

display();

break;

case3:

system("cls");

sort();

break;

case4:

system("cls");

insert();

break;

case5:

system("cls");

del();

break;

case6:

system("cls");

modify();

break;

case7:

system("cls");

find();

break;

case8:

system("cls");

read();

break;

case9:

system("cls");

del_file();

break;

case10:

system("cls");

save();

break;

case11:

system("exit");

exit(0);

default:

system("cls");

gotostart;

}

}while

(1);/*while

(1),1表示真,所以while

(1)表示永远循环下去,*/

/*至此功能选择结束*/

}

voidinput()/*原始数据录入模块*/

{

inti=0;

charch;

do

{

printf("\t\t\t\t1.录入学员信息\n输入第%d个学生的信息\n",i+1);

printf("\n输入学生学号:

");

scanf("%u",&stu[i].no);

fflush(stdin);

printf("\n输入学生姓名:

");

fflush(stdin);

gets(stu[i].name);

printf("\n输入学生性别:

");

fflush(stdin);

gets(stu[i].sex);

printf("\n输入学生成绩1:

");

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

printf("\n输入学生成绩2:

");

fflush(stdin);

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

printf("\n输入学生成绩3:

");

fflush(stdin);

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

printf("\n\n");

i++;

now_no=i;

printf("是否继续输入?

(Y/N)");

fflush(stdin);

ch=getch();

system("cls");

}

while(ch!

='n'&&ch!

='N');

system("cls");

}

voidsort()/*排序数据函数*/

{

structstudenttemp;

inti,j;

average();

for(i=1;i

{

for(j=1;j<=now_no-i;j++)

{

if(stu[j-1].ave

{

temp=stu[j];

stu[j]=stu[j-1];

stu[j-1]=temp;

}

}

}

printf("排序以完成进入功能2可进行显示\n");

system("pause");

system("cls");

}

voidsort1()/*排序数据函数*/

{

structstudenttemp;

inti,j;

for(i=1;i

{

for(j=1;j<=now_no-i;j++)

{

if(stu[j-1].score1

{

temp=stu[j];

stu[j]=stu[j-1];

stu[j-1]=temp;

}

}

}

}

voidsort2()/*排序数据函数*/

{

structstudenttemp;

inti,j;

for(i=1;i

{

for(j=1;j<=now_no-i;j++)

{

if(stu[j-1].score2

{

temp=stu[j];

stu[j]=stu[j-1];

stu[j-1]=temp;

}

}

}

}

voidsort3()/*排序数据函数*/

{

structstudenttemp;

inti,j;

for(i=1;i

{

for(j=1;j<=now_no-i;j++)

{

if(stu[j-1].score3

{

temp=stu[j];

stu[j]=stu[j-1];

stu[j-1]=temp;

}

}

}

}

voiddisplay()/*显示数据函数*/

{

inti;

charas;

average();

do

{

printf("\t\t\t班级学生信息列表\n");

printf("\t学号\t\t姓名\t性别\t成绩1\t成绩2\t成绩3\t平均值\n");

for(i=0;i

printf("\t%u\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);

printf("\t\t按任意键返回主菜单.");

fflush(stdin);

as=getch();

}

while(!

as);

system("cls");

}

voidinsert()/*插入数据函数*/

{

charch;

do

{

printf("\n\t\t输入新插入学生信息\n");

printf("\n输入学生学号:

");

scanf("%u",&stu[now_no].no);

fflush(stdin);

printf("\n输入学生姓名:

");

fflush(stdin);

gets(stu[now_no].name);

printf("\n输入学生性别:

");

fflush(stdin);

gets(stu[now_no].sex);

printf("\n输入学生成绩1:

");

fflush(stdin);

scanf("%f",&stu[now_no].score1);

printf("\n输入学生成绩2:

");

fflush(stdin);

scanf("%f",&stu[now_no].score2);

printf("\n输入学生成绩3:

");

fflush(stdin);

scanf("%f",&stu[now_no].score3);

printf("\n\n");

now_no=now_no+1;

sort();

printf("是否继续输入?

(Y/N)");

fflush(stdin);

ch=getch();

system("cls");

}

while(ch!

='n'&&ch!

='N');

}

voiddel()/*删除数据函数*/

{unsignedlonginum;

inti;

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

");

fflush(stdin);

scanf("%u",&inum);

for(i=0;i

{

if(stu[i].no==inum)

{

if(i==now_no)now_no-=1;

else

{

stu[i]=stu[now_no-1];

now_no-=1;

}

sort();

break;

}

}

system("cls");

}

voidsave()/*保存数据函数*/

{

FILE*fp;

inti;

charfilepath[20];

printf("输入要保存的文件路径:

");

fflush(stdin);

gets(filepath);

if((fp=fopen(filepath,"w"))==NULL)

{

printf("\n保存失败!

");

exit(0);

}

for(i=0;i

{

stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;

stu[i].ave=stu[i].sum/3;

fprintf(fp,"\t%u\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 其它

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2