c语言课程设计题目管理系统(C语言课程设计:通讯录管理系统)

本文目录
C语言课程设计:通讯录管理系统
/*
* main_tongxunlu.c
*
* Created on: 2011-6-21
* Author: zhanglujin
*/
#include《stdio.h》
#include《stdlib.h》
#include《string.h》
#include《conio.h》
struct record
{
char name; //姓名
char phone; //电话
char adress; //地址
char postcode; //邮政编码
char e_mail; //电子邮件。
}student; //假设最大数为100.
//定义全局变量num,表示已经输入的人数 。
int num; //这里使用数组解决通讯录的问题,实际上使用链表更好。
int menu_select()
{
char s;
int a;/*定义整形变量*/
system("cls");
printf("\t\t***********欢迎进入通讯管理界面********\n\n");
printf("\t\t\t0. 输入记录\n");
printf("\t\t\t1. 显示记录\n");
printf("\t\t\t2. 按姓名查找\n");
printf("\t\t\t3. 按电话号码查找\n");
printf("\t\t\t4. 插入记录 \n");
printf("\t\t\t5. 按姓名排序\n");
printf("\t\t\t6. 删除记录\n");
printf("\t\t\t7. Quit\n");
printf("\t\t***********************************************\n\n");
do{
printf("Enter you choice(0~7):");
scanf("%s",s);
a=atoi(s);
}
while (a《0 || a》7);
return a;
}
int adduser()
{
printf("\t\t\t**************** 请输入用户信息 ****************\n");
printf("\t\t\t输入姓名:\n");
scanf("%s",student.name);
printf("\t\t\t输入电话号码:\n");
scanf("%s",student.phone);
printf("\t\t\t输入地址:\n");
scanf("%s",student.adress);
printf("\t\t\t输入邮编:\n");
scanf("%s",student.postcode);
printf("\t\t\t输入e-mail:\n");
scanf("%s",student.e_mail);
num++;
printf("\t\t\t是否继续添加?(Y/N):\n");
if(getch()==’y’ || getch()==’Y’)
adduser();
return(0);
}
void list()
{
int i;
system("cls");
if(num!=0)
{
printf("\t\t\t*************** 以下为通讯录所有信息************\n");
for (i=0;i《num;i++)
{
printf("\t\t\t姓名:%s\n",student.name);
printf("\t\t\t电话:%s\n",student.phone);
printf("\t\t\t地址:%s\n",student.adress);
printf("\t\t\t邮编:%s\n",student.postcode);
printf("\t\t\te-mail:%s\n",student.e_mail);
if(i+1《num)
{
system("pause");
}
}
printf("\t\t\t************************************************\n");
}
else
printf("\t\t\t通讯录中无任何纪录\n");
printf("\t\t\t按任意键返回主菜单:\n");
getch(); //这里是无回显的输入字符,你输入的字符不会显示在屏幕上。
return;
}
int searchbyname()
{
int mark=0;
int i;
printf("\t\t\t***************** 按姓名查找 *******************\n");
char name;
printf("\t\t\t请输入姓名:\n");
scanf("%s",name);
for(i=0;i《num;i++)
{
if (strcmp(student.name,name)==0)
{
printf("\t\t\t************* 以下是您查找的用户信息 ***********\n");
printf("\t\t\t姓名: %s",student.name);
printf("\t\t\t电话: %s",student.phone);
printf("\t\t\t地址: %s",student.adress);
printf("\t\t\te-mail:%s",student.e_mail);
printf("\t\t\t************************************************\n");
mark++;
if((i+1)《num)
{
printf("\t\t\t是否继续查找相同名字的用户信息:(y/n)\n");
if(getch()==’y’ || getch()==’Y’)
{
continue;
}
else
return(0);
}
else
{
printf("\t\t\t按任意键返回主菜单");
getch();
return(0);
}
}
}
if(mark == 0)
{
printf("\t\t\t没有相同姓名的用户纪录\n");
printf("\t\t\t按任意键返回主菜单\n");
getch();
return(0);
}
return 0;
}
int searchbyphone()
{
int mark=0;
int i;
printf("\t\t\t****************** 按电话查找 ******************\n");
char phone;
printf("\t\t\t请输入电话号码:\n");
scanf("%s",phone);
for(i=0;i《num;i++)
{
if (strcmp(student.phone,phone)==0)
{
printf("\t\t\t************** 以下是您查找的用户信息 **********\n");
printf("\t\t\t姓名: %s",student.name);
printf("\t\t\t电话: %s",student.phone);
printf("\t\t\t地址: %s",student.adress);
printf("\t\t\te-mail:%s",student.e_mail);
printf("\t\t\t************************************************\n");
printf("\t\t\t按任意键返回主菜单\n");
mark++;
getch();
return(0);
}
}
if (mark==0)
{
printf("\t\t\t没有改用户的信息\n");
printf("\t\t\t按任意键返回主菜单\n");
getch();
return(0);
}
return(0);
}
void deletebyphone()
{
int i,j;
int deletemark=0;
char phone;
printf("\t\t\t请输入要删除用户电话号码:\n");
scanf("%s",phone);
if(num==0)
{
printf("\t\t\t对不起,文件中无任何纪录\n");
printf("\t\t\t按任意键返回主菜单\n");
getch();
return;
}
for (i=0;i《num;i++)
{
if (strcmp(student.phone,phone)==0)
{
printf("\t\t\t以下是您要删除的用户纪录:\n");
printf("\t\t\t姓名: %s",student.name);
printf("\t\t\t电话: %s",student.phone);
printf("\t\t\t地址: %s",student.adress);
printf("\t\t\te-mail:%s",student.e_mail);
printf("\t\t\t是否删除?(y/n)");
if (getch()==’y’ || getch()==’Y’)
{
for (j=i;j《num-1;j++)
student;
num--;
deletemark++;
printf("\t\t\t删除成功");
printf("\t\t\t是否继续删除?(y/n)");
if (getch()==’y’ || getch()==’Y’)
deletebyphone();
return;
}
else
return;
}
continue;
}
if (deletemark==0)
{
printf("\t\t\t没有该用户的纪录");
printf("\t\t\t是否继续删除?(y/n)");
if(getch()==’y’ || getch()==’Y’)
deletebyphone();
return;
}
return;
}
void deletebyname()
{
int a=0;
int findmark=0;
int j;
int deletemark=0;
int i;
char name;
printf("\t\t\t请输入要删除用户姓名:\n");
scanf("%s",name);
for (i=a;i《num;i++)
{
if(strcmp(student.name,name)==0)
{
printf("\t\t\t以下是您要删除的用户纪录:");
findmark++;
printf("\t\t\t________________________________");
printf("\t\t\t姓名: %s",student.name);
printf("\t\t\t电话: %s",student.phone);
printf("\t\t\t地址: %s",student.adress);
printf("\t\t\te-mail:%s",student.e_mail);
printf("\t\t\t________________________________");
printf("\t\t\t是否删除?(y/n)");
if (getch()==’y’ || getch() == ’Y’)
{
for(j=i;j《num-1;j++)
student;
num--;
deletemark++;
printf("\t\t\t删除成功");
if((i+1)《num)
{
printf("\t\t\t是否继续删除相同姓名的用户信息?(y/n)");
if (getch()==’y’)
{
a=i;
continue;
}
}
printf("\t\t\t是否继续删除?(y/n)");
if (getch()==’y’)
deletebyname();
return;
}
if((i+1)《num)
{
printf("\t\t\t是否继续删除相同姓名的用户信息?(y/n)");
if (getch()==’y’ || getch() == ’Y’)
{
a=i;
continue;
}
}
}
else
continue;
}
if ((deletemark==0)&&(findmark==0))
{
printf("\t\t\t没有该用户的纪录");
printf("\t\t\t是否继续删除?(y/n)");
if(getch()==’y’ || getch() == ’Y’)
deletebyphone();
return;
}
else if (findmark!=0)
{
printf("\t\t\t没有重名信息");
printf("\t\t\t没有该用户的纪录");
printf("\t\t\t是否继续删除?(y/n)");
if(getch()==’y’ || getch() == ’Y’)
deletebyphone();
return;
}
}
int dele()
{
char choic;
printf("\t\t\t1-按电话号码删除 2-按姓名删除");
printf("\t\t\t请选择:");
choic=getch();
switch (choic)
{
case ’1’:deletebyphone();break;
case ’2’:deletebyname();break;
}
return(0);
}
int sortbyname() //按姓名进行排序
{
int i,j;
struct record tmp;
for (i=1;i《num;i++)
{
if(strcmp(student.name)《0)
{
tmp=student;
j=i-1;
do
{
student;
j--;
}while ((strcmp(tmp.name,student.name)《0&&j》=0));
student=tmp;
}
}
printf("\t\t\t排序成功,是否显示?(y/n)");
if (getch()==’y’)
list();
return(0);
}
int main()
{
printf("\t\t************************************************\n");
printf("\t\t********welcome to TONGXUNLU *******************\n");
printf("\t\t###########code by XXXXX ###################\n");
printf("\t\t*************************************************\n");
printf("按任意键进入主菜单\n");
getch();
int selectnum;
while(1)
{
selectnum = menu_select();
switch(selectnum)
{
case 0:
{
adduser();
break;
}
case 1:
{
list();
break;
}
case 2:
{
searchbyname();
break;
}
case 3:
{
searchbyphone();
break;
}
case 4:
{
adduser(); //这里插入,应该能指定位置,不过意义不大,所以和添加记录一样了。
break;
}
case 5:
{
sortbyname();
break;
}
case 6:
{
dele();
break;
}
case 7:
{
printf("BYE BYE!\n");
system("pause");
getchar();
exit(0);
}
}
}
getchar();
return 0;
}
C语言课程设计报告(题目:学生成绩管理系统)
#include《stdio.h》
#include《stdlib.h》
#include《string.h》
#define N 35
char name;
int inth;
struct date
{
int year;
char month;
char day;
};
struct student
{
char no;
char name;
char sex;
struct date birthday;
int score;
};
int menu()
{
int code;
printf(" 菜单\n");
printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("┃ 0.退出 ┃\n");
printf("┃ 1.显示学生信息 ┃\n");
printf("┃ 2.显示按姓名排序后的学生信息 ┃\n");
printf("┃ 3.显示按总分排序后的学生信息 ┃\n");
printf("┃ 4.按学号查学生分数和平均分数 ┃\n");
printf("┃ 5.按姓名查学生分数和平均分数 ┃\n");
printf("┃ 6.查各课程平均分数 ┃\n");
printf("┃ 7.查男女学生的人数 ┃\n");
printf("┃ 8.显示学生信息表 ┃\n");
printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
printf("选择代码(0,1,2,3,4,5,6,7,8): ");
scanf("%d",&code);
return code;
}
/* 建立学生信息数组 */
void readsi(struct student stud,int *n)
{
FILE*fp;
int i;
if((fp=fopen("studf.txt","r"))==NULL)
{
printf("不能打开studf.txt文件!\n");
exit(1);
}
for(i=0;!feof(fp);i++)
{
(*n)++;
if(*n》N)
{
printf("最多处理35位学生信息!\n");
return;
}
fscanf(fp,"%s %s %s %d %d %d %d %d %d",stud);
// fscanf从一个流中执行格式化输入
stud;
}
fclose(fp);
}
/* 显示学生信息 */
void printsi(struct student *pstud,int n)
{
int i,k=0;
printf(" 学号 姓名 性别 年 月 日 数学 英语 C 总分\n");
printf("┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉\n");
printf("==================================================================\n");
for(i=0;i《n;i++)
{
printf("%-8s %-8s %-2s %4d %2d %2d %4d %4d %4d %5d\n",pstud.birthday.day,
pstud);
k++;
if(k%20==0)
scanf("%*c");
}
}
/* 按学号排序—简单比较排序法*/
void csort_no(struct student *pstud,int n)
{
struct student temp;
int i,j;
for(i=0;i《n-1;i++)
for(j=i+1;j《n;j++)
if(strcmp(pstud.no)》0)
{
temp=pstud;
pstud;
pstud=temp;
}
}
/* 显示学生信息表*/
void printtable(struct student *pstud,int n)
{
int i,k=0;struct student studA;
for(i=0;i《n;i++)
studA;
csort_no(studA,n);
printf("\n\n");
printf(" 学生信息表\n");
printf(" ==================\n\n");
printf("┏━━━━┳━━━━┳━━━┳━━━━━━┳━━━┳━━━┳━━━┳━━━┓\n");
printf("┃学号 ┃姓名 ┃ 性别 ┃ 年 月 日 ┃ 数学 ┃ 英语 ┃ C ┃ 总分 ┃\n");
printf("┣━━━━╋━━━━╋━━━╋━━━━━━╋━━━╋━━━╋━━━╋━━━┫\n");
printf("┣━━━━╋━━━━╋━━━╋━━━━━━╋━━━╋━━━╋━━━╋━━━┫\n");
for(i=0;i《n;i++)
{
printf("┃%-8s┃%-8s┃ %-2s ┃ %4d %2d %2d ┃ %4d ┃ %4d ┃ %4d ┃ %4d ┃\n",studA);
if(i==n-1)
printf("┗━━━━┻━━━━┻━━━┻━━━━━━┻━━━┻━━━┻━━━┻━━━┛\n");
else
printf("┣━━━━╋━━━━╋━━━╋━━━━━━╋━━━╋━━━╋━━━╋━━━┫\n");
k++;
if(k%20==0)
scanf("%*c");
}
}
/* 查各课程平均分数 */
void find_ave(struct student *pstud,int n)
{
static summath=0,sumenglish=0,sumC=0,score=0;int i;struct student studA;
for(i=0;i《n;i++)
studA;
csort_no(studA,n);
printf(" 各课程平均分数 \n ");
printf("————————————————————————————\n");
for(i=0;i《n;i++)
{
summath=summath+pstud;
sumenglish=sumenglish+pstud;
sumC=sumC+pstud;
score=score+pstud;
}
printf("数学平均分数:%4d\n",summath/n);
printf("英语平均分数:%4d\n",sumenglish/n);
printf("c平均分数:%4d\n",sumC/n);
printf("总分平均分数:%5d\n",score/n);
}
/* 查男女学生人数 */
void find_pnum(struct student *pstud,int n)
{
int i,j=0,k=0;
for(i=0;i《n;i++)
{
if(strcmp(pstud.sex,"男")==0)
j++;
else
k++;
}
printf("男学生人数为%d人",j);
printf("女学生人数为%d人",k);
}
/* 按总分递减选择排序(应用指针数组)*/
void ssort(struct student *ptscore,int n)
{
struct student *temp;
int i,j;
for(i=0;i《n-1;i++)
for(j=0;j《n-i-1;j++)
if(ptscore)
{
temp=ptscore;
ptscore;
ptscore=temp;
}
}
/* 按学号查学生信息和平均分数(顺序查找)*/
void ssrch_no(struct student *pstud,int n)
{
int i=0,j=0;char no;
printf("请输入要查找的学生学号:");
scanf("%s",&no);
printf("\n");
for(i=0;i《n;i++)
{
if(strcmp(no,pstud-》no)==0)
printf("已找到学号为%-8s的学生\n学号:%-8s\n姓名:%-8s\n性别:%-2s\n%4d年%2d月%2d日\n数学:%4d\n英语:%4d\nc:%4d\n总分%4d\n平均分数为:%4d\n",pstud/3);
else
j++;
}
if(j==6)
printf("未找到学号为%-8s的学生\n",no);
}
/* 按姓名查找的学生信息和平均分数(折半查找)*/
void bsrch_name(struct student *pname,int n)
{
int bsrch(struct student *pname,int n,char *name);
char name;int i;
printf("请输入要查找的学生姓名:");
scanf("%s",name);
i=bsrch(pname,n,name);
if(i!=-1)
printf("已找到该学生,学生信息:%-8s %-8s %-2s %4d %2d %2d %4d %4d %4d %5d\n",
pname-》sex,
pname-》birthday.month,
pname-》birthday.day,
pname,
pname);
else
printf("%d没有找到该学生资料!\n",name);
for(;;)
{ i=i-1;
if(strcmp(name,pname-》name)==0) printf("已找到该学生,学生信息:%-8s %-8s %-2s %4d %2d %2d %4d %4d %4d %5d\n",
pname-》sex,
pname-》birthday.month,
pname-》birthday.day,
pname,
pname);
else
break;
}
i=bsrch(pname,n,name);
for(;;)
{i=i+1;
if(strcmp(name,pname-》name)==0) printf("已找到该学生,学生信息:%-8s %-8s %-2s %4d %2d %2d %4d %4d %4d %5d\n",
pname-》sex,
pname-》birthday.month,
pname-》birthday.day,
pname,
pname);
else
break;
}
}
int bsrch(struct student *pname,int n,char *name)
{
int lower=0,upper=n-1,mid;
if(strcmp(name,pname-》name)==0) return lower;
else if(strcmp(name,pname-》name)==0) return upper;
else
while(lower《=upper)
{
mid=(lower+upper)/2;
if(strcmp(name,pname-》name)==0)
return mid;
else if(strcmp(name,pname-》name)》0)
lower=mid+1;
else
upper=mid-1;
}
return -1;
}
/* 按姓名递增冒泡排序(应用指针数组) */
void bsort(struct student *pname,int n)
{
struct student *temp;
int i,j;
for(i=0;i《n-1;i++)
for(j=0;j《n-i-1;j++)
if(strcmp(pname-》name)》0)
{
temp=pname;
pname;
pname=temp;
}
}
/* 按总分名次查找的学生信息和平均分数 */
void printf_ptscore(struct student *ptscore,int n,int inth)
{
printf("请输入要查找总分名次:");
scanf("%d",&inth);
inth--;
if(inth》n)
{
printf("未找到总分名次为%5d的学生",inth);
}
else
printf("已找到总分名次为%5d的学生\n学号:%-8s\n姓名:%-8s\n性别:%-2s\n%4d年%2d月%2d日\n数学:%4d\n英语:%4d\nc:%4d\n总分%5d\n平均分数为:%4d",inth+1,ptscore/3);
}
/*显示姓名排序后的学生信息*/
void printsi_p1(struct student *parray,int n)
{
int i,k=0;
printf(" 按姓名排序后的学生信息\n\n");
printf("学号 姓名 性别 年 月 日 数学 英语 C 总分\n");
printf("******** ------ ** ---- ** -- *** --- *** --- \n");
printf("=====================================================\n");
for(i=0;i《n;i++)
{
printf("%-8s%-8s%-2s%4d %2d %2d %4d %4d %4d %5d\n",
parray-》sex,
parray-》birthday.day,
parray);
k++;
if(k%20==0)
scanf("%*c");
}
}
/* 显示按总分排序后的学生信息 */
void printsi_p2(struct student *ptscore,int n)
{
int i,k=0;
printf("\n\n");
printf(" 按总分排序后的学生信息表\n");
printf(" ==================\n\n");
printf("┏━━━━┳━━━━┳━━━┳━━━━━━┳━━━┳━━━┳━━━┳━━━┓\n");
printf("┃学号 ┃姓名 ┃ 性别 ┃ 年 月 日 ┃ 数学 ┃ 英语 ┃ C ┃ 总分 ┃\n");
printf("┣━━━━╋━━━━╋━━━╋━━━━━━╋━━━╋━━━╋━━━╋━━━┫\n");
printf("┣━━━━╋━━━━╋━━━╋━━━━━━╋━━━╋━━━╋━━━╋━━━┫\n");
for(i=0;i《n;i++)
{
printf("┃%-8s┃%-8s┃ %-2s ┃ %4d %2d %2d ┃ %4d ┃ %4d ┃ %4d ┃ %4d ┃\n",ptscore);
if(i==n-1)
printf("┗━━━━┻━━━━┻━━━┻━━━━━━┻━━━┻━━━┻━━━┻━━━┛\n");
else
printf("┣━━━━╋━━━━╋━━━╋━━━━━━╋━━━╋━━━╋━━━╋━━━┫\n");
k++;
if(k%20==0)
scanf("%*c");
}
}
#include《stdio.h》
#include《stdlib.h》
#include《string.h》
#define N 35
void main()
{
static struct student stud;
struct student *pstud;
struct student *pname;
struct student *ptscore;
int code,inth=0;
int n=0,i;
readsi(stud,&n);
for(i=0;i《N;i++)
pstud;
for(i=0;i《N;i++)
pname;
for(i=0;i《N;i++)
ptscore;
bsort(pname,n);
ssort(ptscore,n);
printf("\n 学生信息:\n");
printsi(stud,n);
printf("\n 按《Enter》,进入菜单:\n");
scanf("%*c");
while(1)
{
code=menu();
switch(code)
{
case 0: /* 退出 */
exit(1);
case 1: /* 显示学生信息 */
printsi(stud,n);
scanf("%*2c");break;
case 2: /* 显示按姓名排序后的学生信息 */
printsi_p1(pname,n);
scanf("%*2c");break;
case 3: /* 显示按总分排序后的学生信息 */
printsi_p2(ptscore,n);
scanf("%*2c");break;
case 4: /* 按学号查找学生信息和平均分数 */
ssrch_no(pstud,n);
scanf("%*2c");break;
case 5: /* 按姓名查找学生信息和平均分数 */
bsrch_name(pname,n);
scanf("%*2c");break;
case 6: /* 查各门课的平均分数 */
find_ave(stud,n);
scanf("%*2c");break;
case 7: /* 查男女人数 */
find_pnum(stud,n);
scanf("%*2c");break;
case 8: /* 显示学生信息表 */
printtable(stud,n);
scanf("%*2c");break;
}
}
}

更多文章:
myeclipse激活了还是要激活(myeclipse为什么要激活)
2026年7月3日 22:30
phpcms 自定义字段标签模型(phpcms建议PHPCMS在评论功能上进行扩展,实现评论自定义字段)
2025年10月13日 22:30
android根据源码解决问题(如何解决android ndk r8c 老是重新编译源代码的问题)
2026年3月30日 00:30
selectorgadget下载(bootntrselector加载不成功)
2025年9月21日 13:30
如何输入string类型字符串(博图画面中string类型怎么输入)
2026年5月6日 23:15
format函数千位分隔符(15、pandas的设置数字格式,小数位数、百分号、千位分隔符)
2026年4月6日 17:30
c++多线程并发(C++的多线程里的事件是怎样定义的,事件和线程有啥联系和区别)
2026年9月20日 11:45
停止天然砂出口台湾(急求中国2010年10月11日起禁止出口的货物目录)
2025年6月19日 16:00














