本文实例为大家分享了C语言学生信息管理系统的具体代码,供大家参考,具体内容如下
代码:
//以单链表作为存储结构,设计和实现课程成绩管理的完整程序。
//程序包括如下功能。
//1.建立学生成绩表,包含学生的学号、姓名和成绩。
//2.可以显示所有学生成绩。
//3.可以计算学生的总数。
//4.可以按学号和序号查找学生。
//5.可以在指定位置插入学生成绩数据。
//6.可以删除指定位置的学生数据。
//7.可以把学生成绩按从高到低的顺序排序。
//作者: yinlinqvan
//操作系统:Mac OS X
//编译器:gcc
#include "string.h"
#include "sys/malloc.h"
#include "stdlib.h"
#include "stdio.h"
#include "time.h"
#include "sys/types.h"
#define MAXSIZE 100
typedef struct Student
{
char sname[9];
char sno[5];
int score;
}DataType;
typedef struct
{
DataType data;
struct Node *next;
}linkList;
linkList * inputdata();
void display(linkList * p);
//遍历链表
void displayAll(linkList * L);
//插入
linkList * createTailList();//尾插
linkList * createHeadList();//头插
//查询
void getElem(linkList * L, int i);//按序号
void locateElemBysno(linkList * L, char ch[]);//按值
void locateElemBysname(linkList * L, char ch[]);
int lengthList(linkList * L);
//插入
void insertElem(linkList * L, int i);//在第i个结点前进行插入
void insertElemBysno(linkList * L, char ch[5]);//按学号
void deleteElem(linkList * L, char ch[]);
//排序
void insertSort(linkList * L);
int menue();
int main(int argc,char *argv[])
{
linkList *L;
char sno[5] = {' '};
char sname[9] = {' '};
int b = 1;
int i = 1;
while (b) {
switch(menue())
{
case 1:
L = createTailList();
//L = createHeadList();
break;
case 2:
//displayAll(L);
printf("t◎输入插入哪个位置前:");
scanf("%d", &i);
insertElem(L, i);
//scanf("%s", sno);
//insertElemBysno(L, sno);
break;
case 3:
printf("t◎输入待删除学生的学号:");
scanf("%s", sno);
deleteElem(L, sno);
break;
case 4:
printf("╭═══════════════════════════════╮n");
printf("║t学生总数为:%dtt║n", lengthList(L));
printf("╰═══════════════════════════════╯nn");
break;
case 5:
printf("t◎输入待查找学生的学号:");
scanf("%s", sno);
locateElemBysno(L, sno);
break;
case 6:
printf("t◎输入待查学生的位置:");
scanf("%d", &i);
getElem(L, i);
break;
case 7:
displayAll(L);
break;
case 8:
insertSort(L);
break;
case 9:
i = 2;
while (i)
{
system("clear");
printf(" 33[5m");
printf(" 33[?25l"); //隐藏光标
printf("nnnnnn");
printf("╭═══════════════════════════════╮n");
printf("║t正在退出(%d秒)tt║n", i--);
printf("╰═══════════════════════════════╯n");
sleep(1);
}
printf(" 33[0m");
system("clear");
return 0;
break;
default:
i = 2;
while (i)
{
system("clear");
printf("╭═══════════════════════════════╮n");
printf("║操作数无效,正在返回主菜单(%d秒)║n", i--);
printf("╰═══════════════════════════════╯n");
sleep(1);
}
continue;
}
getchar();
printf("PRESS ENTER TO CONTINUE!");
while (1) {
if ('n' == getchar())
{
break;
}
}
}
return 0;
}
int menue()
{
system("clear");
//警告音
printf(" 33[0m"); //关闭所有属性
printf(" 33[44;37m"); //47是字背景颜色,33是字体的颜色
printf (" 33[5m"); //闪烁
printf("n^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^nn");
printf(" 33[0m"); //关闭所有属性
printf(" 33[44;37m");
printf("╭═══════════════════════════════╮n");
printf("║t学生成绩管理程序t║n");
printf("║tttt║n");
printf("║t<1>创建ttt║n");
printf("║t<2>指定位置后插入t║n");
printf("║t<3>按位置删除tt║n");
printf("║t<4>求学生总数tt║n");
printf("║t<5>按学号查找tt║n");
printf("║t<6>按位置查找tt║n");
printf("║t<7>显示所有学生tt║n");
printf("║t<8>成绩排序tt║n");
printf("║t<9>退出ttt║n");
printf("╰═══════════════════════════════╯nn");
printf (" 33[5m");
printf("^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^nn");
printf(" 33[0m"); //关闭所有属性
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
//printf ( "t 07%s", asctime (timeinfo) );
printf (" 33[;34m");
printf ("t[%4d-%02d-%02d %02d:%02d:%02d]n",
1900+timeinfo->tm_year,
1+timeinfo->tm_mon,
timeinfo->tm_mday,
timeinfo->tm_hour,
timeinfo->tm_min,
timeinfo->tm_sec);
char colorname[3][20] = {{"RED"}, {"BLUE"}, {"YELLLOW"}};
srand(time(&rawtime)); //时间触发
//textcolor(colorname[rand()%3]);
//printf("t[textcolor is %s]n", colorname[rand()%3]);
//颜色码和控制码 我的参考链接 http://wenku.baidu.com/view/a38f77ff910ef12d2af9e70b.html
printf("t◎输入功能项:");
int a = 0;
scanf("%d",&a);
printf(" 33[0m");
system("clear");
return a;
}
linkList * inputdata()
{
linkList *s = NULL;
char sno[5] = {' '};
char sname[9] = {' '};
int score = 0;
printf("tsnot->");
scanf("%s", sno);
if (sno[0] == '#') {
return s;
}
s = (linkList *)malloc(sizeof(linkList));
strcpy(s -> data.sno, sno);
printf("tsnamet->");
scanf("%s", sname);
strcpy(s -> data.sname, sname);
printf("tscoret->");
scanf("%d", &score);
s -> data.score = score;
printf("n");
return s;
}
void display(linkList * p)
{
printf("╭═══════════════════════════════════════════════╮n");
printf("║tsnottsnamettscoret║n");
printf("║t%stt%stt%-4dt║n", p->data.sno, p->data.sname, p->data.score);
printf("╰═══════════════════════════════════════════════╯nn");}
void displayAll(linkList * L)
{
printf("╭═══════════════════════════════════════════════╮n");
printf("║tsnottsnamettscoret║n");
linkList * p = L -> next;
while(p)
{
printf("║t%stt%stt%-4dt║n", p->data.sno, p->data.sname, p->data.score);
p = p -> next;
}
printf("╰═══════════════════════════════════════════════╯nn");
}
linkList * createTailList()
{
//链表头结点
linkList * L = (linkList *)malloc(sizeof(linkList));
//结点
linkList * s = NULL;
//尾结点
linkList * r = L;
printf("╭═══════════════════════════════════════════════╮n");
printf("║tt尾插法建立ttt║n");
printf("║t请输入学生信息(当学号为"#"时结束)t║n");
printf("║tttttt║n");
printf("║t学号sno (不超过4位)tt║n");
printf("║t姓名sname (不超过4个汉字)tt║n");
printf("║t成绩score (int型)ttt║n");
printf("╰═══════════════════════════════════════════════╯nn");
while (1) {
s = inputdata();
if (!s) {
break;
}
r->next = s;
r = s;
}
r->next = NULL;
return L;
}
linkList * createHeadList()
{
//链表头结点
linkList * L = (linkList *)malloc(sizeof(linkList));
//结点
linkList * s = NULL;
printf("╭═══════════════════════════════════════════════╮n");
printf("║tt头插法建立tt║n");
printf("║t请输入学生信息(当学号为"#"时结束)t║n");
printf("║tttttt║n");
printf("║t学号sno (不超过4位)tt║n");
printf("║t姓名sname (不超过4个汉字)tt║n");
printf("║t成绩score (int型)ttt║n");
printf("╰═══════════════════════════════════════════════╯nn");
while (1) {
s = inputdata();
if (!s) {
break;
}
s->next = L->next;
L->next = s;
}
return L;
}
void getElem(linkList * L, int i)
{
linkList * p = L;
int j = 0;
while (p && jnext;
j++;
}
if (!p) {
printf("╭═══════════════════════════════╮n");
printf("║tDon't find the student!t║n");
printf("╰═══════════════════════════════╯nn");
}
else
{
display(p);
}
}
void locateElemBysno(linkList * L, char ch[5])
{
linkList * p = L->next;
while (p && (0 != strcmp(p->data.sno, ch)))
{
p = p -> next;
}
if (!p) {
printf("╭═══════════════════════════════╮n");
printf("║tDon't find the student!t║n");
printf("╰═══════════════════════════════╯nn");
}
else
{
display(p);
}
}
void locateElemBysname(linkList * L, char ch[9])
{
linkList * p = L->next;
while (p && (0 != strcmp(p->data.sname, ch)))
{
p = p -> next;
}
if (!p) {
printf("╭═══════════════════════════════╮n");
printf("║tDon't find the student!t║n");
printf("╰═══════════════════════════════╯nn");
}
else
{
display(p);
}
}
int lengthList(linkList * L)
{
linkList * p = L->next;
int j = 0;
while (p) {
p = p->next;
j ++;
}
return j;
}
void insertElem(linkList * L, int i)
{
linkList * s = inputdata();
linkList * p = L;
int j = 0;
while (p && jnext;
j++;
}
if (p && p->next)
{
s->next = p->next;
p->next = s;
}
else
{
printf("╭═══════════════════════════════╮n");
printf("║tDon't find the student!t║n");
printf("╰═══════════════════════════════╯nn");
}
displayAll(L);
}
void insertElemBysno(linkList * L, char ch[5])
{
linkList * p = L;
linkList * s = NULL;
while (p && (0 != strcmp(p->data.sno, ch)))
{
p = p->next;
}
if (!p) {
printf("╭═══════════════════════════════╮n");
printf("║tDon't find the student!t║n");
printf("╰═══════════════════════════════╯nn");
}
else
{
s = inputdata();
s->next = p->next;
p->next = s;
}
}
void deleteElem(linkList * L, char ch[5])
{
linkList *p, *q;
p = L->next;
q=L;
while (p && (strcmp(p->data.sno, ch) != 0)) {
q = p;
p = p->next;
}
if (!p) {
printf("╭═══════════════════════════════╮n");
printf("║tDon't find the student!t║n");
printf("╰═══════════════════════════════╯nn");
}
else
{
display(p);
q->next = p->next;
free(p);
}
}
void insertSort(linkList * L)
{
linkList * L1;
linkList * p;
linkList * q;
linkList * s;
int len;
len = lengthList(L);
L1 = (linkList *)malloc(sizeof(linkList));
if (L->next) {
s = (linkList *)malloc(sizeof(linkList));
strcpy(s->data.sno, L->data.sno);
strcpy(s->data.sname, L->data.sname);
s->data.score = L->data.score;
s->next = NULL;
L1->next = s;
q = L->next;
}
else
{
printf("╭═══════════════════════════════════╮n");
printf("║tThe student link list is empty!n║n");
printf("╰═══════════════════════════════════╯nn");
return;
}
while (q) {
p = L1->next;
while (p &&(p->data.score >= q->data.score))
{
p = p->next;
}
s = (linkList *)malloc(sizeof(linkList));
strcpy(s->data.sno, q->data.sno);
strcpy(s->data.sname, q->data.sname);
s->data.score = q->data.score;
if (!p) {
s->next = NULL;
p->next = s;
}
else
{
s->next = p->next;
p->next = s;
}
q = q->next;
}
displayAll(L1);
}
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。



