C语言大作业——学生通讯录管理系统

时间:2019-05-14 04:55:35下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《C语言大作业——学生通讯录管理系统》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《C语言大作业——学生通讯录管理系统》。

第一篇:C语言大作业——学生通讯录管理系统

#include #include //#define NULL 0 #define LEN sizeof(struct message)

struct message

//定义结构体

{

char name[15];

char number[15];

char phone[15];

char qq[13];

char addr[25];

struct message *next;

//指向下一数据

};

int n;

void creat()

//建立电话簿

{

int num;char choice[5]={'2'};

FILE *fp;

struct message *head;

struct message *p,*q;

n = 0;

p = q =(struct message *)malloc(LEN);

fp=fopen(“通讯录1.txt”,“wb”);

system(“cls”);

printf(“n请输入姓名:”);

scanf(“%s”,p->name);

printf(“n请输入电话号码:”);

scanf(“%s”,p->phone);

printf(“n请输入学号:”);

scanf(“%s”,p->number);

printf(“n请输入QQ:”);

scanf(“%s”,p->qq);

printf(“n请输入住址:”);

scanf(“%s”,p->addr);

fwrite(p,LEN,1,fp);

fclose(fp);

head = 0;

num = 1;

while(num!=0)

{

n = n+1;

if(n==1)head = p;

else q->next = p;

q = p;

p =(struct message *)malloc(LEN);

//分配存储区

while(choice[0]!='1' && choice[0]!='0')

//判断是否继续

{

printf(“n1 继续输入n 0 返回n”);

printf(“请选择操作:”);

scanf(“%s”,choice);

}

switch(choice[0])

{

case '1':

{

fp=fopen(“通讯录1.txt”,“rb”);

system(“cls”);

printf(“n请输入姓名:”);

scanf(“%s”,p->name);

printf(“n请输入电话号码:”);

scanf(“%s”,p->phone);

printf(“n请输入学号:”);

scanf(“%s”,p->number);

printf(“n请输入QQ:”);

scanf(“%s”,p->qq);

printf(“n请输入住址:”);

scanf(“%s”,p->addr);

fwrite(p,LEN,1,fp);

fclose(fp);

choice[0] = '2';

}

continue;

case '0': num = 0;

system(“cls”);

}

}

q->next = 0;}

void add()

//添加通讯录 {

int num;char choice[5]={'2'};

FILE *fp;

struct message *head;

struct message *p,*q;

n = 0;

p = q =(struct message *)malloc(LEN);

fp=fopen(“通讯录1.txt”,“ab”);

system(“cls”);

printf(“n请输入姓名:”);

scanf(“%s”,p->name);

printf(“n请输入电话号码:”);

scanf(“%s”,p->phone);

printf(“n请输入学号:”);

scanf(“%s”,p->number);

printf(“n请输入QQ:”);

scanf(“%s”,p->qq);

printf(“n请输入住址:”);

scanf(“%s”,p->addr);

fwrite(p,LEN,1,fp);

fclose(fp);

head = 0;

num = 1;

while(num!=0)

{

n = n+1;

if(n==1)head = p;

else q->next = p;

q = p;

p =(struct message *)malloc(LEN);

while(choice[0]!='1' && choice[0]!='0')

否继续

{

printf(“n1 继续输入n 0 返回n”);

printf(“请选择操作:”);

scanf(“%s”,choice);

}

//分配空间 //输入内容

//分配空间

//判断是

switch(choice[0])

{

case '1':

{

fp=fopen(“通讯录1.txt”,“rb”);

system(“cls”);

printf(“n请输入姓名:”);

scanf(“%s”,p->name);

printf(“n请输入电话号码:”);

scanf(“%s”,p->phone);

printf(“n请输入学号:”);

scanf(“%s”,p->number);

printf(“n请输入QQ:”);

scanf(“%s”,p->qq);

printf(“n请输入住址:”);

scanf(“%s”,p->addr);

fwrite(p,LEN,1,fp);

fclose(fp);

choice[0] = '2';

}

continue;

case '0': num = 0;

system(“cls”);

}

}

q->next = 0;}

void findname(struct message * fphead)

{

struct message *p;

int a = 0;

char findname[20];

system(“cls”);

printf(“请输入要查找的姓名:n”);

scanf(“%s”,findname);

for(p=fphead->next;p!=NULL;p=p->next)

{

if(strcmp(p->name,findname)==0)

{

//按姓名查找

printf(“姓名

电话号码

学号

QQ

住址n”);

printf(“%-15s %-15s %-15s %-13s %-25sn”,p->name,p->phone,p->number,p->qq,p->addr);

a = 1;

}

}

if(a!= 1)

printf(“无此通讯录!n”);

} void findphone(struct message * fphead)

//按电话查找

{

struct message *p;

int a = 0;

char findphone[15];

system(“cls”);

printf(“请输入要查找的电话:n”);

scanf(“%s”,findphone);

for(p=fphead->next;p!=NULL;p=p->next)

{

if(strcmp(p->phone,findphone)==0)

{

printf(“姓名

电话号码

学号

住址n”);

printf(“%-15s %-15s %-15s %-13s %-25sn”,p->name,p->phone,p->number,p->qq,p->addr);

a = 1;

}

}

if(a!= 1)

printf(“无此通讯录!n”);

}

void findnumber(struct message * fphead)

//按学号查找

