速求c++毕业生就业管理系统 要用链表类实现对数据的操作
发布网友
发布时间:2022-11-04 05:15
我来回答
共4个回答
热心网友
时间:2023-11-02 23:50
我只有不能实现文件写入读取的。你看看吧。其它的都符合要求
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
struct student {
char name[30];
int num;
int mathy;
int english;
int PE;
int sums;
struct student *link;
};
struct student *head=NULL;
void insertNode(void);
void deleteNode(int tnum);
void modifyNode(int tnum);
void findNode(int tnum);
void displayNode(void);
void sumSort(void);
void showmenu(void);
int main(void) {
printf("========毕业生就业管理系统========\n");
showmenu();
return 0;
}
void showmenu(void) {
int menuid=1;
while(menuid!=0) {
printf("\n");
printf("\t功能菜单\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(" 请选择:");
scanf("%d",&menuid);
switch(menuid) {
case 1:
fflush(stdin);
insertNode();
break;
case 2:
fflush(stdin);
displayNode();
break;
case 3:
fflush(stdin);
deleteNode(0);
break;
case 4:
fflush(stdin);
modifyNode(0);
break;
case 5:
fflush(stdin);
findNode(0);
break;
case 6:
fflush(stdin);
sumSort();
break;
case 0:
fflush(stdin);;
break;
default:
printf("无此项,请重新选择!\n");
}
}
}
void insertNode(void) {
char yesorno='Y';
printf("新建一个学生的记录? (Y/N):");
scanf("%c",&yesorno);
while(yesorno=='Y'||yesorno=='y') {
struct student *p,*pr=NULL;
p=(struct student *)malloc(sizeof(struct student));
if(p==NULL) {
printf("没有足够的内存,程序执行错误\n");
exit(0);
}else{
printf("请输入学生的学号:");
fflush(stdin);
scanf("%d",&p->num);
printf("请输入学生的姓名:");
fflush(stdin);
scanf("%s",&p->name);
printf("请输入学生的就业与否:");
fflush(stdin);
scanf("%d",&p->mathy);
printf("请输入学生的工作单位:");
fflush(stdin);
scanf("%d",&p->english);
printf("请输入学生的毕业成绩:");
fflush(stdin);
scanf("%d",&p->PE);
printf("请输入学生的年薪:");
fflush(stdin);
scanf("%d",&p->sums);
}
if(head==NULL) {
head=p;
head->link=NULL;
}else{
pr=head;
while(pr->link!=NULL) {
pr=pr->link;
}
pr->link=p;
p->link=NULL;
}
printf("继续新建一个学生的记录? (Y/N):");
fflush(stdin);
scanf("%c",&yesorno);
}
}
void displayNode(void) {
struct student *p;
p=head;
printf("\n");
printf("\t\t一览\n");
printf("\n");
printf("学号\t姓名\t就业否\t工作单位\t毕业成绩\t年薪\n");
printf("============================================\n");
while(p!=NULL) {
printf("%d\t%s\t%d\t%d\t%d\t%d\n",p->num,p->name,p->mathy,p->english,p->PE,p->sums);
p=p->link;
}
}
void deleteNode(int tnum) {
struct student *p,*pr=NULL;
printf("请输入要删除的学生学号:");
scanf("%d",&tnum);
p=head;
pr=p;
while(p->link!=NULL) {
if(p->num==tnum) {
if(head==p){
head=p->link;
}else{
pr->link=p->link;
free(p);
}
printf("已删除%d\n",tnum);
return;
}
pr=p;
p=p->link;
}
printf("未找到学生%d\n",tnum);
}
void modifyNode(int tnum) {
struct student *p=NULL;
printf("请输入要修改的学生学号:");
scanf("%d",&tnum);
p=head;
while(p->link!=NULL) {
if(p->num==tnum) {
printf("\n");
printf("\t\t当前数据\n");
printf("\n");
printf("学号\t姓名\t就业否\t工作单位\t毕业成绩\t年薪\n");
printf("============================================\n");
printf("%d\t%s\t%d\t%d\t%d\t%d\n",p->num,p->name,p->mathy,p->english,p->PE,p->sums);
printf("请输入新信息\n");
fflush(stdin);
printf("请输入学生的姓名:");
fflush(stdin);
scanf("%s",&p->name);
printf("请输入学生的就业与否:");
fflush(stdin);
scanf("%d",&p->mathy);
printf("请输入学生的工作单位:");
fflush(stdin);
scanf("%d",&p->english);
printf("请输入学生的毕业成绩:");
fflush(stdin);
scanf("%d",&p->PE);
printf("请输入学生的年薪:");
fflush(stdin);
scanf("%d",&p->sums);
printf("修改成功%d\n",tnum);
return;
}
p=p->link;
}
printf("未找到学生%d\n",tnum);
}
void findNode(int tnum) {
struct student *p=NULL;
printf("请输入要修改的学生学号:");
scanf("%d",&tnum);
p=head;
while(p->link!=NULL) {
if(p->num==tnum) {
printf("\n");
printf("\t\t查找结果\n");
printf("\n");
printf("学号\t姓名\t就业否\t工作单位\t毕业成绩\t年薪\n");
printf("============================================\n");
printf("%d\t%s\t%d\t%d\t%d\t%d\n",p->num,p->name,p->mathy,p->english,p->PE,p->sums);
return;
}
p=p->link;
}
printf("未找到学生%d\n",tnum);
}
void sumSort(void) {
struct student *p,*pn,*pt=NULL;
pt=(struct student *)malloc(sizeof(student));
for(p=head;p->link!=NULL;p=p->link) {
for(pn=p->link;pn!=NULL;pn=pn->link) {
if((p->sums)<(pn->sums)) {
pt->english=p->english;
pt->mathy=p->mathy;
pt->PE=p->PE;
pt->num=p->num;
pt->sums=p->sums;
strcpy(pt->name,p->name);
p->english=pn->english;
p->mathy=pn->mathy;
p->PE=pn->PE;
p->num=pn->num;
p->sums=pn->sums;
strcpy(p->name,pn->name);
pn->english=pt->english;
pn->mathy=pt->mathy;
pn->PE=pt->PE;
pn->num=pt->num;
pn->sums=pt->sums;
strcpy(pn->name,pt->name);
}
}
}
printf("排序结果\n");
displayNode();
}
热心网友
时间:2023-11-02 23:51
你最少要出1000分
热心网友
时间:2023-11-02 23:51
你阿是也信管哒。。。我也提了耶
热心网友
时间:2023-11-02 23:52
很简单的,但我不帮人写作业!