题目:
此次课程设计的题目是通讯录管理系统
工具:
Microsoft Visual Studio 2010
一、系统功能基本要求
学生通讯录管理系统
1.学生通讯信息录入
2.学生通讯信息显示
3.学生通讯信息添加
4.学生通讯信息修改
5.学生通讯信息删除
6.学生通讯信息排序
7.指定学生通讯信息查询
0.结束运行
二、系统源代码
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
typedef struct
{
char num[12];
char name[8];
char sex[2];
int age;
char adds[10];
char phone[13];
char wechat[20];
}student;
#define P 10
void main()
{
void func0();
void func1();
void func2();
void func3();
void func4();
void func5();
void func6();
void func7();
int iItem;
func0();
scanf("%d",&iItem);
while(iItem)
{
switch(iItem)
{
case 1:func1();break;
case 2:func2();break;
case 3:func3();break;
case 4:func4();break;
case 5:func5();break;
case 6:func6();break;
case 7:func7();break;
default:printf("功能号错误,请重新输入!");
}
getch();
func0();
scanf("%d",&iItem);
}
system("pause");
}
void func0()
{
system("cls");
printf("\n\n");
printf("\t\t学生通讯录管理系统\n\n");
printf("\t\t 1.学生信息录入\n");
printf("\t\t 2.学生信息显示\n");
printf("\t\t 3.学生信息添加\n");
printf("\t\t 4.学生信息修改\n");
printf("\t\t 5.学生信息删除\n");
printf("\t\t 6.学生信息排序\n");
printf("\t\t 7.学生信息查询\n");
printf("\t\t 0.结束运行\n");
printf("\t\t请输入功能号(0-7)");
}
void func1()
{
FILE *fp;
student lzj[P];
int n,i;
if((fp=fopen("giao.txt","wb"))==NULL)
{
printf("不能建立giao.txt文件\n");
return;
}
printf("输入录入的学生人数:");
scanf("%d",&n);
printf("\n输入学生通讯信息:学号 姓名 性别 年龄 宿舍 手机号码 微信\n");
for(i=0;i<n;i++)
{
printf("第%d个学生的档案:",i+1);
scanf("%s%s%s%d%s%s%s",lzj[i].num,lzj[i].name,lzj[i].sex,&lzj[i].age,lzj[i].adds,lzj[i].phone,lzj[i].wechat);
}
for(i=0;i<n;i++)//将n个学生通讯信息写入文件
fwrite(&lzj[i],sizeof(student),1,fp);
fclose(fp);
}
void func2()
{
FILE *fp;
student lzj[P];
int n,i;
if((fp=fopen("giao.txt","rb"))==NULL)
{
printf("不能建立giao.txt文件\n");
return;
}
printf("输入显示的学生人数:");
scanf("%d",&n);
printf("记录号\t学号\t姓名\t性别\t年龄\t宿舍\t号码\t\t微信\n");
for(i=0;i<n;i++)
{
fread(&lzj[i],sizeof(student),1,fp);
printf("%d\t%s\t%s\t%s\t%d\t%s\t%s\t%s\n",i+1,lzj[i].num,lzj[i].name,lzj[i].sex,lzj[i].age,lzj[i].adds,lzj[i].phone,lzj[i].wechat);
}
fclose(fp);
}
void func3()
{
FILE *fp;
student lzj;
if((fp=fopen("giao.txt","ab+"))==NULL)
{
printf("不能打开giao.txt文件");
return;
}
printf("输入格式:学号 姓名 性别 年龄 宿舍 手机号码 微信\n");
printf("学生记录:");
scanf("%s%s%s%d%s%s%s",lzj.num,lzj.name,lzj.sex,&lzj.age,lzj.adds,lzj.phone,lzj.wechat);//获取一个学生记录
fwrite(&lzj,sizeof(student),1,fp);//将其写入文件
fclose(fp);
}
void func4()
{
FILE *fp;
student lzj[P],newlzj;
int i;
char num[12];
if((fp=fopen("giao.txt","rb+"))==NULL)
{
printf("不能打开giao.txt文件\n");
return;
}
printf("要修改某学号的学生信息:");
scanf("%s",num);
for(i=0;fread(&lzj[i],sizeof(student),1,fp);i++)
if(!strcmp(lzj[i].num,num)) break;
if(feof(fp))
{
printf("\t没有%s学号的学生\n",num);
return;
}
printf("记录号\t学号\t姓名\t性别\t年龄\t宿舍\t号码\t\t微信\n");
printf("%d\t%s\t%s\t%s\t%d\t%s\t%s\t%s\n",i+1,lzj[i].num,lzj[i].name,lzj[i].sex,lzj[i].age,lzj[i].adds,lzj[i].phone,lzj[i].wechat);
printf("输入格式:学号 姓名 性别 年龄 宿舍 号码 微信\n");
printf("第%d个记录:",i+1);
scanf("%s%s%s%d%s%s%s",newlzj.num,newlzj.name,newlzj.sex,&newlzj.age,newlzj.adds,newlzj.phone,newlzj.wechat);//获取新学生记录
fseek(fp,-(long)sizeof(student),SEEK_CUR);//指向修改记录开头
fwrite(&newlzj,sizeof(student),1,fp);//用newlzj覆盖当前记录
printf("修改后:\n");
fseek(fp,0,SEEK_SET);//显示修改后的文件数据
printf("记录号\t学号\t姓名\t性别\t年龄\t宿舍\t号码\t\t微信\n");
for(i=0;fread(&lzj[i],sizeof(student),1,fp)!=0;i++)
printf("%d\t%s\t%s\t%s\t%d\t%s\t%s\t%s\n",i+1,lzj[i].num,lzj[i].name,lzj[i].sex,lzj[i].age,lzj[i].adds,lzj[i].phone,lzj[i].wechat);
fclose(fp);
}
void func5()
{
FILE *fp;
student lzj[P];
int i,j,n;
char num[12];
if((fp=fopen("giao.txt","rb"))==NULL)
{
printf("不能打开giao.txt文件\n");
return;
}
printf("删除前\n");
printf("记录号\t学号\t姓名\t性别\t年龄\t宿舍\t号码\t\t微信\n");
for(n=0;fread(&lzj[n],sizeof(student),1,fp);n++)
printf("%d\t%s\t%s\t%s\t%d\t%s\t%s\t%s\n",n+1,lzj[n].num,lzj[n].name,lzj[n].sex,lzj[n].age,lzj[n].adds,lzj[n].phone,lzj[n].wechat);//n为lzj文件中记录数
printf("要删除某学号的学生信息:");
scanf("%s",num);
for(i=0;(strcmp(lzj[i].num,num)!=0&&i<n);i++)
if(i>=n)
{
printf("\t没有%s学号的学生\n",num);
return;
}
fclose(fp);//关闭后重新以w+模式打开文件
fp=fopen("giao.txt","w+");
if(n>1)//若原来文件只有一个记录,现已删除,不输出剩余记录
{
for(j=0;j<i;j++)
fwrite(&lzj[j],sizeof(student),1,fp);
for(j=i+1;j<n;j++)
fwrite(&lzj[j],sizeof(student),1,fp);
printf("删除后:\n");
fseek(fp,0,SEEK_SET);//显示删除后文件数据
printf("记录号\t学号\t姓名\t性别\t年龄\t宿舍\t号码\t\t微信\n");
for(i=0;fread(&lzj[i],sizeof(student),1,fp);i++)
printf("%d\t%s\t%s\t%s\t%d\t%s\t%s\t%s\n",i+1,lzj[i].num,lzj[i].name,lzj[i].sex,lzj[i].age,lzj[i].adds,lzj[i].phone,lzj[i].wechat);
}
fclose(fp);
}
void func6()
{
FILE *fp;
student lzj[P];
student t;
int i=0,j=0,n=0;
printf("输入排序的学生人数:");
scanf("%d",&n);
if((fp=fopen("giao.txt","rb"))==NULL)
{
printf("不能打开giao.txt文件\n");
return ;
}
printf("排序前:\n学号\t姓名\t性别\t年龄\t宿舍\t号码\t\t微信\n");
for(i=0;i<n;i++)
{
fread(&lzj[i],sizeof(student),1,fp);
printf("%s\t%s\t%s\t%d\t%s\t%s\t%s\n",lzj[i].num,lzj[i].name,lzj[i].sex,lzj[i].age,lzj[i].adds,lzj[i].phone,lzj[i].wechat);
}
fclose(fp);
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(strcmp(lzj[j].num,lzj[j+1].num)<0)
{
t=lzj[j];
lzj[j]=lzj[j+1];
lzj[j+1]=t;
}
printf("排序后:\n");
printf("学号\t姓名\t性别\t年龄\t宿舍\t号码\t\t微信\n");
if((fp=fopen("giao.txt","wb"))==NULL)
{
printf("不能打开giao.txt文件\n");
return ;
}
for(i=0;i<n;i++)
{
fwrite(&lzj[i],sizeof(student),1,fp);
printf("%s\t%s\t%s\t%d\t%s\t%s\t%s\n",lzj[i].num,lzj[i].name,lzj[i].sex,lzj[i].age,lzj[i].adds,lzj[i].phone,lzj[i].wechat);
}
fclose(fp);
}
void func7()
{
FILE *fp;
student lzj[P];
int i,n=0;
char name[12];
if((fp=fopen("giao.txt","rb"))==NULL)
{
printf("不能打开giao.txt文件\n");
return ;
}
while(!feof(fp))
if(fread(&lzj[n],sizeof(student),1,fp)==1)
n++;
fclose(fp);
if(n==0)
{
printf("没有信息记录!\n");
return;
}
printf("请输入要查找的学生人名:");
scanf("%s",name);
for(i=0;i<n;i++)
{
if(strcmp(name,lzj[i].name)==0)
{
printf("记录号\t学号\t姓名\t性别\t年龄\t宿舍\t号码\t\t微信\n");
printf("%d\t%s\t%s\t%s\t%d\t%s\t%s\t%s\n",i+1,lzj[i].num,lzj[i].name,lzj[i].sex,lzj[i].age,lzj[i].adds,lzj[i].phone,lzj[i].wechat);
}
}
}
三、系统主要功能界面
1.通讯信息的录入
2.通讯信息的显示
3.通讯信息的添加
4.通讯信息的修改
5.通讯信息的删除
6.通讯信息的排序
7.查询指定学生的通讯信息
0.退出系统
球球了,大哥们
拜拜