{

struct message *p;

int a = 0;

char findnumber[15];

system(“cls”);

QQ

printf(“请键入要查找的学生学号:n”);

scanf(“%s”,findnumber);

for(p=fphead->next;p!=NULL;p=p->next)

{

if(strcmp(p->number,findnumber)==0)

{

printf(“姓名

电话号码

学号

QQ

住址n”);

printf(“%-15s %-15s %-15s %-13s %-25sn”,p->name,p->phone,p->number,p->qq,p->addr);

a = 1;

}

}

if(a!= 1)

printf(“无此通讯录!n”);

}

void modify(struct message * fphead)

//修改记录

{

FILE *fp;

struct message *p,*q;

int a = 0;

char findname[15];

system(“cls”);

printf(“请键入要查找的姓名:n”);

scanf(“%s”,findname);

for(p=fphead->next;p!=NULL;p=p->next)

{

if(strcmp(p->name,findname)==0)

{

printf(“姓名

电话号码

学号

QQ

住址n”);

printf(“%-15s %-15s %-15s %-13s %-25snnnn”,p->name,p->phone,p->number,p->qq,p->addr);

printf(“n请键入新姓名:”);

scanf(“%s”,p->name);

printf(“n请键入新电话号码:”);

scanf(“%s”,p->phone);

printf(“n请键入新学号:”);

scanf(“%s”,p->number);

printf(“n请键入新QQ:”);

scanf(“%s”,p->qq);

printf(“n请键入新住址:”);

scanf(“%s”,p->addr);

fp = fopen(“通讯录2.txt”,“wb”);

q = fphead->next;

//P为链表头指针

while(q!=0)

{

fwrite(q,LEN,1,fp);

if(q->next!=0)

q = q->next;

else

q = 0;

}

fclose(fp);

unlink(“通讯录1.txt”);

//用新文件覆盖原文件

rename(“通讯录2.txt”, “通讯录1.txt”);

printf(“修改成功!”);

a = 1;

}

}

if(a!= 1)

printf(“无此通讯录!n”);

}

void del(struct message * fphead)

//删除记录

{

FILE *fp,*fq;

struct message *p,*q,*r;

char sname[15];

p = q =(struct message *)malloc(LEN);

p = fphead;

system(“cls”);

fp = fopen(“通讯录1.txt”,“rb”);

fq = fopen(“通讯录2.txt”,“wb”);

printf(“请输入欲删除记录的姓名:”);

scanf(“%s”,sname);

while(strcmp(p->name,sname)!=0 && p->next!=0)//查找节点并删除该节点

{

q = p;

p = p->next;

}

if(strcmp(p->name,sname)==0)

{

if(p==fphead)

fphead = p->next;

else

{

q->next = p->next;

}

r = fphead->next;

//r为链表头指针

while(r!=0)

{

fwrite(r,LEN,1,fq);

if(r->next!=0)

r = r->next;

else

r = 0;

}

printf(“删除成功!”);

}

else

{

printf(“无此通讯录!”);

}

fclose(fp);

fclose(fq);

unlink(“通讯录1.txt”);

//用新文件覆盖原文件

rename(“通讯录2.txt”, “通讯录1.txt”);

}

struct message * open(void)

//打开文件,载入链表

{

FILE *fp;

struct message *p=NULL,*q=NULL,*temp=NULL,*fphead=NULL;

fp=fopen(“通讯录1.txt”,“rb”);

fphead=(struct message *)malloc(LEN);

//分配空间

temp = q = fphead;

while(!feof(fp))

//循环读取,载入链表

{

p=(struct message *)malloc(LEN);

temp=q;

q->next=p;

q=p;

fread(p,LEN,1,fp);

}

temp->next=NULL;

fclose(fp);

return(fphead);

//返回链表头指针

}

void print()

//显示通讯录

{

struct message *p;

FILE *fp;

system(“cls”);

if((fp=fopen(“通讯录1.txt”,“rb”))!=NULL)

{

printf(“姓名

电话号码

学号

住址n”);

p =(struct message *)malloc(LEN);

//分配空间

while(!feof(fp))

{

fread(p,LEN,1,fp);

printf(“%-15s %-15s %-15s %-13s %-25sn”,p->name,p->phone,p->number,p->qq,p->addr);

}

fclose(fp);

}

else

{

printf(“未建立通讯录!”);

} }

void main()

//主函数 {

FILE * fp;

struct message * fphead;

int begin = 1,f;

char choice[5];

QQ

while(begin == 1)

