C语言课程设计报1Word下载.docx
《C语言课程设计报1Word下载.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报1Word下载.docx(15页珍藏版)》请在冰点文库上搜索。
![C语言课程设计报1Word下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/6d0dc349-7f2c-400e-bd7d-272b46296496/6d0dc349-7f2c-400e-bd7d-272b462964961.gif)
stdio.h>
#include<
string.h>
stdlib.h>
conio.h>
windows.h>
/*颜色设置*/
structinfo/*学生信息*/
{
charnum[16];
/*学号*/
charname[15];
/*姓名*/
charsex[20];
/*性别*/
charbirthday[20];
/*出生年月*/
charhoppy[20];
/*爱好*/
charduty[15];
/*职务*/
charaddr[30];
/*地址*/
charphone[15];
/*电话*/
chargrade[20];
/*操行分*/
};
voidmenu()/*主管登录界面*//*菜单选择函数*/
{/*n记录所选菜单项*/
system("
cls"
);
/*清屏*/
puts("
\t\t\t\t\t\t\t\t\t\t************************************************************************\n"
\t\t学生信息管理系统"
\t\t*********************请选择*******************\n"
\t\t\t\t1.信息输入"
\t\t\t\t2.信息显示"
\t\t\t\t3.信息查询"
\t\t\t\t4.信息修改"
\t\t\t\t5.信息删除"
\t\t\t\t6.菜单\n"
\t\t**********************************************\n"
}
voidappend()/*学生信息输入函数*/
structinfoinfo;
/*定义结构体类型info为structinfo型*/
FILE*fp;
charch;
if((fp=fopen("
inform.txt"
"
wb"
))==NULL)/*"
ab"
为信息追加标识;
此意为需要写入的文件夹为空或内存已满的情况会返回一个空*/
{
printf("
\t无法打开文件\a"
getch();
/*相当于scanf,接收字符用*/
exit
(1);
/*直接关闭窗口,即跳出执行框*/
}
do
//
\t学号:
"
gets(info.num);
getchar();
\t姓名:
gets(info.name);
getchar();
\t性别[男/女]:
gets(info.sex);
\t出生日期:
gets(info.birthday);
\t爱好:
gets(info.hoppy);
\t职务:
gets(info.duty);
\t操行分:
gets(info.grade);
\t地址:
gets(info.addr);
\t电话:
gets(info.phone);
fwrite(&
info,sizeof(info),1,fp);
\t是否继续?
(Y/N):
[]\b\b\a"
ch=getchar();
/*接收空格*/
while(ch=='
Y'
||ch=='
y'
/*注意有一个;
号,此意为若输入Y则返回继续执行一次‘否则执行下一步*/
fclose(fp);
voidprint1()/*显示函数*/
%-8s%-10s%-8s%-12s%-15s%-8s%-15s%-15s%-10s\n"
学号"
姓名"
性别"
出生年月"
年级"
职务"
操行分"
地址"
电话号码"
voidprint2(structinfoinfo)
%-8s%-10s"
info.num,info.name);
%-8s"
info.sex);
printf("
%-4s"
info.birthday)
%-8s%-15s"
info.duty,info.grade);
%-15s%-10s\n"
info.addr,info.phone);
voiddisplay()/*学生信息显示函数*/
inttotal=0;
/*人数统计*/
rb"
))==NULL)
\t无法打开文件!
while(fread(&
info,sizeof(info),1,fp)==1)/*正确返回1,错误返回-1*/
total++;
if(total==1)
print1();
print2(info);
if((total!
=0)&
&
(total%5==0))/*界面优化0条记录或超过5条记录才执行下一步*/
\n\n\t按任意键继续......"
\n\n"
voidsearch()/*信息查询函数*/
FILE*fp;
intflag;
/*flag为1按编号查询,flagg为2按姓名查询*/
/*记录符合条件的记录的个数*/
charch[10];
charf;
))==NULL)/*"
为只读*/
\t不能打开文件!
rewind(fp);
/*注意:
rewind不是文件指针而是文件内部的位置指针,随着对文件的读写文件的位置指针(指向当前读写字节)向后移动。
而文件指针是指向整个文件,如果不重新赋值文件指针不会改变*/
\n\n请选择查询方式(1:
按学号查询2:
按姓名查询):
[]\b\b"
while
(1)
scanf("
%d"
&
flag);
if(flag<
1||flag>
2)/*flag为1按编号查询,flagg为2按姓名查询*/
输入错误,请重新输入(1:
else
break;
if(flag==1)/*按编号查询*/
charxuehao[16];
请输入你要查询的学号:
gets(xuehao);
total=0;
/*符合条件的记录数*/
info,sizeof(info),1,fp)==1)
if(strcmp(xuehao,info.num)==0)
else/*按姓名进行查询*/
请输入你要查询的姓名:
gets(ch);
if(strcmp(ch,info.name)==0)
是否继续查找?
f=getchar();
while(f=='
||f=='
voidmodify()/*信修改函数*/
FILE*fp1,*fp2;
if((fp1=fopen("
为只写*/
\t无法打开文件!
if((fp2=fopen("
temp.txt"
请输入你想要修改的学号:
flag=0;
info,sizeof(info),1,fp1)==1)
\n\n请输入新的信息:
\n"
\t性别(男/女):
\t生日:
\t爱好:
\t电话号码:
flag=1;
info,sizeof(info),1,fp2);
fclose(fp1);
fclose(fp2);
if(flag==1)
信息修改成功!
remove("
/*自动移除原文件*/
rename("
/*将新文件名称命名为原文件名*/
抱歉,未查询到相关记录!
是否继续修改?
voidDelete()/*信息删除函数*/
\t无法创建文件!
请输入需要删除的学号:
/*移除*/
/*重命名*/
\n删除成功!
\n继续删除?
[Y]\n任意键退出!
intmain()
menu();
chart;
t=getchar();
switch(t)
case'
1'
:
append();
break;
//输入函数
2'
display();
//显示函数
3'
search();
//查询函数
4'
modify();
//修改函数
5'
Delete();
//删除函数
6'
//菜单
return0;
心得体会:
其实写代码要有耐心,有的知识点可能我们不熟悉,那是因为我们没有经常练习,用得多了,自然也就会了,没有什么特殊的。
要勤加联系自己没掌握的,要让自己变得强大。