c语言课程设计报告及其源代码Word下载.docx

上传人:b****6 文档编号:21435155 上传时间:2023-01-30 格式:DOCX 页数:36 大小:722.78KB
下载 相关 举报
c语言课程设计报告及其源代码Word下载.docx_第1页
第1页 / 共36页
c语言课程设计报告及其源代码Word下载.docx_第2页
第2页 / 共36页
c语言课程设计报告及其源代码Word下载.docx_第3页
第3页 / 共36页
c语言课程设计报告及其源代码Word下载.docx_第4页
第4页 / 共36页
c语言课程设计报告及其源代码Word下载.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

c语言课程设计报告及其源代码Word下载.docx

《c语言课程设计报告及其源代码Word下载.docx》由会员分享,可在线阅读,更多相关《c语言课程设计报告及其源代码Word下载.docx(36页珍藏版)》请在冰豆网上搜索。

c语言课程设计报告及其源代码Word下载.docx

插入一条记录按学号排序并显示(Insert_a_record)

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

查找并显示一个记录(Query_a_record)

查找并修改一个记录(Change_a_record)

从文件中读入数据(AddfromText)

循环写入数据(WritetoText)

四.概要设计

1.系统分析

功能模块图:

总目录以及下属的各个模块,这样可以使得程序的书写脉络清晰流畅。

程序结构图

2、模块功能说明

(1)输入记录模块(Input):

用于输入学生的各项信息

(2)显示记录模块(Display):

按照输入的顺序显示出每个学生的各项信息

(3)按房间号排序并显示模块(Sort_by_roomnum):

按照房间号顺序显示每个学生信息

(4)按学号排序并显示模块(Sort_by_num):

按照学号顺序显示每个学生信息

(5)插入一条记录按学号排序并显示模块(Insert_a_record):

插入一条记录并按学号显示出所有记录。

(6)按姓名查找,删除一条记录模块(Delete_a_record):

查找一个姓名,并删除该模块

(7)查找并显示一个记录模块(Query_a_record):

查找一条记录并显示该记录

(8)查找并修改一个记录模块(Change_a_record):

按姓名查找并修改某个其中一个记录模块

(9)从文件中读入数据模块(AddfromText):

用fscanf语句从文件读取信息

(10)循环写入数据模块(WritetoText):

用fprintf语句向已知(未知)文件读取信息,并返回读取信息

五.详细设计及运行结果

主程序流程图

函数调用关系

按房间号排序并显示

按学号排序并显示

插入一条记录并按学号排序

按姓名查找删除一条记录

查找并显示一个记录

查找并修改一个记录

从文件中读入数据

循环写入数据

源代码以及运行结果:

程序设计编码见附录

详细运行结果

1)登陆界面

输入密码:

错误了,

成功输入界面

2)进入主菜单

3)输入记录后显示记录

4)按房间号排序

5)学号排序

6)插入记录并按学号排序

7)删除记录

8)查找并显示

9)查找并修改记录

修改成功

10)保存文件

文件及内容保存成功!

11)读取文件

文件读取成功!

六、调试情况,设计技巧及体会

测试数据

原始数据:

房间号床位号学号姓名班级性别

14604503091002haha0908man

10304503091005huha0901man

23500403091033dfgh0902woman

10204503091055woyu0901man

16500803091065tata0904man

10500403091068tagi0902woman

11300803091088jijk0904man

45800803091089aabb0904man

40400403098656shaz0985woman

按房间号排序后数据:

10500403091068tagi0902woman

11300803091088jijk0904man

16500803091065tata0904man

按学号排序后数据:

个人总结

通过这次的C语言程序设计,从总共两个星期的时间,其中选题花了我将近3天的时间,最终还是决定选择学生宿舍管理系统,紧接着就确定了功能模块,总共确立了十个功能模块,相对比较繁琐,但是由于时间还是比较紧的,所以没有能进一步修改。

这次程序设计过程中,我觉得最难的就是每个模块的逻辑分析过程,尤其是函数的返回值问题,例如,在数据添加后,用以下函数

intInput(Studentroom[],intn)/*输入若干条记录*/

{inti=0;

charsign;

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

while(sign!

='

n'

&

sign!

N'

)/*判断*/

{

system("

cls"

);

printf("

\t\t房间号:

"

/*交互输入*/

scanf("

\t\t%s"

&

room[n+i].roomnum);

\t\t床位号:

room[n+i].bednum);

\t\t学号:

room[n+i].num);

\t\t班级:

room[n+i].classnum);

\t\t姓名:

room[n+i].name);

printf("

\t\t性别:

scanf("

room[n+i].sex);

\t\t是否继续输入?

(Y/N)"

\t\t%c"

sign);

/*输入判断*/

i++;

}

return(n+i);

其中返回值是的是i还是i++我花费了很长时间才分析出来,最后还是在纸笔的计算下,完成了这个模块。

其次,在程序模块简化过程中,我也意识到了要熟练掌握C语言各项基本只是才能简化,例如,在排序模块中,一开始我用的是以下代码

