自己写的小程序,大家多给点意见哈~
我是一个自学者,呵呵~ 我自己用C语言写了一个类似于“学生档案管理”的小程序,程序写的不好,各位多发表下意见哈,指点下,程序有很多地方都无非得到满意的结果,也不知道哪出了问题。
===================================================================
/*****************************************************************************
编程项目一: < 学生档案管理系统 >
____________________________
|
系统模块:输入存储学生记录 |
查询指定记录学生信息 | <--(5个主要功能模块实现)
浏览全部数据记录 |
删除指定学生记录 |
修改已经存在的学生记录 |
____________________________|
___________________________________________________
data结构: |name[]|score | Ar | Sex[]| Bd | Al |Next | <--(一名学生的基本信息)
|______|______|_______|______|______|_______|_____|
(名字) (分数) (地址) (性别) (生日) (评价) (指针域)
******************************************************************************/
/*头文件*/
#include "stdio.h "
#include "conio.h "
#include "stdlib.h "
#include "dos.h "
#include "string.h "
/*封装Data结构*/
typedef struct Stu
{
char name[12]; /*名字*/
int score; /*分数*/
char Ar[30]; /*地址*/
char Sex; /*性别*/
int Bd; /*生日*/
char Al[120]; /*评价*/
struct Stu *next; /*指针域*/
} LINK;
/*定义全局变量*/
LINK *p=NULL; /*指向首结点的指针*/
LINK *s=NULL; /*指向当前结点的指针*/
LINK *r=NULL; /*指向尾结点的指针*/
/*打印主界面*/
int Cs1(void)
{
clrscr(); /*清屏*/
/*打印主界面*/
gotoxy (25,3); printf( "**************************** ");
gotoxy (25,4); printf( "* 学生档案管理系统 * 作者:帕帕 ");
gotoxy (25,5); printf( "**************************** 开发日期:2007/03/03 ");
gotoxy (1,6); printf( "______________________________________________________________________________ ");
gotoxy (1,20); printf( "______________________________________________________________________________ ");
gotoxy (20,7); printf( "*************************************** ");
gotoxy (20,8); printf( "* 添加记录请按: a ");
gotoxy (20,9); printf( "* 查找记录请按: b ");
gotoxy (20,10); printf( "* 修改记录请按: c ");
gotoxy (20,11); printf( "* 删除记录请按: d ");
gotoxy (20,12); printf( "* 浏览记录请按: e ");
gotoxy (20,13); printf( "* 退出系统请按: x ");
gotoxy (20,14); printf( "* ");
gotoxy (20,15); printf( "* ");
gotoxy (20,16); printf( "* ");
gotoxy (20,17); printf( "* ");
gotoxy (20,18); printf( "*************************************** ");
gotoxy (58,8); printf( "* ");
gotoxy (58,9); printf( "* ");
gotoxy (58,10); printf( "* ");
gotoxy (58,11); printf( "* ");
gotoxy (58,12); printf( "* ");
gotoxy (58,13); printf( "* ");
gotoxy (58,14); printf( "* ");
gotoxy (58,15); printf( "* ");
gotoxy (58,16); printf( "* ");
gotoxy (58,17); printf( "* ");
return 0;
}
/*打印子界面*/
int Cs2(void)
{
clrscr (); /*清屏*/
/*打印界面*/
gotoxy (25,3); printf( "**************************** ");
gotoxy (25,4); printf( "* 学生档案管理系统 * 作者:帕帕 ");
gotoxy (25,5); printf( "**************************** 开发日期:2007/03/03 ");
gotoxy (1,6); printf( "______________________________________________________________________________ ");
gotoxy (1,22); printf( "______________________________________________________________________________ ");
gotoxy (20,7); printf( " ");
gotoxy (20,8); printf( " ");
gotoxy (20,9); printf( " ");
gotoxy (20,10); printf( " ");
gotoxy (20,11); printf( " ");
gotoxy (20,12); printf( " ");
gotoxy (20,13); printf( " ");
gotoxy (20,14); printf( " ");
gotoxy (20,15); printf( " ");
gotoxy (20,16); printf( " ");
gotoxy (20,17); printf( " ");
gotoxy (20,18); printf( " ");
gotoxy (50,7); printf( "* ");
gotoxy (50,8); printf( "* ");
gotoxy (50,9); printf( "* ");
gotoxy (50,10); printf( "* ");
gotoxy (50,11); printf( "* ");
gotoxy (50,12); printf( "* ");
gotoxy (50,13); printf( "* ");
gotoxy (50,14); printf( "* ");
gotoxy (50,15); printf( "* ");
gotoxy (50,16); printf( "* ");
gotoxy (50,17); printf( "* ");
gotoxy (50,18); printf( "* ");
gotoxy (50,19); printf( "* ");
gotoxy (50,20); printf( "* ");
gotoxy (50,21); printf( "* ");
gotoxy (58,7); printf( " < 回显区 > ");
return 0;
}
/*循环控制*/
int News(void)
{
char ch; /*定义字符变量*/
Cs1(); /*刷新主界面*/
for (;;) /*消息循环*/
{
if (kbhit ()) /*检测是否有键被按下,如果有,做下面:*/
{
ch=bdos (7,0,0); /*键入字符存入ch*/
if (ch== 'a ') /*按下a则:*/
{
Writes(); /*进入添加模块*/
Cs1();
}
if (ch== 'b ') /*按下b则:*/
{
Search(); /*进入查找模块*/
Cs1();
}
if (ch== 'c ') /*按下c则:*/
{
Revision(); /*进入修改模块*/
Cs1();
}
if (ch== 'd ') /*按下d则:*/
{
del(); /*进如删除模块*/
Cs1();
}
if (ch== 'e ') /*按下e则:*/
{
Bg(); /*进入浏览模块*/
Cs1();
}
if (ch== 'x ') /*按下x则:*/
{
gotoxy (1,18);
exit (1); /*退出系统*/
}
} /*一次比较结束*/
} /*再次进入消息循环体*/
}
/*添加记录模块*/
int Writes(void)
{
int i,j; /*定义变量*/
FILE *f; /*定义文件指针*/
i=0;
j=0;
f=NULL; /*文件指针为空*/
Cs2(); /*调用子函数打印界面*/
gotoxy (1,7);/*定义光标坐标*/
printf ( "您要存储几名学生的记录: ");
scanf ( "%d ",&j); /*输入循环次数*/
for (i=1;i <=j;i++) /*循环次数*/
{
Cs2(); /*刷新界面*/
s=malloc(sizeof (LINK)); /*动态申请内存空间*/
/*循环输入学生记录*/
gotoxy (1,9);
printf ( "请输入新同学的名字: ");
scanf ( "%s ",s-> name);
gotoxy (52,9);
printf( "名字:%s ",s-> name);
gotoxy (1,11);
printf( "请输入新同学的分数: ");
scanf( "%d ",s-> score);
gotoxy (52,11);
printf( "分数:%d ",s-> score);
gotoxy (1,13);
printf( "请输入新同学的地址: ");
scanf( "%s ",s-> Ar);
gotoxy (52,13);
printf( "地址:%s ",s-> Ar);
gotoxy (1,15);
printf( "请输入新同学的性别: ");
scanf( "%s ",s-> Sex);
gotoxy (52,15);
printf( "性别:%s ",s-> Sex);
gotoxy (1,17);
printf( "请输入新同学的生日: ");
scanf( "%d ",s-> Bd);
gotoxy (52,17);
printf( "生日:%d ",s-> Bd);
gotoxy (1,19);
printf( "请输入新同学的评价: ");
scanf( "%s ",s-> Al);
gotoxy (52,19);
printf( "评价:%s ",s-> Al);
gotoxy (1,21);
printf( "新同学的信息记录已存储... ");
if (p==NULL) /*空表的情况下:*/
p=s; /*让p指向第一个数据结点*/
else /*非空表情况下:*/
r-> next=s; /*把s-> 连接到r-> 的后面*/
r=s; /*r指向新的尾结点*/
} /*一次循环结束*/
if (r-> next!=NULL)
r-> next=NULL; /*尾指针next域赋空*/
return 0;
}
[解决办法]
你的函数取名应该改进,按照一定规范比较好。
[解决办法]
lz 很认真```不错啊 很好啊!
不过查找的那一块函数的算法还可以优化,
如果是几千个学生呢?是不是查找太费时间了??