{

printf(“tt>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>n”);

printf(“tttt欢迎使用学生通讯录n”);

printf(“tt<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

printf(“ttt*主窗口菜单*nn”);

printf(“ttt1:显示通讯录中所有记录;nn”);

printf(“ttt2:建立新通讯录;nn”);

printf(“ttt3:添加新记录;nn”);

printf(“ttt4:查询通讯录中的记录;nn”);

printf(“ttt5:修改通讯录中的记录;nn”);

printf(“ttt6:删除通讯录中的记录;nn”);

printf(“ttt0:退出通讯录nn”);

printf(“请选择操作:”);

scanf(“%s”,choice);

switch(choice[0])

{

case '1':

{

print();

printf(“按任意键返回主菜单!n”);

getch();

system(“cls”);

}

continue;

case '2':

{

creat();

}

continue;

case '3':

{

add();

}

continue;

case '4':

{

if((fp = fopen(“通讯录1.txt”,“rb”))!= NULL)

{

fclose(fp);

system(“cls”);

printf(“1按姓名查询;n2按电话查询;n3按学号查询;n”);

printf(“请输入查询方式:”);

scanf(“%d”,&f);

if(f==1)

{

fphead = open();

findname(fphead);

}

if(f==2)

{

fphead = open();

findphone(fphead);

}

else if(f==3)

{

fphead = open();

findnumber(fphead);

}

}

else

{

system(“cls”);

printf(“未建立通讯录!”);

}

printf(“按任意键返回主菜单!n”);

getch();

system(“cls”);

}

continue;

case '5':

{

if((fp = fopen(“通讯录1.txt”,“rb”))!= NULL)

{

fclose(fp);

fphead = open();

modify(fphead);

}

else

{

system(“cls”);

printf(“未建立通讯录!”);

}

printf(“按任意键返回主菜单!n”);

getch();

system(“cls”);

}continue;

case '6':

{

if((fp = fopen(“通讯录1.txt”,“rb”))!= NULL)

{

fclose(fp);

fphead = open();

del(fphead);

}

else

{

system(“cls”);

printf(“未建立通讯录!”);

}

printf(“按任意键返回主菜单!n”);

getch();

system(“cls”);

}

continue;

case '0': exit(0);

default:

{

system(“cls”);

printf(“输入错误,按任意键返回主菜单!n”);

getch();

system(“cls”);

}

}

}

system(“pause”);}

第二篇:学生通讯录管理系统

“学生通讯信息记录系统”的设计与实现

一、设计要求

1.问题的描述

“学生通讯信息记录系统”是为了实现快速的对学生信息进行录入、删除、查找、显示。各个功能靠函数实现。2.需求分析

(1)应该包括以下功能:输入信息、显示信息、查找以姓名作为关键字、删除信息(2)作为一个完整的系统,应具有友好的界面和较强的容错能力

二、概要设计

1.主界面设计

2.储存结构设计

本系统主要采用链表类型来表示储存“学生信息记录系统”中的信息。程序中定义了address结构。其中,包括学生的姓名、宿舍信息和学号。3.系统功能的设计

1)输入信息——enter();2)显示信息———display();3)查找以姓名作为关键字 ———search();4)删除信息———delete();

三、模块设计

1.模块设计

本成绩包含两个模块:主程序模块和链表操作模块。2.系统的程序及功能设计

(1)插入学生信息

void enter()

/*输入函数,本函数循环输入资料,当输入姓名为空时退出*/ {

struct address *info;

/*定义当前结点*/

for(;;){

info=(struct address *)malloc(sizeof(struct address));

/*为当前结点分配空间*/

if(!info)

{

printf(“n Out of memory”);

exit(0);

/*如果分配空间失败,退出程序*/

}

printf(“输入空姓名结束:n”);

inputs(“请输入 姓名:”,info->name,10);

if(!info->name[0])

break;

/*如果输入姓名为空,结束循环*/

inputs(“请输入

院系:”,info->street,50);

inputs(“请输入宿舍楼:”,info->city,15);

inputs(“请输入宿舍号:”,info->state,15);

inputs(“请输入

学号:”,info->eip,7);

insert(info,&start,&last);

/*调用结点插入函数*/ } }

五、测试分析

1.输入学生信息

4.删除信息

5.退出

struct address *start;

/*首结点*/ struct address *last;

/*尾结点*/ struct address *find(char *);

/*声明查找函数*/

void enter();

/*函数声明*/ void search();void save();

void load();void list();void ddelete(struct address **start,struct address **last);void insert(struct address *i,struct address **start,struct address **last);void inputs(char *,char *,int);void display(struct address *);int menu_select(void);

void main(){

int c;

printf(“n

欢迎使用学生通讯录系统”);

printf(“nn”);

printf(“t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“t┃************************************************************┃n”);

printf(“t┃*

*

*┃n”);

printf(“t┃*

1.输入信息

*

2.删除信息

*┃n”);

printf(“t┃*

*

*┃n”);

printf(“t┃************************************************************┃n”);

printf(“t┃*

*

*┃n”);

printf(“t┃*

3.显示信息

*

4.查找

*┃n”);

printf(“t┃*

*

*┃n”);

printf(“t┃************************************************************┃n”);

printf(“t┃

5.退出

┃ n”);

printf(“t┃************************************************************┃n”);

exit(0);

/*如果分配空间失败,退出程序*/ }

printf(“输入空姓名结束:n”);

inputs(“请输入 姓名:”,info->name,10);

if(!info->name[0])break;

/*如果输入姓名为空,结束循环*/

inputs(“请输入

院系:”,info->street,50);

inputs(“请输入宿舍楼:”,info->city,15);

inputs(“请输入宿舍号:”,info->state,15);

inputs(“请输入

学号:”,info->eip,7);

insert(info,&start,&last);

/*调用结点插入函数*/ }

void inputs(char *prompt,char *s,int count)

/*输入函数,有越界检测功能*/ {

char p[255];

do }

i->next=NULL;

i->prior=NULL;

*last=i;

*start=i;

return;

}

else {

(*last)->next=i;

i->prior=*last;i->next=NULL;

*last=(*last)->next;

}

}

void ddelete(struct address **start,struct address **last)

/*删除函数*/