{strcpy(t,room[j+1].roomnum);

strcpy(room[j+1].roomnum,room[j].roomnum);

strcpy(room[j].roomnum,t);

strcpy(t,room[j+1].bednum);

strcpy(room[j+1].bednum,room[j].bednum);

strcpy(room[j].bednum,t);

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

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

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

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

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

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

strcpy(room[j+1].classnum,room[j].classnum);

strcpy(room[j].classnum,t);

strcpy(room[j+1].sex,room[j].sex);

strcpy(room[j].sex,t);

然后再老师的提醒下,我才发现,可以定义另一个结构体Studentt;

然后用

T=room[j];

room[j]=room[j+1];

room[j+1]=t

简单三行就解决了上面的麻烦,这更让我领会到了C语言的魅力..

另外,还学习到了system(“pause”);

语句就是在屏幕上按任意键继续的意思,相当与

printf(“按任意键继续”);

getch();

所以,我还有许多要改进的地方。

当然,我还更加体会到了团队的力量,当我有问题的时候要勇于和同学探讨问题,自己也要能帮助不明白的同学,在这样的情况下,大家才能更加熟练地学习自己还不懂得知识。

所以,这更是一个团队互相帮助的成果。

以后,要想把计算机方面的知识学好,一定要更加努力!

结束语

这次C语言程序实习让我渐渐体会到了编程的乐趣,但是也意识到了自己的不足,一个人的成功是靠努力换来的,只有付出了,才会有收获!

 参考文献:

《C语言程序设计》(第二版)    王曙燕    科学出版社

 最后,感谢机房各位老师对我的监督辅导!

  

七、源程序清单(略)

#include<

stdio.h>

/*引用库函数*/

#include<

stdlib.h>

ctype.h>

string.h>

conio.h>

typedefstruct/*定义结构体数组*/

charroomnum[4];

/*房间号*/

charbednum[4];

/*床位号*/

charclassnum[10];

/*班级*/

charnum[10];

/*学号*/

charname[20];

/*姓名*/

charsex[10];

/*性别*/

}Student;

Studentroom1[1000];

/*结构体数组变量*/

intmenu_select()/*菜单函数*/

{

intc;

do{

/*运行前清屏*/

\t\t★★★★★★学生宿舍管理系统★★★★★★\n"

/*菜单选择*/

\t\t§

1.输入记录§

\n"

2.显示记录§

3.按房间号排序并显示§

4.按学号排序并显示§

5.插入一条记录按学号排序并显示§

6.按姓名查找,删除一条记录§

7查找并显示一个记录§

8查找并修改一个记录§

9.从文件中读入数据§

10.循环写入数据§

0.结束程序§

\t\t★★★★★★★★★★★★★★★★★★★★\n"

\t\t请选择您要运行的选项按(0-10):

%d"

c);

/*读入选择*/

}while(c<

0||c>

10);

return(c);

/*返回选择*/

intInput(Studentroom[],intn)/*输入若干条记录*/

voidDisplay(Studentroom[],intn)/*显示所有记录*/

inti;

printf("

\t\t------------------------------------------------------------\n"

/*格式头*/

\t\t房间号床位号学号姓名班级性别\n"

for(i=1;

i<

n+1;

i++)/*循环输入*/

\t\t%-10s%-10s%-10s%-10s%-10s%-20s\n"

room[i-1].roomnum,room[i-1].bednum,room[i-1].num,room[i-1].name,room[i-1].classnum,room[i-1].sex);

\t\t"

system("

pause"

voidSort_by_num(Studentroom[],intn)/*按学号排序*/

inti,j;

Studentt;

for(i=0;

n-1;

i++)/*冒泡法排序*/

for(j=0;

j<

n-i-1;

j++)

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

0)

{

t=room[j+1];

room[j+1]=room[j];

room[j]=t;

}

voidSort_by_roomnum(Studentroom[],intn)/*按房间号排序*/

n-1-i;

if(strcmp(room[j].roomnum,room[j+1].roomnum)>

{t=room[j+1];

intInsert_a_record(Studentroom[],intn)/*插入一条记录*/

\t\t学生房间号:

/*交互式输入*/

room[n].roomnum);

\t\t学生床位号:

room[n].bednum);

\t\t学生学号:

room[n].num);

\t\t学生姓名:

room[n].name);

\t\t学生班级:

room[n].classnum);

\t\t学生性别:

room[n].sex);

n++;

printf("

system("

Sort_by_num(room,n);

/*调用排序函数*/

\t\t插入记录成功!

/*返回成功信息*/

return(n);

intDelete_a_record(Studentroom[],intn)/*按姓名查找,删除一条记录*/

chars[20];

inti=0,j;

\t\t输入他(她)的姓名:

/*交互式问寻*/

%s"

s);

while(strcmp(room[i].name,s)!

=0&

n)i++;

/*查找判断*/

if(i==n)

\t\t对不起没找到该学生!

/*返回失败信息*/

for(j=i;

j++)/*删除操作*/

room[j]=room[j+1];

\t\t删除记录成功!

return(n-1);

voidQuery_a_record(Studentroom[],intn)/*查找并显示一个记录*/

inti=0;

/*输入*/

s);

/*输入失败信息*/

return;

\t\t他(她)的房间号:

%s\n"

room[i].roomnum);

/*输出该学生信息*/

\t\t他(她)的床位号:

room[i].bednum);

\t\t他(她)的学号:

room[i].num);

\t\t他(她)的班级:

room[i].classnum);

\t\t他(她)的性别:

room[i].sex);

voidChange_a_record(Studentroom[],intn)/*查找并修改一个信息*/

{chars[20],m[4];

\t\t输入他的姓名:

system("

//do

\t\t★★★★★★修改项目内容信息★★★★★★\n"

1.房间号§

2.床位号§

3.学号§

4.姓名§

5.班级§

6.性别§

\t\t请选择您要修改的选项按(0-6):

/*读入选择*/

switch(c)

{

case1:

\t\t请输入你要修改后的房间号:

scanf("

m);

/*录入选择*/

strcpy(room[i].roomnum,m);

/*覆盖信息*/

printf("

恭喜你,修改成功!

system("

break;

case2:

\t\t请输入你要修改后的床位号:

strcpy(room[i].bednum,m);

case3:

\t\t请输入你要修改后的学号:

strcpy(room[i].num,m);

case4:

\t\t请输入你要修改后的姓名:

strcpy(room[i].name,m);

case5:

\t\t请输入你要修改后的班级:

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

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1