您的位置:首页 > 编程语言 > C语言/C++

C语言课程设计 分类: C语言 2014-12-02 22:49 220人阅读 评论(0) 收藏

2014-12-02 22:49 162 查看
今天给大家分享一下小编当年大一C语言做的课程涉设计(学生成绩以及基本信息系统)有什么疑问和不懂的可以给我留言
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student
{
long num;
char name[12];
char phone[11];
char city[12];
char postal[6];
struct student *next ;
};
long num1,numm;
char name1[12],namee[12],phone1[11],city1[12],cityy[12],postal1[6];
typedef struct student *stu;
FILE *fp;
int n,i=0,w;
char ch;
int code ()
{  long a;
printf("\t\t请输入密码:(你还有2次机会)");
scanf("%d",&a);
if(a==123)
{
printf("轻敲任意键继续");
getch();
return 1;
}
else
{
printf("\t\t请重新输入密码:(还有1次机会)");
scanf("%d",&a);
if(a==123)
{
printf("轻敲回车键继续");
return 1;
}
else return 0;
}

}

int menu()
{

printf("+++---------请选择:-----------+++\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("+++---------0.退出客户端-------------+++\n");
scanf("%s",&ch);
return ch;

}
//第1个功能的实现:
struct student *p()
{
struct student *head,*p1,*p2;
n=0;
p1=p2=(stu)malloc(sizeof(struct student ));
head=NULL;
system("cls");
printf("以学号为000结束。\n");
while(1)
{
printf("请输入学生的基本信息:学号、姓名、电话、城市、邮编\n");
scanf("%d",&p1->num);
if(p1->num==000)
break;
scanf("%s %s %s %s",p1->name,p1->phone,p1->city,p1->postal);
n=n+1;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(stu)malloc(sizeof(struct student ));
}
p2->next=NULL;
return (head);
}
//第2个查找的功能的实现:

void s(stu head);
void s1(stu head)//1、用学号来查找信息。
{
stu p1;
int j=0;
p1=(stu)malloc(sizeof(struct student ));
printf("请输入要查找学生的学号:\n");
scanf("%ld",&num1);
p1=head;
while(p1!=NULL)
{
if(p1->num==num1)
{
j=1;
printf("学号:%d 姓名:%s  电话:%s  城市:%s 邮编:%s\n",p1->num,p1->name,p1->phone,p1->city,p1->postal);
break;
}
p1=p1->next;
}
if(j==0)
printf("没有找到你要查找学生的信息。\n");
else
printf("这是你要查找学生的信息:\n");
system("pause");
s(head);
}

void s2(stu head)
{
stu p1;
int j=0;
p1=(stu)malloc(sizeof(struct student));
printf("请输入要查找学生的姓名:\n");
scanf("%s",name1);
p1=head;
while(p1!=NULL)
{
if((strcmp(p1->name,name1))==0)
{
j=1;
printf("学号:%d 姓名:%s  电话:%s  城市:%s 邮编:%s\n",p1->num,p1->name,p1->phone,p1->city,p1->postal);
}
p1=p1->next;
}
if(j==0)
printf("sorry   没有找到你要查找学生的信息。\n");
else
printf("你看,这是你想要的信息吗?\n");
system("pause");
s(head);
}

void s3(stu head)
{
stu p1;
int j=0;
p1=(stu)malloc(sizeof(struct student ));
printf("请输入要查找学生的城市:\n");
scanf("%s",city1);
p1=head;
while(p1!=NULL)
{
if((strcmp(p1->city,city1))==0)
{
j=1;
printf("学号:%d 姓名:%s  电话:%s  城市:%s 邮编:%s\n",p1->num,p1->name,p1->phone,p1->city,p1->postal);
}
p1=p1->next;
}
if(j==0)
printf("sorry  没有找到你要查找学生的信息\n");
else
printf("这是你要查找学生的信息吗?\n");
system("pause");
s(head);
}

void s(stu head)
{
system("cls");
printf("********请输入你想查找的方式********\n");
printf("********    1.以学号查找    ********\n");
printf("********    2.以姓名查找    ********\n");
printf("********    3.以城市查找    ********\n");
printf("********    4.返回          ********\n");
scanf("%d",&w);
switch(w)
{
case 1:s1(head);break;
case 2:s2(head);break;
case 3:s3(head);break;
case 4:menu();break;
default:{printf("你的输入有错,请重新输入\n");system("pause");s(head);}
}
}
//用学生学号方尺删除:
stu delet(stu head);

void delete1(stu head)
{
stu p1,p2;
int j=0;
p2=p1=(stu )malloc(sizeof(struct student));
printf("请输入要删除学生的学号:\n");
scanf("%d",&num1);
p2=p1=head;
if(head->num==num1&&head!=NULL)
{
head=head->next;
free(p1);
i--;
j=1;
}
else
{
p1=head->next;
if(p1!=NULL)
{
while(p1->num!=num1)
{
p2=p1;
p1=p1->next;
}
p2->next=p1->next;
free(p1);
i--;
j=1;
}
}
if(j==0)
printf("此通讯信息不存在,删除的失败!\n");
else
printf("删除成功!\n");
system("pause");
delet(head);
}
/*用学生姓名的方尺查找*/
void delete2(stu head)
{
stu p1,p2;
int j=0;
printf("请输入要删除学生的姓名:\n");
scanf("%s",name1);
p2=p1=head;
if(head!=NULL&&(strcmp(head->name,name1))==0)
{
head=head->next;
free(p1);
i--;
j=1;
}
else
{
p1=head->next;
if (p1!=NULL)
{
while(p1!=NULL&&(strcmp(p1->name,name1))!=0)
{
p2=p1;
p1=p1->next;
}
p2->next=p1->next;
free(p1);
j=1;
i--;
}
}
if(j==0)
printf("此学生不存在,删除的失败!\n");
else
printf("删除成功!\n");
system("pause");
delet(head);
}

stu delet(stu head)
{
system("cls");
printf("********请输入你想删除的方式********\n");
printf("********    1.以学号查找    ********\n");
printf("********    2.以姓名查找    ********\n");
printf("********    3.返回          ********\n");
scanf("%d",&w);
switch(w)
{
case 1:delete1(head);break;
case 2:delete2(head);break;
case 3:menu();return head;
default:{printf("你的输入有错,请重新输入\n");system("pause");delet(head);}
}
}
/*实现第5个功能,添加信息功能。 */

stu add(stu head);

//1、按学号添加
void add1(stu head)
{
struct student *p1,*p,*p2;
int j=0;
p1=p2=(stu )malloc(sizeof(struct student ));
p=(stu )malloc(sizeof(struct student ));
printf("请输入你要添加学生的位置:\n");
printf("如果想放在头,请输入0,  否则请输入要添加前一个学生的学号:\n");
scanf("%d",&numm);
printf("请输入要添加学生的信息:\n");
scanf("%d %s %s %s %s",&num1,name1,phone1,city1,postal1);
if(numm==0)
{
p1=head;
p->num=num1;
strcpy(p->name,name1);
strcpy(p->phone,phone1);
strcpy(p->city,city1);
strcpy(p->postal,postal1);
head=p;
p->next=p1;
i++;
j=1;
}
else
{
p1=head;
p2=p1->next;
if(p1!=NULL)
{
while(p1->num!=numm)
{
p1=p2;
p2=p1->next;
}
p->num=num1;
strcpy(p->name,name1);
strcpy(p->phone,phone1);
strcpy(p->city,city1);
strcpy(p->postal,postal1);
p1->next=p;
p->next=p2;
i++;
j=1;
}
}
if(j==0)
printf("你要添加的位置不存在,添加失败!\n");
else
printf("添加成功!\n");
system("pause");
add(head);
}

//2、按姓名(适用于按姓名字母排序)
void add2(stu head)
{
struct student *p1,*p,*p2;
int j=0;
p1=p2=(stu )malloc(sizeof(struct student ));
p=(stu )malloc(sizeof(struct student ));
printf("请输入你要添加学生的位置:\n");
printf("如果想放在头,请输入h,  否则请输入要添加前一个学生的姓名:\n");
scanf("%s",namee);
printf("请输入要添加学生的信息:\n");
scanf("%d%s%s%s%s",&num1,name1,phone1,city1,postal1);
if(namee[0]=='h')
{
p1=head;
p->num=num1;
strcpy(p->name,name1);
strcpy(p->phone,phone1);
strcpy(p->city,city1);
strcpy(p->postal,postal1);
head=p;
p->next=p1;
i++;
j=1;
}
else
{
p1=head;
p2=p1->next;
if(p1!=NULL)
{
while((strcmp(p1->name,namee))!=0)
{
p1=p2;
p2=p1->next;
}
p->num=num1;
strcpy(p->name,name1);
strcpy(p->phone,phone1);
strcpy(p->city,city1);
strcpy(p->postal,postal1);
p1->next=p;
p->next=p2;
i++;
j=1;
}
}
if(j==0)
printf("你要添加的位置不存在,添加失败!\n");
else
printf("添加成功!\n");
system("pause");
add(head);
}

//3、按城市
void add3(stu head)
{
struct student *p1,*p,*p2;
int j=0;
p1=p2=(stu )malloc(sizeof(struct student ));
p=(stu )malloc(sizeof(struct student ));
printf("请输入你要添加学生的位置:\n");
printf("如果想放在头,请输入h,  否则请输入要添加前一个学生的城市:\n");
scanf("%s",cityy);
printf("请输入要添加学生的信息:\n");
scanf("%d%s%s%s%s",&num1,name1,phone1,city1,postal1);
if(cityy[0]=='h')
{
p1=head;
p->num=num1;
strcpy(p->name,name1);
strcpy(p->phone,phone1);
strcpy(p->city,city1);
strcpy(p->postal,postal1);
head=p;
p->next=p1;
i++;
j=1;
}
else
{
p1=head;
p2=p1->next;
if(p1!=NULL)
{
while((strcmp(p1->city,cityy))!=0)
{
p1=p2;
p2=p1->next;
}
p->num=num1;
strcpy(p->name,name1);
strcpy(p->phone,phone1);
strcpy(p->city,city1);
strcpy(p->postal,postal1);
p1->next=p;
p->next=p2;
i++;
j=1;
}
}
if(j==0)
printf("你要添加的位置不存在,你的操作失败!\n");
else
printf("恭喜你,添加成功!\n");
system("pause");
add(head);
}

stu add(stu head)
{
system("cls");
printf("********请输入你想添加的方式********\n");
printf("********    1.以学号添加   ********\n");
printf("********    2.以姓名添加   ********\n");
printf("********    3.以城市添加   ********\n");
printf("********    4.返回          ********\n");
scanf("%d",&w);
switch(w)
{
case 1:add1(head);break;
case 2:add2(head);break;
case 3:add3(head);break;
case 4:menu();return head;
default:{printf("选择有错,请重新选择\n");system("pause");add(head);}
}
}
//更改内容:
//学号更改;
//以姓名更改;
stu modify(stu head);
void modify1(stu head)
{
struct student *p1;
int j=0;
p1=(stu )malloc(sizeof(struct student ));
printf("请输入你要更改学生的学号:\n");
scanf("%d",&numm);
printf("请输入要更改学生的信息:\n");
scanf("%d%s%s%s%s",&num1,name1,phone1,city1,postal1);
p1=head;
if(head->num==numm)
{
head->num=num1;
strcpy(head->name,name1);
strcpy(head->phone,phone1);
strcpy(head->city,city1);
strcpy(head->postal,postal1);
j=1;
}
else
{
p1=head->next;
if(p1!=NULL)
{
while(p1->num!=numm)
{
p1=p1->next;
}
p1->num=num1;
strcpy(p1->name,name1);
strcpy(p1->phone,phone1);
strcpy(p1->city,city1);
strcpy(p1->postal,postal1);
j=1;
}
}
if(j==0)
printf("没有找到你要更改的学生,更改失败!\n");
else
printf("更改成功!\n");
system("pause");
modify(head);
}

void modify2(stu head)
{
struct student *p1;
int j=0;
p1=(stu )malloc(sizeof(struct student ));
printf("请输入你要更改学生的姓名:\n");
scanf("%s",namee);
printf("请输入要更改学生的信息:\n");
scanf("%d%s%s%s%s",&num1,name1,phone1,city1,postal1);
p1=head;
if((strcmp(head->name,namee))==0)
{
head->num=num1;
strcpy(head->name,name1);
strcpy(head->phone,phone1);
strcpy(head->city,city1);
strcpy(head->postal,postal1);
j=1;
}
else
{
p1=head->next;
if(p1!=NULL)
{
while((strcmp(p1->name,namee))!=0)
{
p1=p1->next;
}
p1->num=num1;
strcpy(p1->name,name1);
strcpy(p1->phone,phone1);
strcpy(p1->city,city1);
strcpy(p1->postal,postal1);
j=1;
}
}
if(j==0)
printf("没有找到你要更改的学生,更改失败!\n");
else
printf("更改成功!\n");
system("pause");
modify(head);
}
stu modify(stu head)
{
system("cls");
printf("********请输入你想更改的方式********\n");
printf("********    1.以学号更改   ********\n");
printf("********    2.以姓名更改    ********\n");
printf("********    3.返回          ********\n");
scanf("%d",&w);
switch(w)
{
case 1:modify1(head);break;
case 2:modify2(head);break;
case 3:menu();return head;
default:{printf("选择有错,请重新选择\n");system("pause");modify(head);}
}
}
void display(stu head)
{   stu p;
printf("\n这里有%d个学生的信息:\n",n+i);
p=head;
while(p!=NULL)
{
printf("%d %s %s %s %s\n",p->num,p->name,p->phone,p->city,p->postal);
p=p->next;
}
}

void write_file(stu p)//6.保存信息,写入文件
{

FILE *fp= fopen("王欣欣.txt","wb");//b
system("cls");
while(p)
{
fwrite(p,sizeof(struct student),1,fp);//把p指向的内存中的东西复制到磁盘里
p = p->next;
}

fclose(fp);
}

stu read_file(void)//读出文件
{
FILE *fp;
stu p1,p2,head;
fp= fopen("王欣欣.txt","rb");
head = p2 = p1=(stu)malloc(sizeof(struct student));
system("cls");
while(fread(p1,sizeof(struct student),1,fp))
{
printf("%d %s %s %s %s\n",p1->num,p1->name,p1->phone,p1->city,p1->postal);
p2->next = p1;
p2 = p1;
p1=(stu)malloc(sizeof(struct student));
}
p2->next=NULL;
fclose(fp);
return head;
}

int main()

{

stu head;
head=NULL;
if(code ()==0)
return 0;
system("cls");
printf("**********欢迎进入通讯客户端!**********\n");
printf("----------------------- 祝你使用愉快!\n");
system("pause");
while(1)
switch (menu())
{
case'1':head=p();system("pause");break;
case'2':s(head);break;
case'3':head = delet(head);system("pause");break;
case'4':head = modify(head);system("pause");break;
case'5':head = add(head);system("pause");break;
case'6':display(head);system("pause");break;
case'7':write_file(head);system("pause");break;
case'8':head=read_file();system("pause");break;
case'0':printf("Thanks Goodbay\n");getch();return 0;
default:printf("选择有错,请重新选择\n");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