C语言课程设计
Posted 欣麒骥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言课程设计相关的知识,希望对你有一定的参考价值。
今天给大家分享一下小编当年大一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");
以上是关于C语言课程设计的主要内容,如果未能解决你的问题,请参考以下文章