自学了两个月,,刚学结构体,写了个这种程序,呵呵,,还有很多错的地方还请各位看过的帮我指点一下错误,
,,,,,,自学真痛苦阿,,,,,,
/*****************************************************************/
// 学生学籍管理系统v1.0测试版.
// 开发者:☆ゞ天涯☆ゞ。
// 开发时间:2007-05-15
// 系统登陆密码:521314
// QQ: 214880229
/*****************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <time.h>
#define NAME 20
#define SEX 10
#define BIRTH 20
#define ADDDR 30
#define POTO 12
#define DAK 10
#define SCHOOL 30
#define SORC 6
#define STUDENTMAX 1000 //学生最大人数
#define PASSWORD "521314" //系统登陆密码
/************************学生信息结构体**********************/
struct studentinfo //学生个人信息结构
{
char name [NAME]; //学生姓名
char sex [SEX]; //学生性别
char birth [BIRTH]; //出生日期
char adddr [ADDDR]; //学生地址
char poto [POTO]; //联系电话
char dak [DAK]; //邮证编码
char school[SCHOOL]; //所在学校
};
struct studentsorc //学生成绩结构
{
char name[NAME]; //学生姓名
int ID; //学生学号
float sorc[6]; //记录学生成绩
float aver; //平均分
float sum; //总分
};
struct allstudentinfo //学生全部结构
{
struct studentinfo student;
struct studentsorc student1;
};
FILE *infofile=NULL; //存学生个人信息数据文件
FILE *sorcfile=NULL; //存学生成绩数据文件
char filename[]="c:\\学生个人信息登记.dat"; //记录个人信息登记
char filename1[]="c:\\学生成绩.dat"; //记录学生成绩
/************************函数块声明****************************/
void password(); //密码验证
int showmeun(); //系统主菜单显示
int submeun(); //子菜单显示
void sorcmeun(struct allstudentinfo *); //成绩管理子菜单
void submain(struct allstudentinfo *); //子系统
void inputinfo(struct allstudentinfo *); //输入学生个人信息
void modinfo(struct allstudentinfo *); //修改个人信息
void aboutinfo(struct allstudentinfo *); //查询个人信息
void allabout(struct allstudentinfo *); //查询所有信息
void delinfo(struct allstudentinfo *); //删除个人信息
void mofname(struct allstudentinfo *); //修改姓名
void mofsex(struct allstudentinfo *); //修改性别
void mofbirth(struct allstudentinfo *); //修改出生日期
void mofadddr(struct allstudentinfo *); //修改家庭住址
void mofpoto(struct allstudentinfo *); //修改电话号码
void mofdak(struct allstudentinfo *); //修改邮证编码
void mofschool(struct allstudentinfo *); //修改所在院校
int datfile(struct allstudentinfo *); //处理修改个人信息的文件
void inputsorc(struct allstudentinfo *); //个人成绩录入
void mofsorc (struct allstudentinfo *); //修改成绩
void seasorc (struct allstudentinfo *); //查找个人成绩
void seaallsorc(struct allstudentinfo *); //浏览所有成绩
void delsorc (struct allstudentinfo *); //删除成绩
int sorcdatfile(struct allstudentinfo *); //成绩数据文件
void systemhelp(); //系统帮助信息
int main(void)
{
struct allstudentinfo studentmax[STUDENTMAX]; //最大学生人数
struct allstudentinfo *p_student; //指向结构指针
int in;
time_t start,end;
p_student=studentmax; //指向结构体
password(); //获取用户密码验证
do
{
system("cls");
in=showmeun(); //系统主菜单显示
switch(in)
{
case 1 : submain(p_student);
break;
case 2 : sorcmeun(p_student);
break;
case 3 : systemhelp();
break;
case 4 : break;
default: printf("没有此选项,请按任意键返回重新选择!");
getch();
system("cls");
break;
}
}while(in!=4);
system("cls");
printf("\n\n\n\n\n\n\n\n\t\t\t");
printf("谢 谢 使 用 本 系 统 !");
start=time(NULL);
end=time(NULL);
while(end-start<1.5)
end=time(NULL);
return 0;
}
/************************子系统*******************************/
void submain(struct allstudentinfo *p_student)
{
int in;
do
{
system("cls");
in=submeun(); //子菜单显示
switch(in)
{
case 1 : inputinfo(p_student); //输入个人信息
break;
case 2 : modinfo(p_student); //修改个人信息
break;
case 3 : aboutinfo(p_student); //查询个人信息
break;
case 4 : allabout(p_student); //查询所有信息
break;
case 5 : delinfo(p_student); //删除个人信息
break;
case 6 : break;
default: printf("没有此选项。请您重新输入(1-5)");
getch();
system("cls");
break;
}
}while(in!=6);
system("cls");
return ;
}
/************************密码验证*****************************/
void password()
{
char *pass=NULL; //初始化指针
int count;
time_t start,end; //时间函数
pass=(char *)malloc(255*sizeof(char)); //分配内存
while(1)
{
count=0;
printf("\n\n\n\n\n\t\t 学生信息管理系统Ver1.0测试版 \n");
printf("\n\t\t 用户名:TIANYA \n");
printf("\n\t\t 密 码:");
while((count>=0)&&(pass[count++]=getch())!=13) //密码输入
{
if(pass[0]=='\b')
{
count=0;
continue;
}
else if(pass[count-1]=='\b')
{
printf("%c%c%c",'\b','\0','\b');
count-=2;
}
else
putchar('*');
}
pass[--count]='\0';
if(!strcmp(pass,PASSWORD)) //开始验证
{
system("cls");
printf("\n\n\n\n\n\n\n\n\n\t\t\t");
printf(" 欢 迎 登 陆 学 生 信 息 管 理 系 统 !");
start=time(NULL);
end=time(NULL);
while(end-start<1) //延时1秒执行以下程序
{
end=time(NULL);
}
system("cls");
free(pass); //释放储存密码的内存
return ;
}
free(pass); //释放密码错误的那块内存
pass=(char *)malloc(255*sizeof(char)); //重新分配储存密码内存
system("cls");
printf("\a\n\n\n\n\n\n\n\n\t\t\t\t密 码 错 误 !");
getch();
system("cls");
}
}
/***********************系统主菜单************************/
int showmeun()
{
int in;
char ch;
printf("\n\n\n\n");
printf("\t ╭────────────────────────────╮\n");
printf("\t ∣ 学生个人信息管理系统v1.0测试版 ∣\n");
printf("\t |————————————————————————————|\n");
printf("\t | \t 1. 学生个人信息管理 |\n");
printf("\t | |\n");
printf("\t | \t 2. 学生个人成绩管理 |\n");
printf("\t | |\n");
printf("\t | \t 3. 关于本系统帮助 |\n");
printf("\t | |\n");
printf("\t | \t 4. 退 出 系 统 |\n");
printf("\t | |\n");
printf("\t ╰────────────────────────────╯\n");
printf("\t 请您正确选择:");
while(scanf("%d",&in)!=1)
{
while((ch=getchar())!='\n')
putchar(ch);
return in;
}
fflush(stdin);
return in;
}
/***************************************************************/
// 个人信息管理系统目前只支持学生的个人资料登记
// 不支持成绩的录入,如须录入学生的个人成绩,请
// 使用“学生成绩管理系统,*必须要先在本系统登记
// 之后才能正常使用成绩管理系统,否则可能会发生
// 错误的提示
/***********************个人信息子菜单*************************/
int submeun()
{
int in;
char ch;
system("cls");
printf("\n\n\n");
printf("\t\t ————————————————————————\n");
printf("\t\t| 学生个人信息管理系统 |\n");
printf("\t\t|———————————————————————|\n");
printf("\t\t| 1.录入个人信息 |\n");
printf("\t\t| |\n");
printf("\t\t| 2.修改个人信息 |\n");
printf("\t\t| |\n");
printf("\t\t| 3.查询个人信息 |\n");
printf("\t\t| |\n");
printf("\t\t| 4.浏览所有信息 |\n");
printf("\t\t| |\n");
printf("\t\t| 5.删除个人信息 |\n");
printf("\t\t| |\n");
printf("\t\t| 6.退出系统 |\n");
printf("\t\t ————————————————————————\n");
printf("\t\t 请您正确选择:");
while(scanf("%d",&in)!=1)
{
while((ch=getchar())!='\n')
putchar(ch);
return 0;
}
fflush(stdin);
return in;
}
/***************************修改个人信息子菜单************************/
void modinfo(struct allstudentinfo *p_student)
{
int in;
char ch;
do
{
system("cls");
printf("\n\n\n");
printf("\t\t ————————————————————————\n");
printf("\t\t| 个人信息修改管理 |\n");
printf("\t\t|———————————————————————|\n");
printf("\t\t| 1.修改用户姓名 |\n");
printf("\t\t| |\n");
printf("\t\t| 2.修改用户性别 |\n");
printf("\t\t| |\n");
printf("\t\t| 3.修改出生日期 |\n");
printf("\t\t| |\n");
printf("\t\t| 4.修改家庭住址 |\n");
printf("\t\t| |\n");
printf("\t\t| 5.修改联系电话 |\n");
printf("\t\t| |\n");
printf("\t\t| 6.修改邮证编码 |\n");
printf("\t\t| |\n");
printf("\t\t| 7.修改所在院校 |\n");
printf("\t\t| |\n");
printf("\t\t| 8.退出系统 |\n");
printf("\t\t ————————————————————————\n");
printf("\t\t 请您正确选择:");
while(scanf("%d",&in)!=1)
{
while((ch=getchar())!='\n')
putchar(ch);
printf(" 没有此选项,请重新选择!");
getch();
system("cls");
return ;
}
fflush(stdin);
switch(in)
{
case 1 : mofname(p_student);
break;
case 2 : mofsex(p_student);
break;
case 3 : mofbirth(p_student);
break;
case 4 : mofadddr(p_student);
break;
case 5 : mofpoto(p_student);
break;
case 6 : mofdak(p_student);
break;
case 7 : mofschool(p_student);
break;
case 8 : return ;
default: printf("没有此选项,请重新选择!");
break;
}
}while(1);
}