您的位置:首页 > 编程语言

学生成绩管理代码(c代码)

2016-04-11 19:13 387 查看
author:chen ming dong

一个简单的学成成绩管理系统,就是对结构体的简单应用,也没有用指针,只适合初学结构体,想用结构体做一个小项目的人Look

自己还加了一些特殊的功能。。供大家参考

//这段代码实在visualstudio2016环境下写的
// 要移植到 vc6 中 就去掉几个头文件,把scanf_s(,,,)改成scanf(, , )最后那个参数不要
//#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<windows.h>
//定义一个数组,用来存储学生信息
typedef struct student
{
char name[20];
int chinese;
int math;
int english;
}str;
int i = 0;
// 没有用指针,就用数组,来存储学生信息,最多100人
str a[100];
//input功能
int input()
{
for (i = 0; i <= 100; i++)
{
printf("请输入姓名:");
scanf_s("%s", a[i].name, sizeof(a[i].name));
printf("请输入语文成绩:");
scanf_s("%d", &a[i].chinese);
printf("请输入数学成绩:");
scanf_s("%d", &a[i].math);
printf("请输入外语成绩:");
scanf_s("%d", &a[i].english);
char b[20];
getchar();
while (1)
{
printf("dong是否还想输入  y/n\n");
scanf_s("%s", &b, sizeof(b));
getchar();
if (!strcmp(b, "y") || !strcmp(b, "Y"))
break;
else if (!strcmp(b, "n") || !strcmp(b, "N"))
return i;
else
{
continue;
}
}
}
return i;
}
//output 功能
void output()
{
if (i != 0)
{
for (int j = 0; j <=i; j++)
{
printf("%d-------------\n", j + 1);
printf("姓名:%s\n", a[j].name);
printf("语文:%d\n数学:%d\n外语:%d\n\n", a[j].chinese, a[j].math, a[j].english);
}
}
else
printf("还没有数据\n\n");
}
void chazhao(char c[20])
{
int j;
for (j = 0; j <=i; j++)
{
if (!strcmp(a[j].name, c))
{
printf("%d-------------\n",j+1);
printf("姓名:%s\n", a[j].name);
printf("语文:%d\n数学:%d\n外语:%d\n", a[j].chinese, a[j].math, a[j].english);
break;
}
}
if (j - 1 == i)
{
printf("没有这个人\n\n");
}
}
//允许我用拼音  好久以前巧的代码了(不想改他了),O(∩_∩)O哈哈~
void charu()
{
int b,c;
printf("要插入到第几个:");
scanf_s("%d", &b, sizeof(int));
for (c=i; b-1 <=c; c--)
{
strcpy(a[c + 1].name, a[c].name);
a[c + 1].chinese = a[c].chinese;
a[c + 1].math = a[c].math;
a[c + 1].english = a[c].english;
}
i++;
printf("请输入学生信息:\n");
printf("请输入姓名:");
scanf_s("%s", a[b-1].name, sizeof(a[b].name));
printf("请输入语文成绩:");
scanf_s("%d", &a[b-1].chinese);
printf("请输入数学成绩:");
scanf_s("%d", &a[b-1].math);
printf("请输入外语成绩:");
scanf_s("%d", &a[b-1].english);
}
//删除功能
void shanchu()
{
int c;
printf("要删除第几个:");
scanf_s("%d", &c, sizeof(int));
for (c = c - 1; c < i;c++)
{
strcpy(a[c].name, a[c+1].name);
a[c].chinese = a[c+1].chinese;
a[c].math = a[c+1].math;
a[c].english = a[c+1].english;
}
i--;
}
//自动生成姓名,这个过程可能有点慢
char* xingming()
{
char **p;
char xingming[20];
xingming[0] = '\0';
p = (char **)malloc(19 * sizeof(char *));
for (int b = 0; b<19; b++)
*(p + b) = (char *)malloc(6 * sizeof(char));
strcpy(p[0], "明");
strcpy(p[1], "龙");
strcpy(p[2], "天");
strcpy(p[3], "阳");
strcpy(p[4], "东");
strcpy(p[5], "牛");
strcpy(p[6], "强");
strcpy(p[7], "帅");
strcpy(p[8], "伟");
strcpy(p[9], "舞");
strcpy(p[10], "横");
strcpy(p[11], "鬼");
strcpy(p[12], "桂");
strcpy(p[13], "浩");
strcpy(p[14], "爽");
strcpy(p[15], "龍");
strcpy(p[16], "伊");
strcpy(p[17], "运");
strcpy(p[18], "雷");
srand(time(0));
int c = rand() % 2+1;
for (int d = 0; d <= c; d++)
{
int j = rand() % 18 + 1;
strcat(xingming, p[j]);
};
return xingming;
}
void yuanshi()
{
int b;
srand(time(0));
for (i = 0; i < 10; i++)
{
strcpy(a[i].name, xingming());
b = rand() % 10+ 1;
a[i].chinese = b;
Sleep(350);
printf(".");
b = rand() % 100 + 1;
a[i].math = b;
Sleep(350);
printf(".");
b = rand() % 100 + 1;
a[i].english = b;
Sleep(350);
printf(".");
}
i--;
printf("\n");
}
int main()
{
int n;
char name[20];
while (1)
{
printf("1-重新输入成绩\t2-输出所有成绩\t3-查找\t4-插入\t5-自动生成(需要11秒)\t6-删除\t\t9-退出\t\t(请不要乱按)\n");
scanf_s("%d", &n, 4);
if (n == 1)
int i = input();
if (2 == n)
output();
if (3 == n)
{
printf("请输入要查找的人:");
scanf("%s", name, sizeof(name));
chazhao(name);
}
if (4 == n)
{
charu();
}
if (5 == n)
{
yuanshi();
}
if (6 == n)
{
shanchu();
}
if (9 == n)
break;
}
system("pause");
return 0;
}


一个c文件解决

,,大家,,不要学我啊,,会用多个文件的,尽量用.h文件。。不要让一个文件代码太多。。

其实这点代码也不算多,想象uboot中的Makefile一个文件有3000行的。看着都头晕。

但是初学者要学会用,多文件(哈哈。。本人也是个初学者,希望大家给个评价,也促进我学习)

give my best wishes to you!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: