数据结构课程设计学生管理系统
#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,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。