首页 数据结构课程设计学生管理系统

数据结构课程设计学生管理系统

举报
开通vip

数据结构课程设计学生管理系统 #include #include #include #include #include //建立结构体 struct student{ long num;//学号 char name[10];//姓名 char sex[10];//性别 char id[20];//身份证号 char adress[80];//家庭地址 long tel; //电话号码 struct student * next; }; /*此学生信息管理系统一共分为八个模块,分别为信息录入、信息浏览、信息查询...

数据结构课程设计学生管理系统
#include #include #include #include #include //建立结构体 struct student{ long num;//学号 char name[10];//姓名 char sex[10];//性别 char id[20];//身份证号 char adress[80];//家庭地址 long tel; //电话号码 struct student * next; }; /*此学生信息管理系统一共分为八个模块,分别为信息录入、信息浏览、信息查询、信息删除、信息修改、信息插入、信息保存、信息读取,其中信息保存和信息读取为隐藏模块。系统界面清晰,操作简单,用户输入密码之后就可进入进行各种操作。*/FILE *fp;//文件指针 int count=0;//记录学生数量 struct student *head; //学生信息录入 struct student *input(){ struct student *head=NULL; //定义头指针 struct student *p1,*p2; //定义结点 while(1){ int choice; printf(" |------------------| \n"); printf(" | 【1】录入学生信息| \n"); printf(" | 【0】退 出| \n"); printf(" |------------------| \n"); printf(" 请输入你的选择:"); scanf("%d",&choice); if(choice==1){ printf(" *****学生信息录入模块***** \n"); p1=(struct student *)malloc(sizeof(struct student));//开辟一个新结点 printf(" 请 输 入 学 号: "); scanf("%ld",&p1->num); printf(" 请 输 入 姓 名: "); scanf("%s",p1->name); printf(" 请 输 入 性 别:"); scanf("%s",p1->sex); printf(" 请输入身份证号:"); scanf("%s",&p1->id); printf(" 请输入家庭住址:"); scanf("%s",p1->adress); printf(" 请输入手机号:"); scanf("%ld",&p1->tel ); count++; if(head==NULL){ head=p1; } else p2->next=p1;//p1指向下一个结点 p2=p1; } else if(choice==0) break; else printf(" 选择错误!请重新选择!\n"); } p1->next=NULL; return head; } //学生信息浏览 void displayall(struct student *head){ struct student *p1=head; if(head==NULL){ printf("无学生信息!\n"); return; } else{ printf("总共有%d个学生!\n",count); printf(" 所有学生信息为:\n"); printf("***************************************************************\n"); while(p1!=NULL){ printf("\n学号:%ld\n姓名:%s\n性别:%s\n身份证号:%s\n家庭住址:%s\n手机号:%ld\n\n", p1->num, p1->name,p1->sex,p1->id,p1->adress,p1->tel); p1=p1->next; } } } void display(struct student *p1){ { printf(" 该学生信息为:\n"); printf("***************************************************************\n"); printf(" \n学号\t姓名\t性别\t身份证号\t家庭住址\t手机号\n"); printf("%ld\t%s\t%s\t%s\t\t%s\t\t%ld\n", p1->num, p1->name,p1->sex,p1->id,p1->adress,p1->tel); } } //查询学生信息 struct student *query(struct student *head){ struct student *p1; int choice; int num; char name[10]; if(head==NULL) { printf("链 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 为空或无学生记录!\n"); return head; } while(1){ printf(" |---------------|\n"); printf(" |【1】按学号查询|\n"); printf(" |【2】按姓名查询|\n"); printf(" |【0】退 出|\n"); printf(" |---------------|\n"); printf(" 请输入你的选择:"); scanf("%d",&choice); if(choice==1){ printf(" 请输入要查询学生的学号:"); scanf("%ld", &num); p1=head; while(1){ if(num == p1->num) { printf(" *****找到该学生信息*****\n"); display(p1); break; } if(p1->next==NULL){ printf(" 没有学号为%d的学生信息!\n",num); break; } else p1=p1->next; } } else if(choice==2){ printf(" 请输入要查询学生的姓名:"); scanf("%s", name); p1=head; if(strcmp(name, p1->name)==0){ printf(" *****找到该学生信息*****\n"); display(p1); } else{ while((strcmp(name, p1->name)!=0)&& p1->next!=NULL) { p1=p1->next; if(strcmp(name, p1->name)==0){ printf(" *****找到该学生信息*****\n"); display(p1); break; } else printf(" 没有姓名为%s的学生!\n",name); } } } else if(choice==0) break; else printf(" 选择错误!\n"); } return (p1); } //删除学生信息 struct student *del(struct student *head){ struct student * p1, * p2; int num,choice; if(head==NULL){ printf(" 链表为空或无学生记录!\n"); return head; } printf(" 请输入要删除的学生学号:"); scanf("%ld",&num); p1=head; while(1){ if(num == p1->num) { printf(" ****找到该学生信息****\n"); display(p1); break; } if(p1->next==NULL){ printf(" 没有学号为%d的学生信息!\n",num); return head; } else{ p2=p1; p1=p1->next; } } printf(" |-------------|\n"); printf(" |【1】确认删除|\n"); printf(" |【0】返 回|\n"); printf(" |-------------|\n"); printf(" 请输入你的选择:"); scanf("%d",&choice); if(choice==1){ count--; if(p1 == head) head=p1->next; else p2->next=p1->next; free(p1); printf(" 该学生信息已删除!\n"); } else if(choice==0) return head; else printf("无效选择,请重新输入!"); return head; }//修改学生信息 struct student *change(struct student *head){ struct student *p1,*p2; int choice; long num; int flog; if(head==NULL){ printf(" 链表为空或无学生记录!\n"); return head; } printf(" 请输入要修改的学生的学号:"); scanf("%ld",&num); p1=head; while(1){ if(num == p1->num) { flog=1; break; } if(p1->next==NULL){ flog=0; break; } else{ p2=p1; p1=p1->next; } } if(flog==0){ printf(" 没有学号为%d的学生信息!\n",num); } else if(flog==1){ printf(" ****找到该学生信息****\n"); display(p1); while(1){ printf(" |**********************|\n"); printf(" |【1】修 改 姓 名 |\n"); printf(" |【2】修 改 性 别 |\n"); printf(" |【3】修改身份证号 |\n"); printf(" |【4】修改家庭住址 |\n"); printf(" |【5】修改电话号码 |\n"); printf(" |【0】退 出 |\n"); printf(" |**********************|\n"); printf(" 请输入你的选择:"); scanf("%d",&choice); switch(choice){ case 1:{ printf(" 请输入修改后的姓名:"); scanf("%s",p1->name); break; } case 2:{ printf(" 请输入修改后的性别:"); scanf("%s",p1->sex); break; } case 3:{ printf(" 请输入修改后的身份证号:"); scanf("%s",&p1->id); break; } case 4:{ printf(" 请输入修改后的家庭住址:"); scanf("%s",p1->adress); break; } case 5:{ printf(" 请输入修改后的电话号码:"); scanf("%ld",&p1->tel); break; } case 0: return head; default: printf(" 无效选择,请重新输入!\n"); } } } return head; }//插入一个学生信息 struct student *insert(struct student *head){ struct student *p1,*p2,*insertstu; int place,choice,mark=0,num=0; if(head==NULL){ printf(" 信息为空请选择信息录入!\n"); return head; } while(1){ printf(" |-------------|\n"); printf(" |【1】继 续|\n"); printf(" |【0】退 出|\n"); printf(" |-------------|\n"); printf(" 请输入你的选择:"); scanf("%d",&choice); if(choice==1){ insertstu=(struct student *)malloc(sizeof(struct student)); displayall(head); printf(" 请输入要插入的位置:"); scanf("%d",&place); if(place==1){ mark=1; insertstu->next=head; head=insertstu; } else{ for(p2=p1=head,num=1;p1->next !=NULL;p2=p1,p1=p1->next,num++){ if(num==place){ mark=1; insertstu->next=p1; p2->next=insertstu; break; } } if(place==num){ mark=1; insertstu->next=p1; p2->next=insertstu; } else if(place==num+1){ mark=1; p1->next=insertstu; insertstu->next=NULL; } else if(place>num+1){ printf(" 超出插入范围,请核对!\n"); continue; } } if(mark==1){ printf(" 请输入要插入的学生信息!\n"); printf(" 请 输 入 学 号:"); scanf("%ld",&insertstu->num); printf(" 请 输 入 姓 名:"); scanf("%s",insertstu->name); printf(" 请 输 入 性 别:"); scanf("%s",insertstu->sex); printf(" 请输入身份证号:"); scanf("%s",&insertstu->id); printf(" 请输入家庭住址:"); scanf("%s",insertstu->adress); printf(" 请输入手 机 号:"); scanf("%ld",&insertstu->tel ); count++; display(insertstu); } } else if(choice==0) break; else printf("无效选择,请重新输入!\n"); } return head; } //学生信息保存 int SaveStudent(struct student *head){ struct student *p1; p1=head; if((fp=fopen("student.txt","w+"))==NULL){ printf("文件打开失败!\n"); exit(0); } fprintf(fp,"%d\n",count); fprintf(fp,"学号\t姓名\t性别\t身份证号\t家庭住址\t手机号\n"); while(p1!=NULL){ fprintf(fp,"%ld\t%s\t%s\t%s\t\t%s\t\t%ld\n", p1->num, p1->name,p1->sex,p1->id,p1->adress,p1->tel); p1=p1->next; } return 1; fclose(fp); } void freeAll(struct student *head){ struct student *p1, *p2; p1=p2=head; while(p1){ p2=p1->next; free(p1); p1=p2; } } struct student *LoadStudent(){ struct student *head; struct student *p1, *p2; fp = fopen("student.txt", "r+"); if (!fp){ printf("文件打开错误!\n"); exit(0); } fscanf(fp,"%d\n", &count); fscanf(fp, "学号\t姓名\t性别\t身份证号\t家庭住址\t手机号\n"); head=p1=p2=(struct student *)malloc(sizeof(struct student)); fscanf(fp,"%ld%s%s%s%s%ld\n", &p1->num, p1->name,p1->sex,&p1->id,p1->adress,&p1->tel); while(!feof(fp)){ p1=(struct student *)malloc(sizeof(struct student)); fscanf(fp,"%ld%s%s%s%s%ld\n", &p1->num, p1->name,p1->sex,&p1->id,p1->adress,&p1->tel); p2->next=p1; p2=p1; } p2->next = NULL; fclose(fp); return head; } //主菜单 void menu(struct student *head){ int n; while(1){ int choice; 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(" 请输入你的选择:"); scanf("%d",&choice); switch(choice){ case 1:{ if(head==NULL){ head=input(); } else{ head=insert(head); } break; } case 2:{ displayall(head); break; } case 3:{ query(head); break; } case 4:{ head=del(head); break; } case 5:{ change(head); break; } case 6:{ head=insert(head); break; } case 0:{ n=SaveStudent(head); freeAll(head); printf("信息已成功保存!\n"); return; } default: printf("无效选项,请重新输入!\n"); } } } //欢迎界面 void welcome(){ int choice; printf(" ************************\n"); printf(" * *\n"); printf(" * 欢迎使用学生信息系统 *\n"); printf(" * *\n"); printf(" ************************\n"); printf(" * *\n"); printf(" ************************\n"); printf(" |【1】继续 |\n"); printf(" |【0】退出 |\n"); printf(" |------------|\n"); printf(" 请输入你的选择:"); scanf("%d",&choice); system("cls"); if(choice==1){ if((fp=fopen("student.txt","r+"))==NULL){ menu(head); } else{ head=LoadStudent(); menu(head); } } else{ return; } } //程序入口 void main(){ char userName[9]; char userPWD[7]; int i; for(i=0;i<3;i++){ printf("\n\n\n\n\n\n\n"); printf("\n请输入您的用户名:"); scanf("%s", userName); printf("\n请输入您的密码:"); scanf("%s", userPWD); if ((strcmp(userName,"123")==0) && (strcmp(userPWD,"123")==0)){ printf("用户名和密码输入正确!\n"); system("cls"); //用户名和密码正确,显示欢迎菜单 welcome(); break; } else{ if(i<2){ system("cls"); //用户名或密码错误,提示用户重新输入 printf("用户名或密码错误,请重新输入!"); } else{ system("cls"); //连续3次输错用户名或密码,退出系统。 printf("您已连续3次将用户名或密码输错,系统将退出!\n"); } } } }
本文档为【数据结构课程设计学生管理系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_890419
暂无简介~
格式:doc
大小:77KB
软件:Word
页数:12
分类:工学
上传时间:2013-01-21
浏览量:64