C语言程序.docx
- 文档编号:23867039
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:41
- 大小:273.05KB
C语言程序.docx
《C语言程序.docx》由会员分享,可在线阅读,更多相关《C语言程序.docx(41页珍藏版)》请在冰豆网上搜索。
C语言程序
《C语言程序设计》课程设计报告
题目:
班级花名册维护
专业:
班级:
学号:
姓名:
同组人员:
目录
一、课程设计目的…………………………………………………2
二、课程设计的内容、要求………………………………………2
三、所采用的数据结构……………………………………………3
四、主要模块(或函数)及其功能………………………………4
五、主要模块(或函数)的算法思想和程序框图………………5
六、任务分配表……………………………………………………6
七、程序清单……………………………………………………7
八、程序运行时的输入数据………………………………………18
九、总结……………………………………………………………22
一、实践的目的和要求
加深对《C语言》课程所学知识的理解,进一步巩固C语言讲法规则。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力本课程设计是采用C语言,在VC平台下设计图书管理系统,该系统运行在MS-DOS命令行模式下。
本课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。
提高学生适应实际,实践编程的能力。
"C语言"课程设计主要是培养学生利用系统综合C语言进行程序设计的能力。
1.进一步巩固和复习C程序设计的基础知识。
2.培养学生结构化程序、模块化程序设计的方法和能力。
3.了解软件的编制过程及各环节的具体内容。
4.提高学生程序调试技巧、软件设计能力和代码规范化等素质。
5.提高学生分析问题、解决问题以及实际运用能力。
二、课程设计的内容、要求
Ø内容:
1.系统的主要功能
要求能够增加、删除、修改学生的信息。
程序能够读入一个班级花名册或是自建一个班级花名册。
对一个班级的任何学生的修改操作最后都应该反映在保存在硬盘上的班级名册中。
2.题目分析
Ø课程设计要求:
1.用C语言实现系统;
2.系统的各个功能模块要求用函数实现;
3.界面友好(良好的人机交互),程序加必要的注释;
4.课程设计实验报告要求。
3、所采用的数据结构
数据结构:
structfbook[N]·························结构数组
头文件及宏定义:
#defineN50···························宏定义
#include
#include
#include
#include
函数调用:
voidsave(intn)·······················保存信息
voidset_up()··························创建通讯录
voidadd_student()·····················添加新同学
voiddel_student()·····················删除同学信息
voidshow_all()························显示所有信息
voidchange()··························修改同学信息
voidsearch()··························查询同学信息
voidsort()····························学号排序
intcount()····························计算已记录信息数
voidmain_menu()·······················班级花名册管理菜单
voidchange_xx(inti,intn)···········修改信息选项
输入输出函数:
scanf()································输入函数
printf()·······························输出函数
fopen()································文件打开函数
fclose()·······························文件关闭函数
fread()································读取文件数据项
fwrite·································写入文件数据项
字符串函数:
strcmp()·······························字符串比较函数
其它处理函数:
FILE*fp·······························文件指针
exit(0)································结束程序函数
for()··································for循环
do-while·······························do-while循环
if()···································条件语句
if-else································分支结构
switch()·······························分支结构
四、主要模块(或函数)及其功能
Ø创建:
创建通讯录
输入第一个同学的信息。
Ø添加:
添加新同学
可连续添加同学信息,最多可添加50个同学的信息。
Ø删除:
删除同学信息
以姓名的方式查找该同学信息,若有相同姓名则以学号方式查找。
将查找到得同学信息输出,对照确认无误方可删除,否则取消并返回菜单。
Ø显示:
显示所有信息
将已记录的信息项全部输出,首先逐个读取文件信息,然后逐个输出。
Ø修改:
修改同学信息
查找同学信息与删除操作的相同。
有六种修改方式可供选择,如姓名修改,学号修改等。
修改后可显示新的信息。
Ø查找:
查询同学信息
以姓名方式查找,将所有符合要求的信息全部输出。
Ø排序:
进行学号排序
排序是以学号从小到大的方式排列。
首先读取文件所有数据项,通过学号比较,按从小到大的方式重新排序并保存。
Ø保存:
将信息保存到文件中输出
在系统中输入信息,打开文件,然后将信息写入文件保存。
Ø计数:
计算已保存信息数
打开文件,使用循环将文件中原有信息逐个读取,并计算个数项。
五、主要模块(或函数)的算法思想和程序框图
六、任务分配表
&任务分配表
姓名
任务
编写及使用的程序
完成情况
列主菜单
#include
#include
#include
#include
voidsave(intn);//保存信息
voidchange();//修改同学信息
voidsort();//学号排序
intcount();//计算已记录信息数
structbook//结构体
voidmain_menu();//主菜单
voidchange_xx(inti,intn);//修改选项
完成任务
信息保存
信息读取
信息修改
学号排序
报告编写
删除同学信息
voiddel_student();//删除同学信息
intcount();//计算已记录信息数
structbook//结构体
voidsave(intn);//保存信息
voidmain_menu();//主菜单
完成任务
报告排版
创建通讯录
voidset_up();//创建通讯录
voidadd_student();//添加新同学intcount();//计算已记录信息数
structbook//结构体
voidsave(intn);//保存信息
voidmain_menu();//主菜单
完成任务
添加新同学
报告排版
查询同学信息
voidsearch();//查询同学信息
intcount();//计算已记录信息数
structbook//结构体
voidsave(intn);//保存信息
voidmain_menu();//主菜单
voidshow_all();//显示所有信息
完成任务
显示所有信息
七、程序清单
//班级花名册维护。
//能够增加、删除、修改学生的信息。
#include
#include
#include
#include
#defineN50//宏定义
voidsave(intn);//保存信息
voidmain_menu();//班级花名册管理选项
voidset_up();//创建通讯录
voidadd_student();//添加新同学
voiddel_student();//删除同学信息
voidshow_all();//显示所有信息
voidchange();//修改同学信息
voidsearch();//查询同学信息
voidsort();//学号排序
intcount();//计算已记录信息数
structbook//花名册结构体
{
charname[9];//姓名
charxuehao[15];//学号
charnumber[15];//电话号码
charaddress[40];//地址
charnote[79];//备注
}fbook[N];
//班级花名册管理菜单
voidmain_menu(){
intchoice,w,j=0;
do
{
printf("\n");
printf("\t\t★★★★★★★★★★★★★★★★★\n");
printf("\t\t★↓↓↓↓↓★\n");
printf("\t\t★班级花名册★\n");
printf("\t\t★★\n");
printf("\t\t★1.创建通讯录.2.添加新同学.★\n");
printf("\t\t★★\n");
printf("\t\t★3.删除同学信息.4.显示所有信息.★\n");
printf("\t\t★★\n");
printf("\t\t★5.修改同学信息.6.查询同学信息.★\n");
printf("\t\t★★\n");
printf("\t\t★7.进行学号排序.8.关闭花名册.★\n");
printf("\t\t★★\n");
printf("\t\t★★★★★★★★★★★★★★★★★\n");printf("\t\t温馨提示:
若连续三次输入错误,系统将自动关闭!
!
!
\n");
printf("\n\t\t\t\t请选择:
");
scanf("%d",&choice);
if(choice<1||choice>8)//判断是否选择了错误的选项
{
w=1;
if(j==1)
printf("请注意,已连续两次输入错误,连续三次输入错误系统将自动关闭!
请确定后重新选择!
\n\n");
if(j==2)
printf("已连续三次输入错误,系统自动关闭!
\n");
if(j==0)
printf("输入有误,请从新选择!
\n");
j++;
}
else
w=0;
if(j==3)//若连续三次输入错误,自动关闭系统
exit(0);
}while(w==1);//正确选择,退出循环
switch(choice)
{
case1:
set_up();//创建通讯录
break;
case2:
add_student();//添加新同学
break;
case3:
del_student();//删除同学信息
break;
case4:
show_all();//显示所有信息
break;
case5:
change();//修改同学信息
break;
case6:
search();//查询同学信息
break;
case7:
sort();//学号排序
break;
case8:
printf("谢谢使用班级花名册,欢迎下次使用!
\n");//关闭花名册
exit(0);
break;
}
}
//
voidchange_xx(inti,intn)
{
intc,j=0;
do
{
printf("请选择需要修改的选项:
\n1.姓名2.学号3.电话号码4.地址5.备注6.修改全部\n\n");
printf("请选择:
");
scanf("%d",&c);
if(c>6||c<1)
{
if(j==1)
printf("请注意,已连续两次输入错误,连续三次输入错误系统将自动关闭!
请确定后重新选择!
\n\n");
if(j==2)
printf("已连续三次输入错误,系统自动关闭!
\n");
if(j==0)
printf("输入有误,请从新选择!
\n");
j++;
}
if(j==3)//若连续三次输入错误,自动关闭系统
exit(0);
}while(c>6||c<1);
printf("请根据提示输入新的信息:
\n");
switch(c)
{
case1:
printf("姓名:
");
scanf("%s",fbook[i].name);
break;
case2:
printf("学号:
");
scanf("%s",fbook[i].xuehao);
break;
case3:
printf("电话号码:
");
scanf("%s",fbook[i].number);
break;
case4:
printf("地址:
");
scanf("%s",fbook[i].address);
break;
case5:
printf("备注:
");
scanf("%s",fbook[i].note);
break;
case6:
printf("姓名\t学号\t\t电话号码\t地址\t\t备注\n");
scanf("%s%s%s%s%s",fbook[i].name,fbook[i].xuehao,fbook[i].number,fbook[i].address,fbook[i].note);
}
}
//主函数
voidmain()
{
main_menu();//调用主菜单函数
}
//创建通讯录
voidset_up()
{
intn=1;
printf("请根据提示输入信息!
\n");
printf("姓名\t学号\t\t电话号码\t地址\t备注\n");
scanf("%s%s%s%s%s",fbook[0].name,fbook[0].xuehao,fbook[0].number,fbook[0].address,fbook[0].note);
save(n);
printf("通讯录创建成功!
\n");
main_menu();
}
//添加新同学
voidadd_student()
{
intn,x;
n=count();
do
{
printf("请根据提示输入信息,按Enter结束!
\n");
printf("姓名\t学号\t\t电话号码\t地址\t备注\n");
scanf("%s%s%s%s%s",fbook[n].name,fbook[n].xuehao,fbook[n].number,fbook[n].address,fbook[n].note);
save(n+1);
printf("已保存!
\n\n");
n++;
printf("是否继续添加?
(1).是
(2).返回菜单\n请选择:
");
scanf("%d",&x);
}while(x==1);//判断是否继续进行添加操作
main_menu();//返回主菜单
}
//删除学生信息
voiddel_student()
{
structbooks;
inti,n,k=-1;
intj=0,d=0,d1,d2;
n=count();
do
{
do
{
printf("请输入要删除的同学姓名:
");
scanf("%s",s.name);
for(i=0;i if(strcmp(s.name,fbook[i].name)==0)//查找所要删除同学信息的姓名 { k=i; s=fbook[i]; d++;//计算此姓名同学个数 } if(d>1)//若存在相同姓名,则进一步查找 { printf("姓名\t学号\t\t电话号码\t地址\t备注\n"); for(i=0;i if(strcmp(s.name,fbook[i].name)==0) printf("%s\t%s\t%s\t%s\t\t%s\n",fbook[i].name,fbook[i].xuehao,fbook[i].number,fbook[i].address,fbook[i].note); printf("因有同学姓名相同,请输入要删除的同学学号: "); scanf("%s",s.xuehao); for(i=0;i if(strcmp(s.xuehao,fbook[i].xuehao)==0) { k=i; s=fbook[i]; } } if(k==-1)//判断是否输入错误 { if(j==1) printf("请注意,已连续两次输入错误,连续三次输入错误系统将自动关闭! 请确定后重新输入! \n\n"); if(j==2) printf("已连续三次输入错误,系统自动关闭! \n"); if(j==0) printf("没有此同学记录,请重新输入! \n\n"); j++;//计算连续输入错误次数 } if(j==3)//若连续三次输入错误,自动关闭系统 exit(0); }while(k==-1);//找到所要查找同学,退出循环 printf("姓名\t学号\t\t电话号码\t地址\t备注\n"); printf("%s\t%s\t%s\t%s\t%s\n",fbook[k].name,fbook[k].xuehao,fbook[k].number,fbook[k].address,fbook[k].note); printf("确定删除此同学信息? (1).是 (2).取消并返回菜单\n请选择: ");· scanf("%d",&d1); if(d1==1)//删除同学信息并保存 { fbook[k].name[0]='\0'; save(n); } else//取消删除命令并返回主菜单 break; printf("已删除.\n\n"); printf("是否继续操作? (1).是 (2).否,返回菜单\n请选择: "); scanf("%d",&d2); }while(d2==1);//判断是否继续进行删除操作 main_menu(); } //显示所有信息 voidshow_all() { intn,i; n=count(); printf("姓名\t学号\t\t电话号码\t地址\t备注\n"); for(i=0;i printf("%s\t%s\t%s\t%s\t%s\n",fbook[i].name,fbook[i].xuehao,fbook[i].number,fbook[i].address,fbook[i].note); printf("共有%d记录.\n",n); printf("按任意键返回菜单! \n"); getch();//任意键 main_menu(); } //查询同学信息 voidsearch() { structbooks; intk,i,n; intj=0,d1; n=count(); do { k=-1; do { printf("请输入要查询的同学姓名: "); scanf("%s",s.name); for(i=0;i if(strcmp(s.name,fbook[i].name)==0)//输出所有符合要求的同学信息 { k=i; s=fbook[i]; printf("姓名\t学号\t\t电话号码\t地址\t备注\n"); printf("%s\t%s\t%s\t%s\t%s\n\n",fbook[k].name,fbook[k].xuehao,fbook[k].number,fbook[k].address,fbook[k].note); } if(k==-1)//判断是否输入错误 { if(j==1) printf("请注意,已连续两次输入错误,连续三次输入错误系统将自动关闭! 请确定后重新输入! \n\n"); if(j==2) printf("已连续三次输入错误,系统自动关闭! \n"); if(j==0) printf("没有此同学记录,请重新输入! \n\n"); j++;//计算连续输入错误次数 } if(j==3)//若连续三次输入错误,自动关闭系统 exit(0); }while(k==-1);//正确查找,输出信息并退出循环 printf("是否继续查询? (1).是 (2).否,返回菜单\n请选择: "); scanf("%d",&d1); }while(d1==1);//判断是否继续进行查询操作 main_menu(); } //修改同
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 程序