{ struct address *info;

char s[80];

inputs(“请输入 姓名:”,s,10);

/*输入欲删除结点的name域内容*/

info=find(s);

if(info)

{

printf(“Deleting......n”);if(*start==info)

点的下驱作为新的首结点(入口)*/

{ *start=info->next;

if(*start)(*start)->prior=NULL;

else *last=NULL;

}

else

结点*/

{

info->prior->next=info->next;

info=info->next;

}

printf(“未找到相关信息.n”);

return NULL;}

/*输出整个链表*/ void list(void){ struct address *info;

info=start;

if(info==NULL)printf(“当前记录为空!”);else printf(“姓名t院系t宿舍楼t宿舍号t学号tn”);

while(info)

{

};display(info);if(info->next==NULL){break;} info=info->next;

printf(“nn”);}

/*查找函数*/

/*输入欲查找的姓名*/ /*如果没找到,显示Not found*/

/*如果找到,显示该结点资料*/

七、用户使用手册

(1)本程序的执行文件为“学生通讯录管理系统.exe”。

(2)进入本系统之后,随即显示系统住菜单界面。用户可以在该界面下根据提示输入并按回车键确定,执行相应的菜单命令。

(3)本系统可以对学生信息进行录入和删除。

数据结构课程设计

课题:学生成绩管理系统

姓名:孙轩宇

学号:E01014316

专业:计算机科技

院系:计科院

2010.10.8

班级:10

第三篇:C语言程序设计学生通讯录管理系统

#include “stdio.h” #include “stdlib.h” #include “string.h” #include “conio.h” #include “stdlib.h” #define null 0 struct record { char name[20];char phone[20];char adress[40];char postcode[10];char e_mail[30];}student[500];struct LinkList { struct record US;struct LinkList *next;}a;struct LinkList *head=null;int num=0;FILE *fp;int menu_select();int adduser();int list();int search();int display();int add();int listbyname();int dele();int save();int exit();

void main(){

system(“cls”);for(;;){ switch(menu_select()){ case 0:adduser();break;case 1:list();break;case 2:search();break;case 3:add();break;case 4:dele();break;case 5:save();break;case 6:exit(0);} } } menu_select(){ char s[80];int a;printf(“*_* press any key enter menu!*_* n”);getch();system(“cls”);printf(“tt********************MENU*********************nn”);printf(“tt 0.输入记录n”);printf(“tt 1.显示记录 n”);printf(“tt 2.按姓名查找n”);printf(“tt 3.插入记录 n”);printf(“tt 4.删除记录n”);printf(“tt 5.记录保存文件n”);printf(“tt 6.Quitn”);printf(“tt***********************************************n”);do{ printf(“n Enter you choice(0~11):”);scanf(“%s”,s);a=atoi(s);} while(a<0||a>11);return a;}

adduser(){ printf(“ntt**************** 请输入用户信息 ****************n”);printf(“ntt输入姓名:”);scanf(“%s”,&student[num].name);printf(“ntt输入电话号码:”);scanf(“%s”,&student[num].phone);printf(“ntt输入地址:”);scanf(“%s”,&student[num].adress);printf(“ntt输入邮编:”);scanf(“%s”,&student[num].postcode);printf(“ntt输入e-mail:”);scanf(“%s”,&student[num].e_mail);num++;printf(“ntt是否继续添加?(Y/N):”);if(getch()=='y')adduser();return(0);} list(){ int i;system(“cls”);if(num!=0){ printf(“ntt*************** 以下为通讯录所有信息************”);for(i=0;i

printf(“ntt姓名: %s”,student[i].name);printf(“ntt电话: %s”,student[i].phone);printf(“ntt地址: %s”,student[i].adress);printf(“ntt邮编: %s”,student[i].postcode);printf(“ntte-mail:%s”,student[i].e_mail);printf(“tt”);if(i+1

add(){ int i;if((fp=fopen(“student.bin”,“wb”))==NULL){ printf(“ntt文件打开失败”);} for(i=0;i

save(){ int j;FILE*fp;fp=fopen(“student.txt”,“w”);if(fp==NULL)printf(“can't open the file.”);if(num!=0){ for(j=0;j

fwrite(student,sizeof(student),1,fp);} } printf(“保存成功!”);fclose(fp);return(0);}

第四篇:C语言-通讯录管理系统

#include #include #include struct record{ charnum[12];char name[10];char birthday[10];char post[10];char phone[15];}data[100];intmenu_select();intcreate_record();intadd_record(int flag);int flag=0;

intfind_record(int flag);intdelete_record(int flag);voidpaixu_record(int flag);intsave_record(int flag);void main(){ for(;;){ switch(menu_select())

{ case 1: printf(“ ***********************************************n”);printf(“ ************** 通讯录的建立 ***************n”);printf(“ ***********************************************n”);flag=create_record();break;case 2: printf(“ ***********************************************n”);printf(“ ************** 通讯录信息的添加 *****************n”);printf(“ ***********************************************n”);flag=add_record(flag);break;case 3: printf(“ ******************************n”);printf(“ ******* 通讯录信息查询 *******n”);printf(“ ******************************n”);find_record(flag);

break;case 4: printf(“ ***********************************n”);printf(“ **********通讯信息的删除***********n”);printf(“ ***********************************n”);delete_record(flag);break;case 5: printf(“ ***********************************n”);printf(“ **********通讯录的存储(D:)*********n”);printf(“ ***********************************n”);save_record(flag);break;case 6: printf(“ ***********************************n”);printf(“ **********通讯者的排序*********n”);printf(“ ***********************************n”);paixu_record(flag);break;case 0: printf(“t 谢谢您的使用!n”);break;

default : break;} } } intmenu_select(){ int i;printf(“

********************

n”);printf(“

Welcome!

n

”);printf(“

Form kuangminn”);printf(“

********************

n”);printf(“

n”);printf(“ n”);printf(“ n”);printf(“

通讯录管理系统

n”);printf(“ n”);printf(“

======================n”);printf(“

1.通讯录的建立n”);printf(“

2.通讯者的添加n”);printf(“

3.通讯录的查询n”);printf(“

4.通讯者的删除n”);printf(“

5.通讯录的存储n”);printf(“

6.通讯者的排序n”);printf(“

0.退出通讯录管理系统n”);printf(“

======================n”);printf(“

请选择操作0-5 nn”);for(;;){ scanf(“%d”,&i);if(i<0||i>6)printf(“t对不起,您的输入错误n”);else break;} return i;} intcreate_record(){inti,j;for(i=0;;)

{ printf(“ 学号(12)姓名(10)出生年月(10)家庭住址(30)邮编(10)电话(15)n”);printf(“-------------n”);scanf(“%s%s%s%s%s%s”,data[i].num,data[i].name,data[i].birthday, data[i].post, data[i].phone);i++;printf(“ 想继续创建吗?(1.是/0.不):”);scanf(“%d”,&j);if(!j)

return i;else printf(“恭喜你,创建成功!请继续创建!n”);

} return i;} intadd_record(int flag){ int i=flag,j;for(i;;)

{ printf(“ 学号(12)姓名(10)出生年月(10)家庭住址(30)邮编(10)电话(15)n”);printf(“-------------n”);

scanf(“%s%s%s%s%s%s”,data[i].num,data[i].name,data[i].birthday,data[i].post, data[i].phone);i++;printf(“ 想继续添加吗?(1.是/0.不):”);scanf(“%d”,&j);if(!j)return i;else printf(“恭喜你,添加成功!请继续添加!n”);

} return(i);} intfind_record(){ int i;char number[6];char named[10];intxz;printf(“--------------------n”);printf(“ 1.按学号查询n”);printf(“ 2.按姓名查询n”);printf(“--------------------n”);printf(“ 请选择 : n”);

scanf(“%d”,&xz);if(xz==1){ printf(“ 请输入要查找的学号: ”);scanf(“%s”,number);for(i=0;i

if(strcmp(data[i].num,number)==0)

{ printf(“ ** 学号姓名出生年月家庭住址邮编电话**n”);printf(“------------------------------n”);printf(“%s,%s,%s,%s,%s,%sn”,data[i].num,data[i].name,data[i].birthday,data[i].post,data[i].phone);printf(“------------------------------n”);return 0;}

} else if(xz=2){ printf(“请输入要查找的姓名: ”);scanf(“%s”,named);for(i=0;i

{ printf(“ ** 学号姓名出生年月家庭住址邮编电话**n”);printf(“------------------------------n”);printf(“%s,%s,%s,%s,%s,%sn”,data[i].num,data[i].name,data[i].birthday,data[i].post,data[i].phone);printf(“------------------------------n”);return 0;else {printf(“对不起,没有你要找的人!n”);return 0;} }

else {printf(“对不起,没有你要找的人!n”);return 0;}

}

} intdelete_record(int flag)

{ inti,j;intdeletemark=0;char number[20];printf(“ttt请输入要删除学号:n”);scanf(“%s”,number);for(i=0;i

{ if(strcmp(data[i].num, number)==0)

{ printf(“ttt以下是您要删除的用户纪录:n”);printf(“ ** 学号姓名出生年月家庭住址邮编电话**n”);printf(“------------------------------n”);

printf(“%s,%s,%s,%s,%s,%sn”,data[i].num,data[i].name,data[i].birthday,data[i].post,data[i].phone);printf(“------------------------------n”);

printf(“ttt是否删除?(y/n)”);if(getch()=='y' || getch()=='Y')

{ for(j=i;j

} else return;

} continue;

} if(deletemark==0)

{ printf(“ttt没有该用户的纪录”);

return;

} return;

} voidpaixu_record(int flag){inti,j;struct record tmp;

printf(“ 1.按姓名排序n”);printf(“ 2.按学号排序n”);scanf(“%d”,&i);if(i==1){for(i=1;i

{ if(strcmp(data[i].name, data [i-1].name)<0)

{ tmp= data[i];

j=i-1;do

{ data [j+1]= data [j];j--;}while((strcmp(tmp.name, data [j].name)<0&&j>=0));data [j+1]=tmp;

}

} printf(“ttt排序成功!”);}

if(i==2){for(j=0;jdata[i+1].num)

{tmp=data[i];data[i]=data[i+1];data[i+1]=tmp;} } }

intsave_record(int flag){

FILE*fp;int i;if((fp=fopen(“D:data.txt”,“w+”))==NULL)

{printf(“无法打开文件!”);exit(0);} for(i=0;i

{fprintf(fp,“%s,%s,%s,%s,%s,%sn”,data[i].num,data[i].name,data[i].birthday, data[i].post, data[i].phone);printf(“n”);} fclose(fp);return 0;}

第五篇:学生通讯录管理系统(C语言课程设计实验报告)

C语言课程设计报告——刘显安

C语言课程设计

姓名:刘显安 学号:09041131 班级:090411 专业:计算机科学与技术 学院:信息工程学院 设计题目:学生通讯录管理系统

指导教师:宋文琳 提交时间:2010年9月4日

第1页(共25页)

C语言课程设计报告——刘显安

课程题目:学生通讯录管理系统

要求:学生通讯录信息包括:学号、姓名、班机、联系电话、E-mail、宿舍等 主要功能:1、2、3、4、5、通讯录信息录入功能 通讯录信息删除功能 通讯录信息浏览功能 通讯录信息查询功能 按学号排序功能

一、总体设计

首先,整个系统必须有一个主函数,为了尽量提高程序的易修改性,且不至于相互干扰,将每一个功能分成不同的模块,用不同的函数来实现,例如在我写的这个程序中,一共用了11个函数,分别是:

主菜单函数menu()、关于函数gaunyu()、帮助函数help()、输出单个学生信息函数shuchu()、输入函数shuru()、输出所有学生信息函数findall()、按姓名查找函数findname()、按学号查找函数findnum()、删除函数shanchu()、排序函数paixu()、主函数main(),这样在整个程序的设计过程中也就一目了然,写起来也相对轻松了不少。

这个程序我只是总体上参考了一下网上程序的架构,具体的各个函数是参照课本上《链表》那一章的内容的,比如结构体的建立、查找和排序等功能,这些书上都有类似的,其中排序功能虽没有原版的,第2页(共25页)

C语言课程设计报告——刘显安

但是在第六章中有一个用冒泡法排序的例题,我就是仿照这个模式来对结构体进行排序的,总之整个程序中蕴含了我很多的汗水。

二、具体设计

关于这个程序的具体设计,也不是一两句话就能说完的,所以我也不想再在这里赘述了,因为程序里都可以看的到,几乎每个函数都倾注了我的大量汗水,我在这上面花了不少的时间,不过从中也收获了很多,因为不停地修改不停的调试,总之还是直接看源程序吧,因为也没必要在这里重复地说废话。

三、源代码

以下是整个程序的源代码,其中我的主菜单函数是很美观的,但由于这里字体和板式的限制,不能很好的显现,可以看我下面程序运行的截图就知道了。—————————————————— #include #include #include #include #include #define NULL 0

struct student{

第3页(共25页)

C语言课程设计报告——刘显安

long num;char name[20];int banji;char tel[11];char Email[20];int sushe;struct student *next;};

struct student *stu;int n;

void menu(void){ /*主菜单函数*/ system(“cls”);puts(“****************************************************************************”);puts(“** ^_^学生通讯录管理系统^_^ **”);puts(“****************************************************************************”);puts(“******** 计 ********”);

第4页(共25页)

C语言课程设计报告——刘显安

puts(“******* *******”);puts(“****** 算 ******”);puts(“***** 0 1=录入学生通讯录信息 *****”);puts(“**** 9 机 ****”);puts(“*** ***”);puts(“** 科 **”);puts(“*

*”);puts(“** 1 学 **”);puts(“*** ***”);puts(“**** 与 ****”);puts(“***** *****”);0 4

刘 2=

安 6=

第5页(共25页)

列出所有学生通讯录 3=按姓名查询信息 4=按学号查询信息

5=删除学生信息 按学号将通讯录排序

7=关于

8=帮助

0=退出

C语言课程设计报告——刘显安

puts(“****** 技 ******”);puts(“******* *******”);puts(“******** 术 ********”);puts(“****************************************************************************”);} void guanyu()/*关于函数*/ { system(“cls”);puts(“n ************************** ”);puts(“ *** 版权所有,翻版必究!***”);puts(“**** copyright◎刘显安!****”);puts(“ *** 2009~2010 ***”);puts(“ **************************”);puts(“n返回主菜单请按【9】”);if(getche()=='9')menu();}

struct student *shuru(void)/*输入函数*/

第6页(共25页)

C语言课程设计报告——刘显安

{ system(“cls”);struct student *s1,*s2;n=1;int num;puts(“请输入学生个数(提示:个数不能输入0!):”);scanf(“%d”,&num);s1=s2=(struct student *)malloc(sizeof(struct student));puts(“*************************************************”);puts(“请输入学号:”);scanf(“%ld”,&s1->num);puts(“请输入学生姓名:”);scanf(“%s”,s1->name);puts(“请输入班级:”);scanf(“%d”,&s1->banji);puts(“请输入电话号码:”);scanf(“%s”,s1->tel);puts(“请输入电子邮件:”);scanf(“%s”,s1->Email);puts(“请输入学生宿舍号:”);scanf(“%d”,&s1->sushe);stu=s1;

第7页(共25页)

C语言课程设计报告——刘显安

while(nnext=s1;s2=s1;s1=(struct student *)malloc(sizeof(struct student));puts(“*************************************************”);puts(“请输入学号:”);scanf(“%ld”,&s1->num);puts(“请输入学生姓名:”);scanf(“%s”,s1->name);puts(“请输入班级:”);scanf(“%d”,&s1->banji);puts(“请输入电话号码:”);scanf(“%s”,s1->tel);puts(“请输入电子邮件:”);scanf(“%s”,s1->Email);puts(“请输入学生宿舍号:”);scanf(“%d”,&s1->sushe);n=n+1;} puts(“*************************************************”);s2->next=s1;

第8页(共25页)

C语言课程设计报告——刘显安

s2=s1;s2->next=NULL;return(stu);//system(“cls”);}

void shuchu(struct student *s){ /*输出单个学生信息*/ printf(“* %-8ld”,s->num);printf(“%-15s”,s->name);printf(“%-8d”,s->banji);printf(“%-15s”,s->tel);printf(“%-15s”,s->Email);printf(“%-5d *n”,s->sushe);}

void findall()/*输出所有学生信息*/ { system(“cls”);struct student *s;//if(n=2)//printf(“n现在有%d个学生信息,分别是:n”,n);//else

第9页(共25页)

C语言课程设计报告——刘显安

printf(“n现在有%d个学生信息,分别是:n”,n);puts(“________________________________________________________________________”);puts(“* 学号 姓名 班级 电话 电子邮件 宿舍 *”);s=stu;while(s!=NULL){ shuchu(s);s=s->next;} puts(“________________________________________________________________________”);puts(“返回主菜单请按【9】”);if(getche()=='9')menu();}

void findname(){ /*按姓名查找函数*/ system(“cls”);struct student *s;char name[20];printf(“n请输入你要查询的学生姓名:n”);

第10页(共25页)

C语言课程设计报告——刘显安

scanf(“%s”,name);s=stu;while(strcmp(s->name,name)!=0){ s=s->next;} if(s==NULL){ puts(“查无此学生姓名!”);goto end;} else { puts(“该学生的信息为:”);puts(“* 学号

姓名

电子邮件 宿舍 *”);shuchu(s);} end:;puts(“返回主菜单请按【9】”);if(getche()=='9')menu();}

第11页(共25页)

班级

电话

C语言课程设计报告——刘显安

void findnum()/*按学号查找函数*/ { system(“cls”);struct student *s;puts(“请输入你要查询的学生学号:”);long i;scanf(“%ld”,&i);s=stu;

while(s->num!=i){ s=s->next;} if(s==NULL){puts(“查无此学生学号!”);goto end;} else { puts(“该学生的信息为:”);puts(“* 学号 姓名 班级 邮件 宿舍 *”);shuchu(s);

第12页(共25页)

子电话 电C语言课程设计报告——刘显安

} end:;puts(“返回主菜单请按【9】”);if(getche()=='9')menu();}

struct student *shanchu(struct student*stu)/*删除函数*/ { system(“cls”);long num;char s;struct student *s1,*s2;if(stu==NULL){ puts(“傻冒!没有任何学生信息,还删个屁啊,删删删!”);goto end;} puts(“请输入你要删除的学生学号:”);scanf(“%ld”,&num);s1=stu;puts(“警告:你确定要删除这个学生的信息吗(Y/N)?”);scanf(“%s”,&s);

第13页(共25页)

C语言课程设计报告——刘显安

if((s=='Y')||(s=='y')){ while((num!=s1->num)&&(s1->next!=NULL)){s2=s1;s1=s1->next;}

if(num==s1->num){ puts(“该学生的信息为:”);puts(“* 学号

姓名

班级

电话 电子邮件 宿舍 *”);shuchu(s1);if(s1==stu)stu=s1->next;else s2->next=s1->next;puts(“注意哟,该学生的信息已经删除了!剩下的学生通讯录信息如下:”);n=n-1;} } findall();return(stu);end:;

第14页(共25页)

C语言课程设计报告——刘显安

puts(“返回主菜单请按【9】”);if(getche()=='9')menu();}

void paixu(){ /*排序函数*/ struct student *p, *p1,*p2;int i,j;int temp;char b[20];if(stu==NULL){printf(“n学生信息不存在n”);goto end;} for(i=0;inext;if(p1->num>p2->num)

{temp=p1->num;p1->num=p2->num;p2->num=temp;

strcpy(b,p1->name);strcpy(p1->name,p2->name);strcpy(p2->nam

第15页(共25页)

C语言课程设计报告——刘显安

e,b);

temp=p1->banji;p1->banji=p2->banji;p2->banji=temp;

strcpy(b,p1->tel);strcpy(p1->tel,p2->tel);strcpy(p2->tel,b);

strcpy(b,p1->Email);strcpy(p1->Email,p2->Email);strcpy(p2->Email,b);temp=p1->sushe;p1->sushe=p2->sushe;p2->sushe=temp;

} p1=p1->next;} } p=stu;puts(“已按学生学号顺序排序完毕!重新排序如下:”);

puts(“****************************************************************************”);puts(“* 学号 姓名 班级 电话 电子邮件 宿舍 *”);

while(p!=NULL)

第16页(共25页)

C语言课程设计报告——刘显安

{ printf(“* %-8ld”,p->num);printf(“%-15s”,p->name);printf(“%-8d”,p->banji);printf(“%-15s”,p->tel);printf(“%-15s”,p->Email);printf(“%-5d *n”,p->sushe);p=p->next;} end:;puts(“返回主菜单请按【9】”);if(getche()=='9')menu();}

void help()/*帮助函数*/ { system(“cls”);puts(“n1、请按提示操作,第一次进入本系统时请按“1”录入学生信息,”);puts(“ 否则有可能造成程序运行错误!”);puts(“

2、添加、修改功能本系统暂不提供,还有待以后完善,谢谢

第17页(共25页)

C语言课程设计报告——刘显安

合作!”);puts(“

3、请注意查看“Num Lock”是否打开,如果没有打开,则按数字n 键可能导致程序错误!”);puts(“

4、版权所有,翻版必究!请按“7”键查看关于。”);puts(“n返回主菜单请按【9】”);if(getche()=='9')menu();}

void main()/*主函数*/ { char a;menu();puts(“n您为首次使用本系统,强烈建议您按1开始录入学生信息,”);puts(“否则有可能导致程序运行错误!您可以按8查看帮助.”);a=getche();while(a){ puts(“");switch(a){case'0':goto end;break;case '1': puts(”n好了,您可以开始向本系统录入学生通讯录信息了:

第18页(共25页)

C语言课程设计报告——刘显安

“);stu=shuru();system(”cls“);menu();puts(”n学生信息录入完毕,请输入你的选择(0~6):n“);

break;case '2':findall();puts(”n请输入你的选择(0~6):“);break;case '3':findname();puts(”n请输入你的选择(0~6):“);break;case '4':findnum();puts(”n请输入你的选择(0~6):“);break;case '5':stu=shanchu(stu);puts(”n请输入你的选择(0~6):“);break;case '6':paixu();puts(”n请输入你的选择(0~6):“);break;case '7':guanyu();puts(”n请输入你的选择(0~6):“);break;case '8':help();puts(”n请输入你的选择(0~6):“);break;default:puts(”输错了!笨蛋!快点按数字1键录入学生信息吧!“);break;} a=getche();} end:;puts(”谢谢您使用本系统,欢迎再次使用!");

第19页(共25页)

C语言课程设计报告——刘显安

} —————————————————————————

四、调试

主要是通过截图来显示运行过程 以下是程序运行的主界面:

按1后,开始录入信息,程序会提示你输入学生个数(例如本例中输入4个),当输完4个学生的信息时,程序会提示你已输入完毕:

第20页(共25页)

C语言课程设计报告——刘显安

学生信息录入完毕,提示输入(0到6)进行选择:

第21页(共25页)

C语言课程设计报告——刘显安

这时我选择按2输出所有学生信息,按9返回:

按3按姓名查询信息:

按4按学号查询信息:

第22页(共25页)

C语言课程设计报告——刘显安

按5删除学生信息,这是按学号删除学生信息,本例中,删除学号为41212的学生信息:

删除成功后,系统自动将剩下的学生信息列出:

按6按学号从小到大进行排序,可以发现,排序成功:

第23页(共25页)

C语言课程设计报告——刘显安

按8查看帮助函数:

呵呵,这是我设置的关于函数,满足一下敝人的虚荣心嘛^_^,版权所有,翻版必究哦!

最后按0退出系统:

第24页(共25页)

C语言课程设计报告——刘显安

呵呵,怎么样?我写的程序还行吧。嘿嘿……

三、总结

这个程序我只是总体上参考了一下网上程序的架构,具体的各个函数是参照课本上《链表》那一章的内容的,比如结构体的建立、查找和排序等功能,这些书上都有类似的,其中排序功能虽没有原版的,但是在第六章中有一个用冒泡法排序的例题,我就是仿照这个模式来对结构体进行排序的,总之整个程序中蕴含了我很多的汗水。

第25页(共25页)

下载C语言大作业——学生通讯录管理系统word格式文档
下载C语言大作业——学生通讯录管理系统.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    C语言课程设计学生通讯录管理系统设计

    C语言课程设计学生通讯录管理系统设计一、题目内容的描述学生通讯录管理系统设计设计一个学生通信录,学生通迅录数据信息构成内容可自行设计(如:姓名、家庭地址、邮政编码、电......

    通讯录管理系统大全

    课 程 设 计 任 务 书 题目 C语言课程设计 系(部) 专业班级学生姓名学号 06 月信息科学与电气工程学院计算机科学与技术 计职141 王雪 140819139 21 日至07 月04 日共 2......

    通讯录管理系统

    摘 要 为了人们对他人信息的记忆方便而设计,开发的一套“通讯录管理系统“软件。 通过该题目的设计过程,可以培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制......

    C语言作业:学通讯录

    学生通讯录一、语言和环境1.实现语言:C语言。2.环境要求:devC++。二、实现功能开发一套学生通讯录C语言系统,具体实现如下功能:1.打开系统显示欢迎界面,以及功能菜单,用户输入需要......

    C++通讯录管理系统

    黑龙江工程学院 第一章 问题分析和任务定义 1.1 问题分析 问题: 编写一个通讯录管理系统。要求包括通讯录建立、增加号码、删除号码、查询号码(按姓名、按号码)、修改号码、......

    通讯录管理系统[推荐5篇]

    1.题目名称通讯录管理系统 2.基本功能 (1)显示:将所有联系人的信息显示出来 (2)查找:按姓名、手机号码、QQ号码进行查找 (3)添加:从键盘上录入联系人的有关信息,包括姓名、手机号码......

    手机通讯录管理系统

    #include #include #include #include #include #include class Information { char name[20]; char tel[12]; char kind; char email[50]; public: Information(){} Inform......

    C语言课程设计-通讯录管理范文合集

    课程设计报告 课程设计题目: 通讯录管理学生姓名: 专业: 班级:指导教师: 2009年6月16日 实验题目: 《通讯录管理》 实验时间、地点: 2009-6-8到2009-6-12日 信工楼307 实验......