----非常火大.cao!去年的程序到今年竟然运行不成功 ,一个 排序问题搞到现在, ╮(╯▽╰)╭...可能不是当时的最终版本...
本来准备 结合 我的 上一次mysql 操作 练习 将数据 保存到 mysql 数据库 的; 没想到....
还没解决....
明天再说! 先洗澡睡觉...吃大亏了今天. ...
先介绍下基本功能:
一个用于存储学生基本信息 的 链表,实现在任意位置 添加,删除,修改,的功能,以及排序功能'
学生有是个属性: 学号,姓名,语文分数,数学分数;
--------------------------------------------------
1.按下'r'开始读取文件信息!
2..按下's'开始对其进行排序!
3.按下'a'开始添加信息!
4.按下'd'删除当前信息!
5.按下'e'修改当前信息!
6.按下'n'显示下一条信息!
7.按下'p'显示上一条信息!
8.按下'v'显示全部信息!
9.按下'w'开始写入所有信息!
10.按下'q'退出程序!
--------------------------------------------------
printf("\n\twarning:排序`写入操作需要先读文件或是写!\n");
排序功能:
---------------------------------------------
printf("\t\t1.按下数字0开始根据No进行排序!\n");
printf("\t\t2.按下数字1开始根据总分进行排序!\n");
printf("\t\t3.按下数字2开始根据数学进行排序!\n");
printf("\t\t4.按下数字3开始根据语文进行排序!\n");
printf("\t\t5.按下其他数字开始根据学号进行排序!\n");
printf("--\t---------------------------------------------\n");
文件结构:
main.c:主函数所在文件
menu.c:菜单显示功能文件
Read.c: 读取文件中学生信息功能的文件
Sort.c:排序功能文件
Student.c:学生信息操作基本文件;包括链表 添加 . 删除 .修改. 和 基本信息 显示功能
Write.c : 学生信息写操作
head.h :头文件
贴下源码(VS C++ 编译器 版本-- linux 环境 版本就不贴了):
2
3 #include<stdio.h>
4 #include"head.h"
5 #include<malloc.h>
6 #include<stdlib.h>
7 #include<stdafx.h>
8 #include <iostream>
9
10 void SetTempValue(struct Student *s)
11 {
12 printf("Input No:\t");
13 scanf("%s",&(s->No));
14
15 printf("Input Name:\t");
16 scanf("%s",&(s->Name));
17
18 printf("Input Maths:\t");
19 scanf("%d",&(s->Maths));
20
21 printf("Input Chi:\t");
22 scanf("%d",&(s->Chi));
23
24 }
25
26
27 struct Student * StudentInit(struct Student *s)
28 {
29 strcpy(s->No,"");
30 strcpy(s->Name,"");
31 s->Maths=0;
32 s->Chi=0;
33 s->Next=NULL;
34 s->Previous=NULL;
35 s->Next=s;
36 return s;
37 }
38
39
40
41 void set(struct Student *p,struct Student *s)
42 {
43 strcpy(p->No,s->No);
44 strcpy(p->Name,s->Name);
45 p->Maths=s->Maths;
46 p->Chi=s->Chi;
47 }
48
49
50 void Add(struct Student *s,struct Student *HL)
51 {
52 struct Student *newS = (struct Student *)malloc(sizeof(struct Student));
53 set(newS,s);
54 //exchange shit!
55 newS->Next=HL->Next;
56 newS->Previous = HL;
57 //注意
58 HL->Next->Previous=newS;
59
60 HL->Next = newS;
61 HL->Previous=NULL;
62 }
63
64 void DeleteThisOne(struct Student *s)
65 {
66 struct Student *L;
67 L=s->Previous;
68 L->Next=s->Next;
69 s->Next->Previous=L;
70 free(s);
71 }
72
73 void Edit(struct Student *des,struct Student *src)
74 {
75 strcpy(des->No,src->No);
76 strcpy(des->Name,src->Name);
77 des->Maths=src->Maths;
78 des->Chi=src->Chi;
79
80 }
81
82 void DisplayThisOne(struct Student *s)
83 {
84 printf("\tNo: %s\n",s->No);
85 printf("\tName: %s\n",s->Name);
86 printf("\tMaths: %d\n",s->Maths);
87 printf("\tChi: %d\n",s->Chi);
88 printf("\tChi: %d\n",s->Chi+s->Maths);
89 }
90
91 void DisplayAll(struct Student *head)
92 {
93 head=head->Next;
94 while(head->Previous!=NULL)
95 {
96 printf("\tNo: %s\n",head->No);
97 printf("\tName : %s\n",head->Name);
98 printf("\tMaths: %d\n",head->Maths);
99 printf("\tChi: %d\n",head->Chi);
100 printf("\tSum: %d\n",head->Chi+head->Maths);
101 printf("-------------------------------------------------------------\n");
102 head=head->Next;
103 }
104 }
105
sort.c:
read.c
write.c:
menu.c
head.h
好了代码贴完 收工!