c语言课程设计报告及其源代码Word下载.docx
- 文档编号:21435155
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:36
- 大小:722.78KB
c语言课程设计报告及其源代码Word下载.docx
《c语言课程设计报告及其源代码Word下载.docx》由会员分享,可在线阅读,更多相关《c语言课程设计报告及其源代码Word下载.docx(36页珍藏版)》请在冰豆网上搜索。
插入一条记录按学号排序并显示(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请输入你要修改后的班级:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 及其 源代码