数据结构课程设计 建立一个学生管理系统,以单链表的形式存储,学生信息包括学号,姓名,年龄,出勤,奖励惩罚,电话号码
2018-01-30 15:52
761 查看
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#define MAC 1000
#define INCR 100
typedef struct Student{
int Id;
char name[20];
int age;
char phonenum[20];
int ChuQin;//出勤
int reward;//奖励
int penaty;//惩罚
}Student;
typedef struct Lnode {
Student data;
struct Lnode *next;
}Lnode,*LinkList;
void CreatLinkList(LinkList &L){//存放学生信息的建立单链表 并将其存至文件 Student.txt
int n;
FILE *fp;
fp=fopen("Student.txt","aw");
fprintf(fp,"学生人数: %d \n录入每人的基本信息后 :\n",n);
fclose(fp);
printf("请输入学生的人数:\n");
scanf("%d",&n);
Student stu
;
LinkList pre,p;
L=(Lnode *)malloc(sizeof(Lnode));
pre=L;
printf("请输入学生的相关信息:\n");
printf("学号
姓名 年龄 出勤
奖励 惩罚
电话号码 \n");
for(int i=0;i<n;i++){
p=(LinkList)malloc(sizeof(Lnode));
scanf("%d",&p->data.Id);
getchar();
scanf("%s",p->data.name);
getchar();
scanf("%d%d%d%d%s",&p->data.age,&p->data.ChuQin,&p->data.reward,&p->data.penaty,p->data.phonenum);
pre->next=p;
pre=p;
}
pre->next=NULL;
}
void Output(LinkList L){//输出学生信息并将每次的输出结果存至文件Student.txt
printf("输出学生信息:\n");
LinkList pre;
pre=L->next;
while(pre){
printf("%d\t",pre->data.Id);
printf("%s\t",pre->data.name);
printf("%d\t%d\t%d\t%d\t%s",pre->data.age,pre->data.ChuQin,pre->data.reward,pre->data.penaty,pre->data.phonenum);
pre=pre->next;
printf("\n");
}
FILE *fp;
fp=fopen("Student.txt","aw");
fprintf(fp,"学生信息为:\n");
while(pre){
fprintf(fp,"%d\t",pre->data.Id);
fprintf(fp,"%s\t",pre->data.name);
fprintf(fp,"%d\t%d\t%d\t%d\t",pre->data.age,pre->data.ChuQin,pre->data.reward,pre->data.penaty);
pre=pre->next;
}
fprintf(fp,"\n");
fclose(fp);
}
void Delet(LinkList &L){//删除其中一个人员
int num;
FILE *fp;
fp=fopen("Student.txt","aw");
fprintf(fp,"要删除的学生学号: %d\n",num);
fclose(fp);
LinkList p,q;
printf("输入要删除人员的学号:\n");
scanf("%d",&num);
p=L;
q=p;//让q记住p并且q一直在p的前面
p=p->next;
while(p){
if(p->data.Id==num){
q->next=p->next;//
free(p);
break;
}
p=p->next;
q=q->next;
}
}
void Search(LinkList L){//查找一个学生并输出他的信息
int num;
FILE *fp;
printf("请输入要输入要查询人员的学号:\n");
scanf("%d",&num);
fp=fopen("Student.txt","aw");
fprintf(fp,"要查询的学生学号: %d\n",num);
LinkList p;
p=L->next;
while(p){
if(p->data.Id==num){//当这个结点的数据域里的学号与输入的一致时,就终止程序输出这个结点的其他信息
printf("%d\t",p->data.Id);
printf("%s\t",p->data.name);
printf("%d\t%d\t%d\t%d\t%s",p->data.age,p->data.ChuQin,p->data.reward,p->data.penaty,p->data.phonenum);
break;
}
p=p->next;
}
if(p){
fprintf(fp,"该学生信息为:\n");
fprintf(fp,"该学生信息为:\n");
fprintf(fp,"学号: %d",p->data.Id);
fprintf(fp,"姓名: %s",p->data.name);
fprintf(fp,"电话: %d",p->data.phonenum);
fprintf(fp,"年龄: %d",p->data.age);
fprintf(fp,"考勤: %d",p->data.ChuQin);
fprintf(fp,"奖励: %d\n",p->data.reward);
fprintf(fp,"惩罚: %d\n",p->data.penaty);
}
}
void SortId(LinkList &L){//按照学号进行插入排序
LinkList p,q,r,s;
p=L->next;//指向链表的第一个结点
while(p->next){//遍历链表
q=p->next;
if(q->data.Id<p->data.Id){
r=L;//指向原链表的头结点
s=L->next;
while(s!=p && s->data.Id < q->data.Id){
r=s;//记录前驱结点
s=s->next;//继续遍历
}
p->next=q->next;//交换结点
q->next=s;
r->next=q;
}
else{
p=p->next;
}
}
}
int main(){
LinkList L;
CreatLinkList(L);
SortId(L);
Output(L);
Delet(L);
Output(L);
Search(L);
printf("\n");
return 0;
}
#include <stdlib.h>
#include<string.h>
#define MAC 1000
#define INCR 100
typedef struct Student{
int Id;
char name[20];
int age;
char phonenum[20];
int ChuQin;//出勤
int reward;//奖励
int penaty;//惩罚
}Student;
typedef struct Lnode {
Student data;
struct Lnode *next;
}Lnode,*LinkList;
void CreatLinkList(LinkList &L){//存放学生信息的建立单链表 并将其存至文件 Student.txt
int n;
FILE *fp;
fp=fopen("Student.txt","aw");
fprintf(fp,"学生人数: %d \n录入每人的基本信息后 :\n",n);
fclose(fp);
printf("请输入学生的人数:\n");
scanf("%d",&n);
Student stu
;
LinkList pre,p;
L=(Lnode *)malloc(sizeof(Lnode));
pre=L;
printf("请输入学生的相关信息:\n");
printf("学号
姓名 年龄 出勤
奖励 惩罚
电话号码 \n");
for(int i=0;i<n;i++){
p=(LinkList)malloc(sizeof(Lnode));
scanf("%d",&p->data.Id);
getchar();
scanf("%s",p->data.name);
getchar();
scanf("%d%d%d%d%s",&p->data.age,&p->data.ChuQin,&p->data.reward,&p->data.penaty,p->data.phonenum);
pre->next=p;
pre=p;
}
pre->next=NULL;
}
void Output(LinkList L){//输出学生信息并将每次的输出结果存至文件Student.txt
printf("输出学生信息:\n");
LinkList pre;
pre=L->next;
while(pre){
printf("%d\t",pre->data.Id);
printf("%s\t",pre->data.name);
printf("%d\t%d\t%d\t%d\t%s",pre->data.age,pre->data.ChuQin,pre->data.reward,pre->data.penaty,pre->data.phonenum);
pre=pre->next;
printf("\n");
}
FILE *fp;
fp=fopen("Student.txt","aw");
fprintf(fp,"学生信息为:\n");
while(pre){
fprintf(fp,"%d\t",pre->data.Id);
fprintf(fp,"%s\t",pre->data.name);
fprintf(fp,"%d\t%d\t%d\t%d\t",pre->data.age,pre->data.ChuQin,pre->data.reward,pre->data.penaty);
pre=pre->next;
}
fprintf(fp,"\n");
fclose(fp);
}
void Delet(LinkList &L){//删除其中一个人员
int num;
FILE *fp;
fp=fopen("Student.txt","aw");
fprintf(fp,"要删除的学生学号: %d\n",num);
fclose(fp);
LinkList p,q;
printf("输入要删除人员的学号:\n");
scanf("%d",&num);
p=L;
q=p;//让q记住p并且q一直在p的前面
p=p->next;
while(p){
if(p->data.Id==num){
q->next=p->next;//
free(p);
break;
}
p=p->next;
q=q->next;
}
}
void Search(LinkList L){//查找一个学生并输出他的信息
int num;
FILE *fp;
printf("请输入要输入要查询人员的学号:\n");
scanf("%d",&num);
fp=fopen("Student.txt","aw");
fprintf(fp,"要查询的学生学号: %d\n",num);
LinkList p;
p=L->next;
while(p){
if(p->data.Id==num){//当这个结点的数据域里的学号与输入的一致时,就终止程序输出这个结点的其他信息
printf("%d\t",p->data.Id);
printf("%s\t",p->data.name);
printf("%d\t%d\t%d\t%d\t%s",p->data.age,p->data.ChuQin,p->data.reward,p->data.penaty,p->data.phonenum);
break;
}
p=p->next;
}
if(p){
fprintf(fp,"该学生信息为:\n");
fprintf(fp,"该学生信息为:\n");
fprintf(fp,"学号: %d",p->data.Id);
fprintf(fp,"姓名: %s",p->data.name);
fprintf(fp,"电话: %d",p->data.phonenum);
fprintf(fp,"年龄: %d",p->data.age);
fprintf(fp,"考勤: %d",p->data.ChuQin);
fprintf(fp,"奖励: %d\n",p->data.reward);
fprintf(fp,"惩罚: %d\n",p->data.penaty);
}
}
void SortId(LinkList &L){//按照学号进行插入排序
LinkList p,q,r,s;
p=L->next;//指向链表的第一个结点
while(p->next){//遍历链表
q=p->next;
if(q->data.Id<p->data.Id){
r=L;//指向原链表的头结点
s=L->next;
while(s!=p && s->data.Id < q->data.Id){
r=s;//记录前驱结点
s=s->next;//继续遍历
}
p->next=q->next;//交换结点
q->next=s;
r->next=q;
}
else{
p=p->next;
}
}
}
int main(){
LinkList L;
CreatLinkList(L);
SortId(L);
Output(L);
Delet(L);
Output(L);
Search(L);
printf("\n");
return 0;
}
相关文章推荐
- 编写一个学生信息管理系统:学生信息包括有(学生学号、姓名、性别、手机号码),系统以学生对象数组的方式存储学生信息 (初始数组为10个元素,每当数组存储满时,需要进行扩容,规则可以为翻倍也可以固定增长
- 编写程序:建立一个学生数据链表,每个节点的信息包括如下内容:学号,姓名,性别年龄专业。对链表做如下处理。输入一个学号(专业),如果链表中的节点包含此学号(专业),则删去该结点。
- 创建一个学生类(Student),包括学号成绩,编程输入和显示学生的信息。建立一个人类(Person),包含姓名、性别和年龄,并作为学生类的基类
- 创建一个学生类(Student),包括学号和成绩,编程输入和显示学生的信息,建立一个人类(Person),包含姓名、性别和年龄,并作为学生类的基类
- 【C++】建立一个学生信息链表,每个结点包括:学号、姓名、成绩。【原创技术】
- 【C++】建立一个学生信息链表,每个结点包括:学号、姓名、成绩。【原创技术】
- 笔试题:创建一个单链表,结点包含学生的学号,姓名,性别,年龄信息.写几个程序,实现按学生学号插入,查询,删除等操作.
- 学生社团管理系统 任务:通过此系统可以实现如下功能(包含但不限于以下功能,可自行设计): 1、社团信息包括:社团编号、社团名称、成立时间…… 2、学生信息包括:学号、姓名、性别、年级、专业…… 3
- 题目: 编写一个学生类Students,该类成员变量包括学号no、姓名name、性别sex和年龄age
- 编写一个学生类Students,该类成员变量包括学号no、姓名name、性别sex和年龄age,该类的成员方法有genNo()getName ). * getSex().getAge().和setA
- 一个学生的信息是:姓名,学号,性别,年龄等信息,用一个链表,把这些学生信息连在一起, 给出一个age, 在些链表中删除学生年龄等于age的学生信息
- 编写一个学生类Students,该类成员变量包括学号no、姓名name、性别sex和年龄age
- 一个学生的信息是:姓名,学号,性别,年龄等信息,用一个链表,把这些学生信息连在一起, 给出一个age, 在些链表中删除学生年龄等于age的学生信息。
- 学生信息是:姓名,学号,性别,年龄,用一个链表,把这些信息连在一起,给出一个age, 在些链表中删除学生年龄等于age的学生信息。
- 编写一个学生类Students,该类成员变量包括学号no、姓名name、性别sex和年龄age,该类的成员方法有genNo()getName ). * getSex().getAge().和setA
- 一个学生的信息是:姓名,学号,性别,年龄等信息,用一个链表,把这些学生信息连在一起, 给出一个age, 在 链表中删除学生年龄等于age的学生信息。
- 2.实现一个通讯录; 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址 提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联
- (4)一个学生的信息是:姓名,学号,性别,年龄等信息,用一个链表,把这些学生信息连在一起, 给出一个age, 在些链表中删除学生年龄等于age的学生信息。
- 编写一个学生类Students,该类成员变量包括学号no、姓名name、性别sex和年龄age,该类的成员方法有genNo()getName ). * getSex().getAge().和setA
- 【C语言】建立一个数组存储学生的学号、姓名和三门课程成绩和平均成绩【原创技术】