今天给大家分享一下小编当年大一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"); } }