#include "stdlib.h"
#include "conio.h"
#include "math.h"
#include "ctype.h"
#include "string.h"
#define MAX 4
#define TERM 6
struct STUD{
unsigned number
char name[20]
unsigned score[MAX]
float average
struct STUD *next
}
struct CLASS{
unsigned no
unsigned students
float score[MAX]
float average
struct STUD *first
}
//输出所有学生的成绩及名次
void output(struct CLASS *pclass)
{
struct STUD *p
int n=0
printf("Class:%u\t number of students:%u\n",pclass->no ,pclass->students )
printf("number name math physics politics "
"english average place\n")
for(n=1,p=pclass->first p!=NULLp=p->next ,++n)
printf("%-8u%-12s%-8u%-8u%-8u%-8u%-10.2f%-d\n",
p->number ,p->name ,p->score[0] ,p->score [1],
p->score [2],p->score [3],p->average ,n)
}
//按平均成绩排序
void sort(struct CLASS *pclass)
{
struct STUD *p, *next, *last
int m,n
for(m=0m<pclass->students -1m++)
for(last=p=pclass->first ,n=0n<pclass->students-1-m
n++,last=p,p=p->next)
if(p->average<p->next->average){
next=p->next
if(p!=pclass->first)
last->next=next
else
pclass->first=next
next->next=p
p=next
}
}
char *cou[MAX]={"math","phusics","politics","english"}
//将链表所有接点写入文件
void write_file(struct CLASS *pclass,FILE *myfile)
{
struct STUD *p
for(p=pclass->firstp!=NULLp=p->next)
fwrite(p,sizeof(struct STUD),1,myfile)
}
//从文件中读数据重建链表
void read_file(struct CLASS *pclass,FILE *myfile)
{
struct STUD buf,*p,*tail
int n
for(tail=pclass->first ,n=0n<pclass->students tail=p,++n){
if(fread(&buf,sizeof(struct STUD),1,myfile)!=1){
pclass->students =n
break
}
p=(struct STUD *) malloc(sizeof(struct STUD))
*p=buf
//连接成先进先出链表
if(pclass->first==NULL)
pclass->first =p
else
tail->next =p
p->next =NULL
}
}
//增加信息
void insert(struct CLASS *pclass)
{
struct STUD *p,*current,*last
int k,ch,flag
do{
p=(struct STUD *) malloc(sizeof(struct STUD))
printf("\ninput number and name of student:")
scanf("%u%s",&p->number ,p->name )
while(1){
for(flag=1,k=0k<MAX++k){
printf("\niput %s:",cou[k])
scanf("%u",&p->score[k])
if(p->score[k]>100)
flag=0
}
if(flag) break
printf("score error\n")
}
p->average =(float)(p->score[0]+p->score[1]+p->score[2]+p->score[3])/4
//找插入点
for(last=current=pclass->firstcurrent->next&¤t->average>p->average
last=current,current=current->next )
if(current->next ==NULL&¤t->average>p->average){
p->next =NULL
current->next =p
}
else{
p->next =current
if(current==pclass->first)
pclass->first =p
else
last->next =p
}
pclass->students ++
printf("continue?(y/n)")
while(isspace(ch=getchar()))
}while (ch=='y'||ch=='Y')
}
//删除学生
void delete_stu(struct CLASS *pclass)
{
unsigned ch
struct STUD *current,*last,*p
do{
printf("\ninput number of student:")
scanf("%u",&p->number,&ch)
for(last=current=pclass->firstcurrent!=NULL&¤t->number!=ch
last=current,current=current->next)
if(current!=NULL){
if(current!=pclass->first)
last->next=current->next
else
pclass->first=current->next
free(current)
pclass->students--
}
else
fprintf(stderr,"error:number of student!\n")
printf("continue?(y/n)")
while(isspace(ch=getchar()))
}while (ch=='y'||ch=='Y')
}
void create(struct CLASS *pclass)
{
struct STUD *p,*tmp=NULL
int n=0,k,ch,flag
do{
p=(struct STUD *) malloc(sizeof(struct STUD))
printf("\ninput number and name of student:")
scanf("%u%s",&p->number ,p->name )
while(1){
for(flag=1,k=0k<MAX++k){
printf("\niput %s:",cou[k])
scanf("%u",&p->score[k])
if(p->score[k]>100)
flag=0
}
if(flag) break
printf("score error\n")
}
p->average =(float)(p->score[0]+p->score[1]+p->score[2]+p->score[3])/4
p->next =pclass->first
pclass->first =p
++n
printf("continue?(y/n)")
while(isspace(ch=getchar()))
}while (ch=='y'||ch=='Y')
pclass->students =n
}
//计算平均分
void average(struct CLASS *pclass)
{
static double general[MAX],g
struct STUD *p
int i
for(p=pclass->firstp!=NULLp=p->next)
for(i=0i<MAX++i)
general[i]+=p->score[i]
printf("\n math physics politics english\n")
for(i=0i<MAX++i){
pclass->score[i]=general[i]/pclass->students
printf("%10.2f",pclass->score[i])
g+=general[i]
}
pclass->average =g/(MAX*pclass->students )
printf("\ngeneral average:%10.2f\n",pclass->average )
}
void main()
{
struct CLASS cla
FILE *fp
int flag=1,k
char c,*menu[]={
"\n1:insert a student\n",
"2:delete a student\n",
"3:save into file\n",
"4:print class score list\n",
"5:stat average\n",
"0:exit\n",
"\nselect[0-6]:"
}
if((fp=fopen("students.dat","rb"))==NULL){
printf("input number of class:")
scanf("%u",&cla.no)
cla.students=0
cla.first=0
create(&cla)
sort(&cla)
}
else{
fread(&cla,sizeof(struct CLASS),1,fp)
cla.first=NULL
read_file(&cla,fp)
fclose(fp)
}
while(flag){
for(k=0k<=TERMk++)
printf("%s",menu[k])
scanf("%d",&k)
switch (k){
case 1:
insert(&cla)
break
case 2:
delete_stu(&cla)
break
case 3:
if((fp=fopen("students.dat","wb"))==NULL){
fprintf(stderr,"error:can't create file students!\n")
return
}
fwrite(&cla,sizeof(struct CLASS),1,fp)
write_file(&cla,fp)
fclose(fp)
break
case 4:
output(&cla)
break
case 5:
average(&cla)
break
case 0:
printf("save yout change?(y/n)")
scanf("%c%*c",&c)
c=='y'||c=='Y'?(c=1):(c==0)
if(c){
if((fp=fopen("students.dat","wb"))==NULL){
fprintf(stderr,"error:can't create file students!\n")
return
}
rewind(fp)
fwrite(&cla,sizeof(struct CLASS),1,fp)
write_file (&cla,fp)
fclose(fp)
}
flag=0
break
default:
fprintf(stderr,"select error!\n")
}
}
}
可以在电脑安装一个MySQL数据库,MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下公司。
下面的是MySQL安装的图解,用的可执行文件安装的,详细说明了一下!打开下载的mysql安装文件mysql-5.0.27-win32.zip,双击解压缩,运行“setup.exe”,出现如下界面
mysql安装向导启动,按“Next”继续
mysql图文安装教程2
选择安装类型,有“Typical(默认)”、“Complete(完全)”、“Custom(用户自定义)”三个选项,我们选择“Custom”,有更多的选项,也方便熟悉安装过程:
mysql图文安装教程3
在“Developer Components(开发者部分)”上左键单击,选择“This feature, and all subfeatures, will be installed on local hard drive.”,即“此部分,及下属子部分内容,全部安装在本地硬盘上”。在上面的“MySQL Server(mysql服务器)”、“Client Programs(mysql客户端程序)”、“Documentation(文档)”也如此 *** 作,以保证安装所有文件。点选“Change...”,手动指定安装目录。
mysql图文安装教程4
填上安装目录,我的是“F:\Server\MySQL\MySQL Server 5.0”,也建议不要放在与 *** 作系统同一分区,这样可以防止系统备份还原的时候,数据被清空。按“OK”继续。
mysql图文安装教程5
返回刚才的界面,按“Next”继续
mysql图文安装教程6
确认一下先前的设置,如果有误,按“Back”返回重做。按“Install”开始安装。
mysql图文安装教程7
正在安装中,请稍候,直到出现下面的界面
mysql图文安装教程8
这里是询问你是否要注册一个mysql.com的账号,或是使用已有的账号登陆mysql.com,一般不需要了,点选“Skip Sign-Up”,按“Next”略过此步骤。
mysql图文安装教程9
现在软件安装完成了,出现上面的界面,这里有一个很好的功能,mysql配置向导,不用向以前一样,自己手动乱七八糟的配置my.ini了,将 “Configure the Mysql Server now”前面的勾打上,点“Finish”结束软件的安装并启动mysql配置向导。
mysql图文安装教程10
mysql配置向导启动界面,按“Next”继续
mysql图文安装教程11
选择配置方式,“Detailed Configuration(手动精确配置)”、“Standard Configuration(标准配置)”,我们选择“Detailed Configuration”,方便熟悉配置过程。
mysql图文安装教程12
选择服务器类型,“Developer Machine(开发测试类,mysql占用很少资源)”、“Server Machine(服务器类型,mysql占用较多资源)”、“Dedicated MySQL Server Machine(专门的数据库服务器,mysql占用所有可用资源)”,大家根据自己的类型选择了,一般选“Server Machine”,不会太少,也不会占满。
mysql图文安装教程13
选择mysql数据库的大致用途,“Multifunctional Database(通用多功能型,好)”、“Transactional Database Only(服务器类型,专注于事务处理,一般)”、“Non-Transactional Database Only(非事务处理型,较简单,主要做一些监控、记数用,对MyISAM数据类型的支持仅限于non-transactional),随自己的用途而选择了,我这里选择“Transactional Database Only”,按“Next”继续。
mysql图文安装教程14
对InnoDB Tablespace进行配置,就是为InnoDB 数据库文件选择一个存储空间,如果修改了,要记住位置,重装的时候要选择一样的地方,否则可能会造成数据库损坏,当然,对数据库做个备份就没问题了,这里不详述。我这里没有修改,使用用默认位置,直接按“Next”继续
mysql图文安装教程15
选择您的网站的一般mysql访问量,同时连接的数目,“Decision Support(DSS)/OLAP(20个左右)”、“Online Transaction Processing(OLTP)(500个左右)”、“Manual Setting(手动设置,自己输一个数)”,我这里选“Online Transaction Processing(OLTP)”,自己的服务器,应该够用了,按“Next”继续
mysql图文安装教程16
是否启用TCP/IP连接,设定端口,如果不启用,就只能在自己的机器上访问mysql数据库了,我这里启用,把前面的勾打上,Port Number:3306,在这个页面上,您还可以选择“启用标准模式”(Enable Strict Mode),这样MySQL就不会允许细小的语法错误。如果您还是个新手,我建议您取消标准模式以减少麻烦。但熟悉MySQL以后,尽量使用标准模式,因为它可以降低有害数据进入数据库的可能性。按“Next”继续
mysql图文安装教程17
西文编码,第二个是多字节的通用utf8编码,都不是我们通用的编码,这里选择第三个,然后在Character Set那里选择或填入“gbk”,当然也可以用“gb2312”,区别就是gbk的字库容量大,包括了gb2312的所有汉字,并且加上了繁体字、和其它乱七八糟的字——使用mysql的时候,在执行数据 *** 作命令之前运行一次“SET NAMES GBK”(运行一次就行了,GBK可以替换为其它值,视这里的设置而定),就可以正常的使用汉字(或其它文字)了,否则不能正常显示汉字。按 “Next”继续。
mysql图文安装教程18
选择是否将mysql安装为windows服务,还可以指定Service Name(服务标识名称),是否将mysql的bin目录加入到Windows PATH(加入后,就可以直接使用bin下的文件,而不用指出目录名,比如连接,“mysql.exe -uusername -ppassword”就可以了,不用指出mysql.exe的完整地址,很方便),我这里全部打上了勾,Service Name不变。按“Next”继续。选择是否将mysql安装为windows服务,还可以指定Service Name(服务标识名称),是否将mysql的bin目录加入到Windows PATH(加入后,就可以直接使用bin下的文件,而不用指出目录名,比如连接,“mysql.exe -uusername -ppassword”就可以了,不用指出mysql.exe的完整地址,很方便),我这里全部打上了勾,Service Name不变。按“Next”继续。
mysql图文安装教程19
这一步询问是否要修改默认root用户(超级管理)的密码(默认为空),“New root password”如果要修改,就在此填入新密码(如果是重装,并且之前已经设置了密码,在这里更改密码可能会出错,请留空,并将“Modify Security Settings”前面的勾去掉,安装配置完成后另行修改密码),“Confirm(再输一遍)”内再填一次,防止输错。 “Enable root access from remote machines(是否允许root用户在其它的机器上登陆,如果要安全,就不要勾上,如果要方便,就勾上它)”。最后“Create An Anonymous Account(新建一个匿名用户,匿名用户可以连接数据库,不能 *** 作数据,包括查询)”,一般就不用勾了,设置完毕,按“Next”继续。
mysql图文安装教程20
确认设置无误,如果有误,按“Back”返回检查。按“Execute”使设置生效。
设置完毕,按“Finish”结束mysql的安装与配置——这里有一个比较常见的错误,就是不能“Start service”,一般出现在以前有安装mysql的服务器上,解决的办法,先保证以前安装的mysql服务器彻底卸载掉了;不行的话,检查是否按上面一步所说,之前的密码是否有修改,照上面的 *** 作;如果依然不行,将mysql安装目录下的data文件夹备份,然后删除,在安装完成后,将安装生成的 data文件夹删除,备份的data文件夹移回来,再重启mysql服务就可以了,这种情况下,可能需要将数据库检查一下,然后修复一次,防止数据出错。
oracle和DB2都可以的,一般C/s管理系统是在windows下面跑的,SQL/Server微软这三个都的东东,这三个都很贵,而mysql则是免费的,具体看你对哪种数据库比较熟悉!欢迎分享,转载请注明来源:内存溢出
评论列表(0条)