You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

349 lines
8.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<windows.h>
FILE *fp;//文件指针
int i_entry=0;//学生的人数统计
#define MIN_C 100//每个数据对应字符串类型占据的大小
#define MAX_G 1000//学生信息量大小
struct student {
char stuid[MIN_C];//学生学号
char name[MIN_C];//学生姓名
char age[3];//学生年龄
char gender[MIN_C];//学生性别
char birth[MIN_C];//学生出生日期
char add[MIN_C];//学生地址
char tle[MIN_C];//学生电话
char email[MIN_C];//学生邮箱
}DATA[MAX_G];
struct student temp[MAX_G];//用于排序的中间变量
struct student are;
//被调函数
void init();//文件的初始化读入
void GREEN();//控制台颜色为绿色
void RED();//控制台调整前景色为红色
void LIGHT();//控制台调整前景色为强光
void deal();//处理数据
//dell()函数包含的自定义函数
void notice();//提示信息
void case1();//学生综合信息录入
void entry();
void file_save();
void case2();//学生综合信息浏览
void i_printf();
void case3();//综合信息排序浏览
void stuid_sort(int I,int L);
void name_sort(int I,int L);
void case4();//学生个人信息查询
void stuid_find();
void name_find();
void case5();//学生综合信息修改
void Change(int x);
int main()
{ GREEN();
printf(">********* 亲 ><欢迎使用学生信息管理系统 *********<\n");
printf(">*********亲 请输入正确的密码,超过三次错误将退出系统哦\n");
int u=3;
char s[15];
while(u--)
{if(u==2)
printf("亲 请输入正确密码 ") ;
else
printf("亲,您的密码有误,请重新输入");
scanf("%s",s);
if(strcmp("asdfghjkl",s)==0)
{
break;
}
else
continue;
}
if(u==0)
{ GREEN();
printf(" 》******* 亲您的密码输入有误sorry\n");
return 0;
}
else
{
if((fp=fopen("student_data.txt","r+"))==NULL)
{
printf("FILE\n");
fp=fopen("student_data.txt","w+");
}
init();//文件的初始化读入
LIGHT();
printf("当前总人数:%d\n",i_entry);
GREEN();//控制台颜色为绿色
printf(">********** 欢迎您使用学生信息管理系统1.1 **********<\n");
printf(">********** 请输入以下命令行所对应的数字进行操作: **********<\n");
printf(">**********请确定正确退出程序,否则文件将不能被正常保存。**********<\n");
deal();//处理数据
fclose(fp);//文件正常关闭
return 0;
}}
void init() //文件的初始化读取
{
while (!feof(fp))
{
fscanf(fp, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", DATA[i_entry].stuid, DATA[i_entry].name, DATA[i_entry].age,
DATA[i_entry].gender, DATA[i_entry].birth, DATA[i_entry].add, DATA[i_entry].tle, DATA[i_entry].email);
i_entry++;
}
}
void RED() {//控制台调整前景色为红色
HANDLE kai_1 = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(kai_1, FOREGROUND_INTENSITY | FOREGROUND_RED); // 为红色
}
void GREEN() {//控制台调整前景色为绿色
HANDLE kai_2 = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(kai_2, FOREGROUND_INTENSITY | FOREGROUND_GREEN);// 为绿色
}
void LIGHT(){
HANDLE kai_2 = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(kai_2, FOREGROUND_INTENSITY | FOREGROUND_INTENSITY);// 为强光
}
void deal() {//主要处理函数
int k,flag,p;
p=1;
notice();
flag=1;
while(flag) {
if(p>1)
{
system("cls");
notice();
}
scanf("%d",&k);
system("cls");
switch(k) {
case 0: {
puts("温馨提醒:");
puts("\t ^…………^……^^谢谢您的支持,欢迎再次使用!^^……^…………^ ");
puts("\t*******学生基本信息已保存在当前目录文件 student_data.txt 下********");
flag=0;
LIGHT();
break;
}
case 1: {
case1();
break;
}
case 2: {
case2();
break;
}
case 3: {
case3();
break;
}
case 4: {
case4();
break;
}
case 5: {
case5();
break;
}
default: {
RED();
printf("请正确键入命令前数字!\n");
GREEN();
break;
}
}
p=1103;
puts("\n");
}
}
void notice() {//提示信息
RED();
puts("\t\t\t1.学生综合信息录入");
puts("\t\t\t2.学生综合信息浏览");
puts("\t\t\t3.综合信息排序浏览");
puts("\t\t\t4.学生个人信息查询");
puts("\t\t\t5.学生综合信息修改");
printf("\t\t\t0. 退 出 系 统\n");
GREEN();
printf("请键入:");
}
//11111111111
void case1() {//学生综合信息录入
int flag;
flag=1;
while(flag) {
entry();
LIGHT();
printf("提示1,继续录入0,录入完成.是否继续录入:");
GREEN();
scanf("%d",&flag);
i_entry++;
}
}
void entry() {//学生信息的录入
int flag,i;
system("cls");
init();
flag=1;
puts("***************>>>>>>当前模式为学生信息录入状态<<<<<<*************");
printf("请输入学生学号:");
flag=1;//标识变量,用以判断该信息是否已存在
scanf("%s",&DATA[i_entry].stuid);
for(i=0; i<i_entry; i++) //判断输入数据的正误,即文件中是否已存在该信息
if(strcmp(DATA[i].stuid,DATA[i_entry].stuid)==0) {
flag=0;
break;
}
if(flag==1) {
printf("请输入学生姓名:");
scanf("%s",DATA[i_entry].name);
printf("请输入学生年龄:");
scanf("%s",DATA[i_entry].age);
printf("请输入学生性别:");
scanf("%s",DATA[i_entry].gender);
printf("请输入学生出生年月日(以/隔开)");
scanf("%s",DATA[i_entry].birth);
printf("请输入学生联系地址:");
scanf("%s",DATA[i_entry].add);
printf("请输入学生联系电话:");
scanf("%s",DATA[i_entry].tle);
printf("请输入学生联系邮箱:");
scanf("%s",DATA[i_entry].email);
file_save();
}
if(flag==0)
puts("该学号已经存在,如需修改请转到修改命令!");
}
void file_save() {//信息以文件格式录入函数
fprintf(fp, "%s\t\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", DATA[i_entry].stuid, DATA[i_entry].name,DATA[i_entry].age,
DATA[i_entry].gender, DATA[i_entry].birth, DATA[i_entry].add, DATA[i_entry].tle, DATA[i_entry].email);
printf("保存成功!");
}
//2222222222222
void case2() {//学生综合信息浏览
puts("***************>>>>>>当前模式为学生信息浏览状态<<<<<<*************");
i_printf();
}
void i_printf() {//学生信息的输出
int i,k=1;
//printf("学号\t姓名\t年龄\t性别\t出生年/月/日\t联系地址\t联系电话\t联系邮箱");
printf("\n");
if(k)
{
for(i=0; i<i_entry; i++)
{
printf("学号:%-18s\n",&DATA[i].stuid);
printf("姓名:%-16s\n",DATA[i].name);
printf("年龄:%-4s\n",&DATA[i].age);
printf("性别:%-6s\n",DATA[i].gender);
printf("出生年月日:%-12s\n",&DATA[i].birth);
printf("地址:%-16s\n",DATA[i].add);
printf("联系方式:%-16s\n",DATA[i].tle);
printf("邮箱:%-15s\n\n",DATA[i].email);
}
LIGHT();
printf("提示退出请按0并按回车键。\n");
scanf("%d",&k);
}
}
//44444444444
void case4() {//学生个人信息查询
int v;
LIGHT();
printf("提示1,按照学号查询2,按照姓名查询.请键入:");
GREEN();
scanf("%d",&v);
if(v==1) {
stuid_find();
}
if(v==2) {
name_find();
}
}
void stuid_find() {//学号查找 利用strcmp()函数
int i,flag=0,k;
char wqs[MIN_C];
k=1;
system("cls");
puts("***************>>>>>>当前模式以学号查询信息状态<<<<<<*************");
while(k) {
printf("请键入学生学号: ");
scanf("%s",wqs);
for(i=0; i<i_entry; i++)
if(strcmp(DATA[i].stuid,wqs)==0) {
printf("学号:%-18s\n",&DATA[i].stuid);
printf("姓名:%-16s\n",DATA[i].name);
printf("年龄:%-4s\n",&DATA[i].age);
printf("性别:%-6s\n",DATA[i].gender);
printf("出生年月日:%-12s\n",&DATA[i].birth);
printf("地址:%-16s\n",DATA[i].add);
printf("联系方式:%-16s\n",DATA[i].tle);
printf("邮箱:%-15s\n",DATA[i].email);
flag=1;
}
if(flag==0)
puts("未查找到该同学信息,如需录入信息请重新键入命令.");
LIGHT();
puts("请按照文字提示键入命令:");
printf("\t\t1.继续查询\n\t\t0.退出查询\n请键入命令:");
GREEN();
scanf("%d",&k);
}
}
void name_find() {//姓名查找 利用函数strcmp()==0 的特性
int i,flag=0,k;
char wqs[MIN_C];
k=1;
system("cls");
puts("***************>>>>>>当前模式以姓名查询信息状态<<<<<<*************");
while(k) {
printf("请键入学生姓名: ");
scanf("%s",wqs);
for(i=0; i<i_entry; i++)
if(strcmp(DATA[i].name,wqs)==0) {
printf("学号:%-18s\n",&DATA[i].stuid);
printf("姓名:%-16s\n",DATA[i].name);
printf("年龄:%-4s\n",&DATA[i].age);
printf("性别:%-6s\n",DATA[i].gender);
printf("出生年月日:%-12s\n",&DATA[i].birth);
printf("地址:%-16s\n",DATA[i].add);
printf("联系方式:%-16s\n",DATA[i].tle);
printf("邮箱:%-15s\n",DATA[i].email);
flag=1;
}
if(flag==0)
puts("未查找到该同学信息,如需录入信息请重新键入命令.");
LIGHT();
puts("请按照文字提示键入命令:");
printf("\t\t1.继续查询\n\t\t0.退出查询\n请键入命令:");
GREEN();
scanf("%d",&k);
}
}