C语言课程设计.docx

上传人:b****6 文档编号:9233531 上传时间:2023-02-03 格式:DOCX 页数:18 大小:17.80KB
下载 相关 举报
C语言课程设计.docx_第1页
第1页 / 共18页
C语言课程设计.docx_第2页
第2页 / 共18页
C语言课程设计.docx_第3页
第3页 / 共18页
C语言课程设计.docx_第4页
第4页 / 共18页
C语言课程设计.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

C语言课程设计.docx

《C语言课程设计.docx》由会员分享,可在线阅读,更多相关《C语言课程设计.docx(18页珍藏版)》请在冰豆网上搜索。

C语言课程设计.docx

C语言课程设计

C语言与程序设计课程设计

 

学生籍贯信息记录簿设计

 

学院信息工程系

班级物联1301班

学号131408119

姓名滕玲

 

一.设计目的

该软件主要是编辑一个学生籍贯信息记录簿记录每个学生信息,包括:

学号、姓名、籍贯。

具体功能:

1.创建信息链表并以磁盘文件保存;

2.读取磁盘文件并显示输出所有学生的籍贯信息;

3.按学号或姓名查询其籍贯;

4.按籍贯查询并输出该籍贯的所有学生;

5.能添加、删除和修改学生的籍贯信息;

二.总体设计

三.详细设计

1.学生基本信息的录入

这部分的功能主要包括信息的录入,首先按程序提示输入学生的学号,姓名,籍贯等。

在录入数据的同时,系统将对信息的合法性进行检验。

若用户输入不合法的信息,则被系统要求重新输入;若合法性成立则录入完毕后系统将返回主页面。

主页面还有显示学生的全部信息,并且这些信息都会写到你所指定的文本文件中。

2.显示学生信息

此功能是将原录入的学生信息读出,并在屏幕上显示出来,并且录入到你所指定的文本文件中。

3.学生信息读取

进入该项功能界面后,用户可以对学生的个人信息进行查看,并且录入到你所指定的文本文件中。

4.按学号或姓名查找学生信息

此项功能可以根据用户输入的选择查处该学生的所有信息,并且录入到你所指定的文本文件中。

5.删除和修改个人信息

选择此项功能后,系统将会自动在屏幕上显示按学号录入原来同学的个人信息,输入后进行修改,并且录入到你所指定的文本文件中。

6.退出系统,结束任务

 

四.调试与测试

在VisualC++6.0环境下输入代码并进行调试和正确运行

五.源程序清单和执行结果

#include

#include

#include

#defineLENsizeof(structStudent)

structStudent

{

charnum[21];

charname[256];

charaddress[562];

structStudent*next;

};

intn;//n为全局变量,本文件模块中各函数均可使用它

structStudent*creat()//定义函数。

此函数返回一个指向链表头的指针

{

structStudent*head;

structStudent*p1,*p2;

n=0;

p1=p2=(structStudent*)malloc(LEN);

printf("请依次输入学生的信息,输入学号为零时退出。

\n");

printf("请输入学生的学号:

\n");

gets(p1->num);

printf("请输入学生的姓名:

\n");

gets(p1->name);

printf("请输入学生的地址:

\n");

gets(p1->address);

head=NULL;

while(p1->num[0]!

='0')//当学号是0时,退出

{

n=n+1;

if(n==1)

head=p1;

else

p2->next=p1;

p2=p1;

p1=(structStudent*)malloc(LEN);//开辟动态存储区,把起始地址付给p1

printf("请输入学生的学号:

\n");

gets(p1->num);//输入其他学生的学号和成绩

printf("请输入学生的姓名:

\n");

gets(p1->name);

printf("请输入学生的地址:

\n");

gets(p1->address);

}

p2->next=NULL;

system("cls");

return(head);

}

voidprint_save(structStudenthead)

{

FILE*fp;

structStudent*p;

fp=fopen("D:

\\stduent.txt","ab+");//打开文件

if(fp==NULL)

{

printf("文件无法打开\n");

exit(0);

}

printf("\n现在,有%d条记录,分别是:

\n",n);

p=&head;

if(&head!

=NULL)

do

{

printf("\n学号:

");

puts(p->num);

printf("\n姓名:

");

puts(p->name);

printf("\n地址:

");

puts(p->address);

fseek(fp,0,2);

if(fwrite(p,sizeof(structStudent),1,fp)!

=1)

printf("文件无法写入\n");

p=p->next;

}while(p!

=NULL);

fclose(fp);//关闭文件

getchar();

system("cls");

}

structStudent*pt;//定义一个Student类型的指针

charcomp[3];//comp为保存输入的变量

intmain()//一个调用这个creat函数的main函数c

{

voidShowView();//界面显示

voidname_surch();//按姓名查找

voidnum_surch();//按学号查找

voidNativePlace_surch();//按籍贯查找

voidDelete_shiyan();//删除学生信息

voidmodification_shiyan();//修改学生信息

voidfileout(structStudent*p);//文件输出

voidprint_save(structStudenthead);

while

(1)

{

ShowView();

if(strnicmp(comp,"1",3)==0)//strnicmp比较两个字符串的函数

{

pt=creat();//函数返回链表第一个结点的地址

}

elseif(strnicmp(comp,"6",3)==0)

{

print_save(*pt);

}

elseif(strnicmp(comp,"3",3)==0)//输出文件内容

{

fileout(pt);

}

elseif(strnicmp(comp,"2",3)==0)

{

name_surch();

}

elseif(strnicmp(comp,"7",3)==0)

{

num_surch();

}

elseif(strnicmp(comp,"9",3)==0)

{

//modification();

modification_shiyan();//修改学生信息

}

elseif(strnicmp(comp,"4",3)==0)

{

//Delete();

Delete_shiyan();

}

elseif(strnicmp(comp,"5",3)==0)

{

showSzechwan_No();

}

elseif(strnicmp(comp,"8",3)==0)

{

NativePlace_surch();

}

elseif(strnicmp(comp,"0",3)==0)

{

break;

}

else

{

printf("输入错误!

\n");

}

getchar();

system("cls");

}

return0;

}

voidfileout(structStudent*p)

{

FILE*fp;

printf("现在有%d条记录,分别是:

\n",n);

fp=fopen("D:

\\stduent.txt","rb");//0x00429af0

if(fp==NULL)

{

printf("文件无法打开\n");

exit(0);

}

rewind(fp);

while(!

feof(fp))

{

fread(p,sizeof(structStudent),1,fp);//从文件中读取一块数据

printf("%-15s",p->num);

printf("%-15s",p->name);

printf("%-15s",p->address);

puts("\n");

}

fclose(fp);

getchar();

system("cls");

}

voidShowView()//主菜单

{

printf("*******************************************************************************\n");

printf("**********************欢迎进入学生籍贯信息记录簿*******************************\n");

printf("*******************************************************************************\n");

printf("****1、cin添加*****\n");

printf("****2、namesurch按名字搜索*****\n");

printf("****3、fileout显示文件中的信息*****\n");

printf("****4、delete删除学生信息*****\n");

printf("****5、showSzechwan_No分别显示四川和非四川籍学生并非别存盘*****\n");

printf("****6、save保存当前信息*****\n");

printf("****7、numsurch按学号搜索*****\n");

printf("****8、nativeplace安籍贯查询*****\n");

printf("****9、modif修改学生信息*****\n");

printf("****0、break退出*****\n");

printf("*******************************************************************************\n");

printf("********************请输入您的选择¥¥:

");

gets(comp);

system("cls");//清屏

}

voidname_surch()

{

FILE*fp;

charsurch[256];

printf("请输入要查询的人的名字:

\n");

gets(surch);

fp=fopen("D:

\\stduent.txt","r");//0x00429af0

if(fp==NULL)

{

printf("不能打开文件\n");

exit(0);

}

rewind(fp);//指向文件的开始

while(!

feof(fp))//查找

{

Studenta;

while(!

feof(fp))

{

fread(&a,sizeof(Student),1,fp);//从p指向的文件读入一组数据

if(!

strcmp(a.name,surch))

{

printf("%s,%s,%s\n",a.num,a.name,a.address);

break;

}

}

if(!

feof(fp))

{return;}

else

{

printf("查无此人····\n");

}

}

fclose(fp);

getchar();

system("cls");

}

voidnum_surch()

{

FILE*fp;

charsurch[256];

printf("请输入要查询的人的学号:

");

gets(surch);

fp=fopen("D:

\\stduent.txt","rb");//0x0042aab8

if(fp==NULL)

{

printf("ERROR");

exit(0);

}

rewind(fp);//指向文件的开始

while(!

feof(fp))//查找

{

Studenta;

while(!

feof(fp))

{

fread(&a,sizeof(Student),1,fp);//从p指向的文件读入一组数据

if(!

strcmp(a.num,surch))

{

printf("%s,%s,%s\n",a.num,a.name,a.address);

break;

}

}

if(!

feof(fp))

{return;}

else

{

printf("查无此人····\n");

}

}

fclose(fp);

getchar();

system("cls");

voidNativePlace_surch()//按籍贯查询

{

FILE*fp;

charsurch[256];

printf("请输入要查询的人的籍贯:

\n");

gets(surch);

fp=fopen("D:

\\stduent.txt","rb");//0x00429af0

if(fp==NULL)

{

printf("文件打不开\n");

exit(0);

}

rewind(fp);//指向文件的开始

Studenta;

while(!

feof(fp))

{

fread(&a,sizeof(structStudent),1,fp);//从p指向的文件读入一组数据

if(!

strcmp(a.address,surch))//相当于strcmp(a.address,surch)==0

{

printf("%s,%s,%s\n",a.num,a.name,a.address);

}

}

if(!

feof(fp))

{return;}

fclose(fp);

getchar();

system("cls");

}

voidDelete_shiyan()//删除学生信息

{

FILE*fp;

FILE*fptemp;

charsurch[256];

printf("请输入要删除的人的学号:

\n");

gets(surch);

fp=fopen("D:

\\stduent.txt","rb");//0x00429af0

fptemp=fopen("D:

\\temp.txt","wb");

if(fp==NULL)

{

printf("文件打不开\n");

exit(0);

}

Studenta;

while(!

feof(fp))

{

mark:

fread(&a,sizeof(structStudent),1,fp);//从p指向的文件读入一组数据fp=0x0042aab8

if(0==strcmp(a.num,surch))

{

charp;

printf("%s,%s,%s\n",a.num,a.name,a.address);

printf("如果以上信息与你要删除的人的信息对应,请输入(y/n):

\n");

scanf("%c",&p);

if('Y'==p||'y'==p)

{

gotomark;

}

}

if(strcmp(a.num,surch)!

=0)

{

fwrite(&a,sizeof(structStudent),1,fptemp);

}

}

fclose(fp);

fclose(fptemp);

FILE*aa;

FILE*bb;

aa=fopen("D:

\\stduent.txt","wb");

bb=fopen("D:

\\temp.txt","rb");

while(!

feof(bb))

{

fread(&a,sizeof(structStudent),1,bb);

fwrite(&a,sizeof(structStudent),1,aa);

}

getchar();

system("cls");

}

voidmodification_shiyan()//修改学生信息

{

FILE*fp;

FILE*fptemp;

structStudenta;

charsurch[256];

printf("请输入要修改的人的学号:

\n");

gets(surch);

fp=fopen("D:

\\stduent.txt","rb");//0x0042aab8

fptemp=fopen("D:

\\temp.txt","wb");

if(fp==NULL)

{

printf("文件打不开\n");

exit(0);

}

rewind(fp);//指向文件的开始

while(!

feof(fp))

{

fread(&a,sizeof(structStudent),1,fp);//从p指向的文件读入一组数据fp=0x0042aab8

if(0==strcmp(a.num,surch))

{

charp;

printf("%s,%s,%s\n",a.num,a.name,a.address);

printf("如果以上信息与你要修改的人的信息对应,请输入(y/n):

\n");

scanf("%c",&p);

if('Y'==p||'y'==p)

{

printf("请输入要修改成的信息(学号、姓名、籍贯):

\n");getchar();

printf("学号:

");

gets(a.num);

printf("姓名:

");

gets(a.name);

printf("地址:

");

gets(a.address);

}

}

fwrite(&a,sizeof(structStudent),1,fptemp);

}

fclose(fp);

fclose(fptemp);

FILE*bb;

FILE*pp;

bb=fopen("D:

\\stduent.txt","wb");//0x0042aab8

pp=fopen("D:

\\temp.txt","rb");

while(!

feof(pp))

{

fread(&a,sizeof(structStudent),1,pp);

fwrite(&a,sizeof(structStudent),1,bb);

}

getchar();

getchar();

system("cls");

}

}

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

当前位置:首页 > 总结汇报 > 实习总结

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

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