欢迎加qq群:453398542 学习讨论,会定期分享资料课程,解答问题。
班级日常工作管理系统
【问题描述】
在以单链表表示的有序的班级日常工作系统中,实现系统的建立、人员的删除、查询以及人员的保存。
(1)用单链表存储通日常班级工作数据(包括学号、姓名、电话、年龄、考勤、奖惩);
(2)对单链表中的数据按学号进行排序;
(3)将操作结果保存在文件中。
数据中包含的学号是四位整数,手机号必须是13位。
#include<stdio.h>
#include<stdlib.h>
#define N 20
typedef struct{
int num;
char name[N];
char tel[13];
int age;
int kaoqin;
int jiangfa;
}Student;
typedef struct LNode{
Student stu;
struct LNode *next;
}LNode,*LinkList;
void InitList(LinkList &L){
LinkList pre,p;
Student s;
int i,n;
printf("输入学生个数:");
scanf("%d",&n);
printf("输入%d名学生的学号(4位)、姓名、电话(13位)、年龄、考勤(1/0)、奖惩(1/0)\n",n);
L=pre=(LinkList)malloc(sizeof(LNode));
for(i=0;i<n;i++){
scanf("%d %s %s%d%d%d",&s.num,s.name,s.tel,&s.age,&s.kaoqin,&s.jiangfa);
p=(LinkList)malloc(sizeof(LNode));
p->stu=s;
pre->next=p;
pre=p;
}
pre->next=NULL;
}
void Sort(LinkList &L){
LinkList p,q,k;
Student s;
p=L->next;
while(p){
k=p;
q=p->next;
while(q){
if(q->stu.num<p->stu.num){
k=q;
}
q=q->next;
}
if(k!=p){
s=p->stu;
p->stu=k->stu;
k->stu=s;
}
p=p->next;
}
}
void Save(LinkList L){
LinkList p;
FILE *fp;
fp=fopen("student.txt","w");
p=L->next;
while(p){
fprintf(fp,"%d %s %s %d %d %d\n",p->stu.num,p->stu.name,p->stu.tel,p->stu.age,p->stu.kaoqin,p->stu.jiangfa);
p=p->next;
}
fclose(fp);
}
void Chaxun(LinkList L){
int n;
LinkList p,q;
printf("输入要查询学生的学号:");
scanf("%d",&n);
p=L->next;
while(p&&p->stu.num!=n){
p=p->next;
}
printf("%d %s %s %d %d %d\n",p->stu.num,p->stu.name,p->stu.tel,p->stu.age,p->stu.kaoqin,p->stu.jiangfa);
}
void Insert(LinkList &L){
LinkList p,q;
Student s;
printf("输入要插入学生的学号(4位)、姓名、电话(13位)、年龄、考勤(1/0)、奖惩(1/0)\n");
scanf("%d %s %s%d%d%d",&s.num,s.name,s.tel,&s.age,&s.kaoqin,&s.jiangfa);
p=L;
while(p->next&&p->next->stu.num<s.num){
p=p->next;
}
q=(LinkList)malloc(sizeof(LNode));
q->stu=s;
q->next=p->next;
p->next=q;
}
void Delete(LinkList &L){
int n;
LinkList p,q;
printf("输入要删除学生的学号:");
scanf("%d",&n);
p=L;
while(p->next&&p->next->stu.num!=n){
p=p->next;
}
p->next=p->next->next;
}
int main(){
LinkList L;
InitList(L);
Sort(L);
Save(L);
Insert(L);
Save(L);
Delete(L);
Save(L);
Chaxun(L);
return 0;
}