c语言课程设计11级Word文档下载推荐.docx
《c语言课程设计11级Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《c语言课程设计11级Word文档下载推荐.docx(20页珍藏版)》请在冰豆网上搜索。
包含if和switch控制语句、while和for循环语句及嵌套循环、break和continue控制语句;
4.数组:
定义姓名、性别、学号数组等。
1.3功能要求
要求:
学生信息包括:
学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
试设计一学生信息管理系统,使之能提供以下功能:
(1)系统以菜单方式工作;
(2)学生信息录入功能(学生信息用文件保存)---输入;
(3)学生信息浏览功能---输出;
(4)查询、排序功能:
按学号、姓名进行排序和查询。
2总体设计
2.1算法设计
将题目分成若干模块或部分、各模块或部分的算法设计;
本系统需要实现的功能要求:
利用switch语句设计如图1所示的主菜单:
请输入选项(A~E)
*****************主菜单*****************
输入学生信息...................A
输出学生信息...................B
查询学生信息...................C
排序学生信息...................D
退出程序.......................E
图1学生信息管理系统主菜单
2、选择A后,调用输入函数,进入函数后分别从键盘获取学号,姓名,年龄,性别,出生年月,地址,电话,E-mail如图2
请输入这个学生的学号
请输入这个学生的名字
请输入这个学生的年龄
请输入这个学生的性别:
<
MorF>
请输入这个学生的出生年月
请输入这个学生的地址
请输入这个学生的电话
请输入这个学生的E-mail
图2输入子菜单
3、选择C后,调用查询函数,进入函数后利用switch语句实现一个如图3所示的菜单,该菜单中每个选项调用一个函数。
****菜单*****
A按学号查询.
B按姓名查询.
C返回主菜单.
*************
请输入你的选择:
图3查找子菜单
4、根据所选菜单编写相应代码:
1)输入函数input:
利用循环输入的方式,将有关信息存入结构数组,结构数组根据实际的人数,采用动态方式建立……
2)输出函数output:
利用循环输出的方式,将选择要输出的人的信息显示出来。
3)查询函数search:
利用switch语句,进行选择按学号或按姓名查询。
4)排序函数order:
利用switch语句,进行选择按学号或按姓名排序。
主菜单
输入
输出
查询
排序
退出
按学号查询
按姓名查询
图4成绩管理系统模块图
2.2部分模块流程图
3详细设计
3.1程序代码设计
内容:
分模块(函数)简述其功能;
模块中使用的各变量的类型及作用,包括声明数据类型(如结构体);
设计过程;
并列出该模块(函数)的代码。
3.2输入模块(模块名宋体粗小四号,其余宋体小四号)
1)函数原形:
voidinput()
2)功能:
利用for循环语句和scanf、gets、fflush函数完成对结构数组的输入,存放m个学生的信息(学号,姓名,年龄,性别,出生年月,地址,电话,E-mail)。
3)变量及类型:
charnum[9],name[20]:
字符数组,接收main函数传过来的一维数组的首地址。
inti,m:
循环控制变量。
voidinput()/*定义输入函数*/
{
system("
cls"
);
inti,m;
FILE*fp;
printf("
\n请输入学生的总人数:
"
scanf("
%d"
&
m);
fflush(stdin);
for(i=0;
i<
m;
i++)
{
printf("
请输入第%d学生信息.\n"
i+1);
请输入这个学生的学号:
\n"
gets(stu[i].num);
fflush(stdin);
请输入这个学生的名字:
gets(stu[i].name);
请输入这个学生的年龄:
gets(stu[i].age);
(MorF)\n"
gets(stu[i].sex);
请输入这个学生的出生年月:
gets(stu[i].brith);
请输入这个学生的地址:
gets(stu[i].add);
请输入这个学生的电话:
gets(stu[i].phone);
请输入这个学生的E-mail:
gets(stu[i].Email);
}
if((fp=fopen("
stud.txt"
"
a"
))==NULL)/*打开或新建文件*/
打开文件失败!
return;
}
i++)/*保存文件*/
if(fwrite(&
stu[i],sizeof(STU),1,fp)!
=1)
printf("
文件写入错误!
fclose(fp);
保存学生信息成功!
按任意键返回主菜单!
getch();
}
4调试运行
(1)调试:
(2)系统主界面:
(3)输入学生信息界面:
(4)输出学生信息界面:
(5)查询学生信息界面:
(6)排序学生信息界面:
5:
程序清单
#include<
stdio.h>
string.h>
stdlib.h>
conio.h>
structstudent/*定义结构体类型数据类型全为字符型*/
charnum[9],name[20];
charage[3];
charsex[2];
charbrith[10],add[20],phone[12],Email[18];
};
typedefstructstudentSTU;
STUstu[100];
voidinput();
/*声明输入函数*/
voidoutput();
/*声明输出函数*/
voidsearch();
/*声明查询函数*/
voidsearch_num();
/*声明按学号查询函数*/
voidsearch_name();
/*声明按姓名查询函数*/
voidorder();
/*声明排序函数*/
voidorder_num();
/*声明按学号排序函数*/
voidorder_name();
/*声明按姓名排序函数*/
voidsave(intn);
/*声明保存函数*/
intopenn();
/*声明打开文件函数*/
voidmain()/*主函数*/
{
chara;
/*定义字符数据用于选择选项*/
intflag=0;
/*定义整型数据用于结束while循环*/
color75"
while
(1)
system("
\n\t\t\t*欢迎来到学生信息管理系统*"
\n\n\t\t*****************主菜单*****************\n\n\n"
\t\t输入学生信息...................A\n\n"
\t\t输出学生信息...................B\n\n"
\t\t查询学生信息...................C\n\n"
\t\t排序学生信息...................D\n\n"
\t\t退出程序.......................E\n\n\n"
\t\t****************************************\n\n"
\t\t请输入你的选择:
scanf("
%c"
a);
switch(a)/*调用函数完成各种功能*/
{
case'
A'
:
input();
break;
B'
output();
C'
search();
D'
order();
E'
flag=1;
default:
printf("
\t\tError!
\t\t按任意键返回主菜单\n"
getch();
}
if(flag)break;
intopenn()/*定义打开文件函数,并返回文件中学生个数*/
inti;
r"
))==NULL)
打开文件失败.\n"
main();
!
feof(fp);
fread(&
stu[i],sizeof(STU),1,fp);
fclose(fp);
return(i-1);
voidsave(intn)/*定义保存函数*/
w"
保存函数不能打开这个文件!
n;
文件输入错误!
voidoutput()/*定义输出函数*/
inti,n;
n=openn();
/*调用打开文件函数并将学生信息个数赋给n*/
\n%-9s%-12s%-5s%-5s%-9s%-10s%-12s%-18s\n"
学号"
姓名"
年龄"
"
性别"
出生年月"
地址"
电话"
E-mail"
%-9s%-12s%-5s%-5s%-9s%-10s%-12s%-18s\n"
stu[i].num,stu[i].name,
stu[i].age,stu[i].sex,stu[i].brith,stu[i].add,stu[i].phone,stu[i].Email);
\n按任意键返回主菜单!
getch();
voidsearch()/*定义查询主函数类型与主函数相同*/
\n****菜单*****\n"
\n(A按学号查询.\n"
(B按姓名查询.\n"
(C返回主菜单.\n"
\n*************\n"
请输入你的选择:
switch(a)
search_num();
search_name();
选择错误!
voidsearch_num()/*定义按学号查询函数*/
intn,i,flag=0;
charnum[20];
\n请输入你想查询学生的学号:
%s"
num);
if(strcmp(stu[i].num,num)==0)
stu[i].age,stu[i].sex,stu[i].brith,stu[i].add,stu[i].phone,stu[i].Email);
flag=1;
if(flag==0)
没有要查询学生的信息!
\n按任意键返回菜单!
voidsearch_name()/*定义按姓名查询函数*/
charname[20];
\n请输入你想查询学生的姓名:
gets(name);
if(strcmp(stu[i].name,name)==0)
voidorder()/*定义排序主函数*/
\n(A按学号排序.\n"
(B按姓名排序.\n"
(D返回主菜单.\n"
order_num();
order_name();
voidorder_num()/*定义按学号排序函数*/
inti,j,n;
STUtemp;
n-1;
for(j=i+1;
j<
j++)
if(strcmp(stu[i].num,stu[j].num)>
0)
{
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
stu[i].age,stu[i].sex,stu[i].brith,stu[i].add,stu[i].phone,stu[i].Email);
\n按任意键继续.\n"
DOyouwanttosave?
Y)SaveN)Notsave.\n"
Yourchoice:
if(a=='
Y'
)
save(n);
Savesuccess!
elseprintf("
Exit!
}
voidorder_name()/*定义按姓名排序函数*/
"
if(strcmp(stu[i].name,stu[j].name)>
%-9s%-12s%-4s%-4s