#include <timeh>
#include<stdioh>
#include<conioh>
#include <stdlibh>
#include<stringh>
#define MAX 80
void input();
void sort();
void display();
void insert();
void del();
void average();
void find();
void save();
void read();
void del_file();
void average();
void modify();
int now_no=0;
struct student
{
int no;
char name[20];
char sex[4];
float score1;
float score2;
float score3;
float sort;
float ave;
float sum;
};
struct student stu[MAX],p;
main()/主函数/
{
int as;
start: printf("\n\t\t\t欢迎使用学生成绩管理系统\n");
/一下为功能选择模块/
do
{
printf("\n\t\t\t\t1录入学员信息\n\t\t\t\t2显示学员信息\n\t\t\t\t3成绩排序信息\n\t\t\t\t4添加学员信息\n\t\t\t\t5删除学员信息\n\t\t\t\t6修改学员信息\n\t\t\t\t7查询学员信息\n\t\t\t\t8从文件读入学员信息\n\t\t\t\t9删除文件中学员信息\n\t\t\t\t10保存学员信息\n\t\t\t\t11退出\n");
printf("\t\t\t\t选择功能选项:");
fflush(stdin);
scanf("%d",&as);
switch(as)
{
case 1:system("cls");input();break;
case 2:system("cls");display();break;
case 3:system("cls");sort();break;
case 4:system("cls");insert();break;
case 5:system("cls");del();break;
case 6:system("cls");modify();break;
case 7:system("cls");find();break;
case 8:system("cls");read();break;
case 9:system("cls");del_file();break;
case 10:system("cls");save();break;
case 11:system("exit");exit(0);
default:system("cls");goto start;
}
}while(1);
/至此功能选择结束/
}
void input()/原始数据录入模块/
{
int i=0;
char ch;
do
{
printf("\t\t\t\t1录入学员信息\n输入第%d个学员的信息\n",i+1);
printf("\n输入学生编号:");
scanf("%d",&stu[i]no);
fflush(stdin);
printf("\n输入学员姓名:");
fflush(stdin);
gets(stu[i]name);
printf("\n输入学员性别:");
fflush(stdin);
gets(stu[i]sex);
printf("\n输入学员成绩1:");
fflush(stdin);
scanf("%f",&stu[i]score1);
printf("\n输入学员成绩2:");
fflush(stdin);
scanf("%f",&stu[i]score2);
printf("\n输入学员成绩3:");
fflush(stdin);
scanf("%f",&stu[i]score3);
printf("\n\n");
i++;
now_no=i;
printf("是否继续输入(Y/N)");
fflush(stdin);
ch=getch();
system("cls");
}
while(ch!='n'&&ch!='N');
system("cls");
}
void sort()/排序数据函数/
{
struct student temp;
int i,j;
average();
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1]ave<stu[j]ave)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
}
void display()/显示数据函数/
{
int i;
char as;
average();
do
{
printf("\t\t\t班级学员信息列表\n");
printf("\t编号\t姓名\t性别\t成绩1\t成绩2\t成绩3\t平均值\n");
for(i=0;i<now_no&&stu[i]name[0];i++)printf("\t%d\t%s\t%s\t%2f\t%2f\t%2f\t%2f\n",stu[i]no,stu[i]name,stu[i]sex,stu[i]score1,stu[i]score2,stu[i]score3,stu[i]ave);
printf("\t\t按任意键返回主菜单");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void insert()/插入数据函数/
{
char ch;
do
{
printf("\n\t\t输入新插入学员队信息\n");
printf("\n输入学生编号:");
scanf("%d",&stu[now_no]no);
fflush(stdin);
printf("\n输入学员姓名:");
fflush(stdin);
gets(stu[now_no]name);
printf("\n输入学员性别:");
fflush(stdin);
gets(stu[now_no]sex);
printf("\n输入学员成绩1:");
fflush(stdin);
scanf("%f",&stu[now_no]score1);
printf("\n输入学员成绩2:");
fflush(stdin);
scanf("%f",&stu[now_no]score2);
printf("\n输入学员成绩3:");
fflush(stdin);
scanf("%f",&stu[now_no]score3);
printf("\n\n");
now_no=now_no+1;
sort();
printf("是否继续输入(Y/N)");
fflush(stdin);
ch=getch();
system("cls");
}
while(ch!='n'&&ch!='N');
}
void del()/删除数据函数/
{
int inum,i,j;
printf("输入要删除学员的编号:");
fflush(stdin);
scanf("%d",&inum);
for(i=0;i<now_no;i++)
{
if(stu[i]no==inum)
{
if(i==now_no)now_no-=1;
else
{
stu[i]=stu[now_no-1];
now_no-=1;
}
sort();
break;
}
}
system("cls");
}
void save()/保存数据函数/
{
FILE fp;
int i;
char filepath[20];
printf("输入要保存的文件路径:");
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"w"))==NULL)
{
printf("\n保存失败!");
exit(0);
}
for(i=0;i<now_no;i++)
{
stu[i]sum=stu[i]score1+stu[i]score2+stu[i]score3;
stu[i]ave=stu[i]sum/3;
fprintf(fp,"\t%d\t%s\t%s\t%2f\t%2f\t%2f\t%2f\n",stu[i]no,stu[i]name,stu[i]sex,stu[i]score1,stu[i]score2,stu[i]score3,stu[i]ave);
}
fclose(fp);
printf("学生信息已保存在%s中!\n",filepath);
system("pause");
system("cls");
}
void find()/查询函数/
{
int i;
char str[20],as;
do
{
printf("输入要查询的学生姓名:");
fflush(stdin);
gets(str);
for(i=0;i<now_no;i++)
if(!strcmp(stu[i]name,str))
{
printf("\t编号\t姓名\t性别\t成绩1\t成绩2\t成绩3\t平均值\n");
printf("\t%d\t%s\t%s\t%2f\t%2f\t%2f\t%2f\n",stu[i]no,stu[i]name,stu[i]sex,stu[i]score1,stu[i]score2,stu[i]score3,stu[i]ave);
}
printf("\t\t按任意键返回主菜单");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void average()/求平均数/
{
int i;
for(i=0;i<now_no;i++)
{
stu[i]sum=stu[i]score1+stu[i]score2+stu[i]score3;
stu[i]ave=stu[i]sum/3;
}
}
void modify()/修改数据函数/
{
int i;
char str[20],as;
printf("输入要修改的学生姓名:");
fflush(stdin);
gets(str);
for(i=0;i<now_no;i++)
if(!strcmp(stu[i]name,str))
{
system("cls");
printf("\n\t\t输入新插入学员队信息\n");
printf("\n输入学生编号:");
fflush(stdin);
scanf("%d",&stu[i]no);
printf("\n输入学员性别:");
fflush(stdin);
gets(stu[i]sex);
printf("\n输入学员成绩1:");
fflush(stdin);
scanf("%f",&stu[i]score1);
printf("\n输入学员成绩2:");
fflush(stdin);
scanf("%f",&stu[i]score2);
printf("\n输入学员成绩3:");
fflush(stdin);
scanf("%f",&stu[i]score3);
printf("\n\n");
sort();
break;
}
system("cls");
}
void read()
{
FILE fp;
int i;
char filepath[20];
printf("输入要读入的文件路径:");
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"r"))==NULL)
{
printf("找不到%s文件!\n",filepath);
system("pause");
exit(0);
}
now_no=0;
for(i=0;i<MAX&&!feof(fp);i++)
{
fscanf(fp,"\t%d\t%s\t%s\t%f\t%f\t%f\t%f\n",&stu[i]no,stu[i]name,stu[i]sex,&stu[i]score1,&stu[i]score2,&stu[i]score3,&stu[i]ave);
now_no++;
}
fclose(fp);
printf("保存的在文件%s中的所有信息已经读入!\n",filepath);
system("pause");
system("cls");
}
void del_file()
{
FILE fp;
char filepath[20];
printf("输入要删除的文件路径:");
fflush(stdin);
gets(filepath);
fp=fopen(filepath,"w");
fclose(fp);
printf("保存的在文件%s中的所有信息已经删除!\n",filepath);
system("pause");
system("cls");
}
自己改改就好了 谢谢 给分哦
第一部分、课程设计的题目与要求
1、 问题的提出
小型图书借阅管理系统的设计。
实现查询和显示功能,可办理借书和还书手续,同时可查询学生所借图书的信息。
2、 功能要求
实现查询和显示功能:按书名查询、按作者名查询和显示图书库存信息。将满足查询条件的整条记录显示在屏幕上。
办理借阅手续:输入学生号,如果不存在于第二个文本文件中,则不能办理借阅,否则,继续输入要借阅的书名,如果在图书信息中存在该书,且未被借出,则可以办理借阅手续,并修改该书的存在状态标志,登记借阅人学号和学生的借阅本数,并修改相应的文本文件。
办理还书手续:输入学生学号,判断其是否有借书。如有借书,则输入书名,判断该书是否被借出,将图书的存在状态标记为1,还书成功,并修改学生的借阅本数。同时修改相应的文本文件。
查询学生所借图书的信息。数据显示效果如下:
学号 2008002 姓名 李四 专业 英语
图书编号 书名 作者 单价
bk001 C语言 谭浩强 3500
bk009 数据结构 严蔚敏 2200
第二部分、课程设计题目功能
1、 系统功能模块框图设计
2、数据结构说明
struct books //定义图书信息结构体
{char bknu[10]; //结构体成员,图书编号
char bkname[30]; //结构体成员,图书名
char bkauthor[10]; //结构体成员,图书作者
float price; //结构体成员,图书单价
int flag; //结构体成员,图书存在状态
char readnu[10]; //结构体成员,图书借阅人学号
}bk[M]; //定义结构体数组
struct students //定义学生信息结构体
{char stunum[10]; //结构体成员,学生学号
char stuname[30]; //结构体成员,学生姓名
char spe[16]; //结构体成员,学生专业
int borrow; //结构体成员,学生借阅本数
}stu[N]; //定义结构体数组
char str1[81],str2[81];//定义二个字符数组,用来存储二个文本的表头信息
void read1()
{
FILE fp; //定义一个文件指针变量,指向图书文本
……
}
void read1()
{
FILE fp; //定义一个文件指针变量,指向学生文本
……
}
void find_author()
{
char author[10]; //定义一个字符数组,用来存放键入的作者名
……
}
void find_bkname()
{
char bkname[10]; //定义一个字符数组,用来存放键入的图书名
……
}
void booklend()
{
FILE fp1,fp2; //定义二个文件指针变量,分别指向图书文本和学生文本
char stunumber[10],bkname[30]; //定义二个字符数组,分别用来存放键入的学生学号和书名
……
}
2、 详细设计
程序开始运行后先执行函数main(),函数void read1()从图书文本中读出数据保存到结构体数组bk[M]中,同时输出在屏幕上,通过调用函数read2()从stu文本中读出数据保存到结构体数组stu[N],同时输出在屏幕上。通过while循环与switch(i)语句来实现功能的选择。通过键入i来调用函数:
当i=1时,调用函数void find_author();
当i=2时,调用函数void find_bkname();
当i=3时,调用函数void find_others();
当i=4时,调用函数void booklend();
当i=5时,调用函数void bookreturn();
当i=6时,调用函数void find_stu();
函数void read1()从bk文本中读出数据保存到结构体数组bk[M]中,同时读取的信息输出在屏幕上。
函数void read2()从stu文本中读出数据保存到结构体数组stu[N],同时读取的信息输出在屏幕上。
函数void find_author(),该函数返回值为空,作用是从结构体数组bk[M]中查找满足条件(输入的作者名与结构体成员—作者名相同),将满足条件的bk[i],输出到屏幕上。具体,键入一作者名,与结构体成员author比较,若相同则输出到屏幕。
函数void find_bkname(),该函数返回值为空,作用是从结构体数组bk[M]中查找满足条件(输入的书名与结构体成员—书名相同),将满足条件的bk[i],输出到屏幕上。具体,键入一书名,与结构体成员bkname比较,若相同则输出到屏幕。
函数void find_others(),该函数的返回值为空,作用是从结构体数组bk[M]中查找满足条件(结构体成员—存在状态为零),将满足条件的bk[i],输出到屏幕上。具体,通过if语言判断结构体成员flag,若值为1,则输出到屏幕。
函数void booklend(),该函数返回值为空,作用是借书。具体,键入一个学号,判断该学号是否在学生文本中,若存在,键入一个书名判断该书是否在图书文本中且是否在库,如果也满足条件则办理借书手续,同时修改后的信息写入文本中。
具体流程图如下图:
函数void bookreturn(),该函数返回值为空,作用是还书。具体,键入一个学号,判断该学号是否在学生文本中,若存在,键入一个书名判断该书是否在图书文本中且是否在库,如果也满足条件则办理还书手续,同时修改后的信息写入文本中。
具体流程图如下图:
函数void find_stu(),该函数返回值为空,作用时查询学生借阅图书的信息。具体,键入一个学号,通过循环与结构体数组bk[i]readnu比较,若相同则输出。
3、 调试与测试
原始数据文件:
图书编号 书名 作者 单价 存在状态 借阅人学号
bk001 C语言 谭浩强 3500 1 无
bk002 寻觅中华 余秋雨 4000 1 无
bk003 C语言 谭浩强 3500 1 无
bk004 C++程序设计 谭浩强 3600 1 无
bk005 文化苦旅 余秋雨 2200 1 无
bk006 牛津简明英语词典 Thompson 11900 1 无
bk007 Oracle基础教程 佩里 6500 1 无
bk008 C语言 李春葆 3900 1 无
bk009 数据结构 严蔚敏 2200 1 无
bk010 大学化学 何培之 3000 1 无
bk011 C语言程序设计 杜友福 2800 1 无
bk012 大学英语 郑数昙 2390 1 无
bk013 高等数学 刘修生 1200 1 无
bk014 电路与模拟电子技术 高玉良 2550 1 无
bk015 大学英语语法 张道真 2900 1 无
学号 姓名 专业 借阅本数
2008001 张三 计算机 0
2008002 李四 英语 0
2008003 赵晓云 计算机 0
2008004 Mary 机械 0
2008005 王楠 电信 0
2008006 周诗维 计算机 0
2008007 张腾 石油 0
2008008 李俊杰 石油 0
2008009 刘杰 机械 0
2008010 王飞 城建 0
测试功能1(按作者名查询):效果如下图
查找作者为谭浩强的图书
测试功能2(按书名查询):效果如下图
查找图书名为电路与模拟电子技术的图书
测试功能3(输出库存图书信息):效果如下图
测试功能4(借书):效果如下图
学号为2008009的学生需要借阅电路与模拟电子技术
测试功能6(显示学生所借图书信息):如图所示
显示学号为2008009的学生所借图书信息
测试功能5(还书):效果如下图
学号为2008009的学生需要还电路与模拟电子技术
执行功能2时,提示内存错误。原因是子函数find_bkname()中定义的字符数组bkname[10]长度不够,改成bkname[30]即可。
执行功能5后,借阅本书都变成地址值。原因是在子函数bookreturn()中输出语句printf()中的‘输出项表列中stu[i]borrow’前加了取地址运算符,去掉该地址运算符即可。
执行功能4后,图书文本中所有数据全都填到了一列上。原因是在子函数book_lend()的fprintf()中格式控制字符串后少了换行。
在程序运行过程中,还出现以下需要注意的错误:if语句条件表达式中应使用逻辑等于(==);可能漏写分号;写程序时应注意输入法切换,正确输入字符。
第三部分、课程设计总结
在本次实训中,我有很多收获。自己对课本知识上的小的知识点把握不够,在这次实训中很多错误都是一些小问题,只要写程序的时候注意点就可以避免,以后写程序时一定会注意。遇到了困难,首先自己找,实在不能解决的话就请教老师和同学。其实很多问题都是我们自己可以解决的,只要我们用心去找,同时相信自己能解决问题。我在这次实训中学会了调试程序,这个功能是我以前所不知道。
对于这个系统,因为它的简单,所以存在不足之处,我就一个方面谈谈我的设想。通过在函数中加条件语句,限制每个人的借书本书,所借图书的总金额。
附录 程序清单
#include<stdioh>
#include<stringh>
#include<stdlibh>
#define M 15
#define N 10
struct books //定义图书信息结构体
{char bknu[10]; //结构体成员,图书编号
char bkname[30]; //结构体成员,图书名
char bkauthor[10]; //结构体成员,图书作者
float price; //结构体成员,图书单价
int flag; //结构体成员,图书存在状态
char readnu[10]; //结构体成员,图书借阅人学号
}bk[M]; //定义结构体数组
struct students //定义学生信息结构体
{char stunum[10]; //结构体成员,学生学号
char stuname[30]; //结构体成员,学生姓名
char spe[16]; //结构体成员,学生专业
int borrow; //结构体成员,学生借阅本数
}stu[N]; //定义结构体数组
char str1[81],str2[81];//定义二个字符数组,用来存储二个文本的表头信息
//读出图书信息
void read1()
{
FILE fp;
int i;
if((fp=fopen("D:\\jz80243_bktxt","r"))==NULL)
{printf("can not open file");
exit(0);
}
fgets(str1,81,fp);
puts(str1);
for(i=0;i<M;i++) //将文件中的信息写入结构体数组中并输出
{
fscanf(fp,"%s%s%s%f%d%s",bk[i]bknu,bk[i]bkname,bk[i]bkauthor,&bk[i]price,&bk[i]flag,bk[i]readnu);
printf("%-8s%-20s%-16s%-142f%-8d%-10s\n",bk[i]bknu,bk[i]bkname,bk[i]bkauthor,bk[i]price,bk[i]flag,bk[i]readnu);
}
fclose(fp);
}
//读出学生信息
void read2()
{
FILE fp;
int j;
if((fp=fopen("D:\\jz80243_stutxt","r"))==NULL)
{printf("can not open file");
exit(0);
}
fgets(str2,81,fp);
puts(str2);
for(j=0;j<N;j++) //将文件中的信息写入结构体数组中并输出
{
fscanf(fp,"%s%s%s%d",stu[j]stunum,stu[j]stuname,stu[j]spe,&stu[j]borrow);
printf("%-15s%-16s%-18s%-8d\n",stu[j]stunum,stu[j]stuname,stu[j]spe,stu[j]borrow);
}
fclose(fp);
}
//按作者查询
void find_author()
{
char author[10];
int i;
printf("请输入作者名:");
scanf("%s",author);
puts(str1);
for(i=0;i<M;i++)
if(strcmp(author,bk[i]bkauthor)==0) //将输入的作者名与结构体数组中的作者名比较
printf("%-8s%-20s%-16s%-142f%-8d%-10s\n",bk[i]bknu,bk[i]bkname,bk[i]bkauthor,bk[i]price,bk[i]flag,bk[i]readnu);
}
//按书名查询
void find_bkname()
{
char bkname[30];
int i;
printf("请输入书名:");
scanf("%s",bkname);
puts(str1);
for(i=0;i<M;i++)
if(strcmp(bkname,bk[i]bkname)==0) //将输入的书名与结构体数组中的书名比较
printf("%-8s%-20s%-16s%-142f%-8d%-10s\n",bk[i]bknu,bk[i]bkname,bk[i]bkauthor,bk[i]price,bk[i]flag,bk[i]readnu);
}
//输出库存图书信息
void find_other()
{ int i;
for(i=0;i<M;i++)
if(bk[i]flag==1) //判断图书是否在库
printf("%-8s%-20s%-16s%-142f%-8d%-10s\n",bk[i]bknu,bk[i]bkname,bk[i]bkauthor,bk[i]price,bk[i]flag,bk[i]readnu);
}
//借书
void booklend()
{
FILE fp1,fp2;
char stunumber[10],bkname[30];
int i,t;
printf("input the studentsnu:");
scanf("%s",stunumber);
for(i=0;i<N;i++)
if(strcmp(stunumber,stu[i]stunum)==0)
{t=i;break;}
if(i==N) //输入的学号不在文件2中,不能借书
{ printf("NO find!Can't lend!\n");
return;
}
printf("input the bookname:");
scanf("%s",bkname);
for(i=0;i<M;i++)
if(strcmp(bkname,bk[i]bkname)==0 && bk[i]flag)
{
bk[i]flag=0;
strcpy(bk[i]readnu,stunumber);
stu[t]borrow++; //学生借阅本数加1
break;
}
if(i==M)
{
printf("该书不存在或已全部借出\n");
return;
}
//更改图书文件信息
if((fp1=fopen("D:\\jz80243_bktxt","w"))==NULL)
{
printf("can't open file");
exit(0);
}
fputs(str1,fp1);
puts(str1);
for(i=0;i<M;i++) //将结构体中的数据写入文件
{
printf("%-8s%-20s%-16s%-142f%-8d%-10s\n",bk[i]bknu,bk[i]bkname,bk[i]bkauthor,bk[i]price,bk[i]flag,bk[i]readnu);
fprintf(fp1,"%-8s%-20s%-16s%-142f%-8d%-10s\n",bk[i]bknu,bk[i]bkname,bk[i]bkauthor,bk[i]price,bk[i]flag,bk[i]readnu);
}
fclose(fp1);
//更改学生文件信息
if((fp2=fopen("D:\\jz80243_stutxt","w"))==NULL)
{
printf("can't open file");
exit(0);
}
fputs(str2,fp2);
puts(str2);
for(i=0;i<N;i++) //将结构体中的数据写入文件
{
printf("%-15s%-16s%-18s%-8d\n",stu[i]stunum,stu[i]stuname,stu[i]spe,stu[i]borrow);
fprintf(fp2,"%-15s%-16s%-18s%-8d\n",stu[i]stunum,stu[i]stuname,stu[i]spe,stu[i]borrow);
}
fclose(fp2);
}
//还书
void bookreturn()
{
FILE fp1,fp2;
int i,t;
char stunumber[10],bkname[30];
printf("input the studentsnu:");
fflush(stdin);
gets(stunumber);
for(i=0;i<N;i++)
if(strcmp(stunumber,stu[i]stunum)==0)
if(stu[i]borrow!=0)
{t=i;break;}
else
{
printf("该生未借书,不能还书!\n");
return;
}
if(i==N)
{printf("未找到该生,不能还书!\n");return;}
printf("input the bookname:");
gets(bkname);
for(i=0;i<M;i++)
if(strcmp(bkname,bk[i]bkname)==0&&(bk[i]flag==0))
{
bk[i]flag=1;
strcpy(bk[i]readnu,"无");
stu[t]borrow--;
break;
}
if(i==M)
{printf("该书未借出或不存在!\n");return;}
//更改图书文件信息
if((fp1=fopen("D:\\jz80243_bktxt","w"))==NULL)
{
printf("can't open file");
exit(0);
}
fputs(str1,fp1);
puts(str1);
for(i=0;i<M;i++) //将结构体中的数据写入文件
{
printf("%-8s%-20s%-16s%-142f%-8d%-10s\n",bk[i]bknu,bk[i]bkname,bk[i]bkauthor,bk[i]price,bk[i]flag,bk[i]readnu);
fprintf(fp1,"%s%s%s%f%d%s",bk[i]bknu,bk[i]bkname,bk[i]bkauthor,bk[i]price,bk[i]flag,bk[i]readnu);
}
fclose(fp1);
//更改学生文件信息
if((fp2=fopen("D:\\jz80243_stutxt","w"))==NULL)
{
printf("can't open file");
exit(0);
}
fputs(str2,fp2);
puts(str2);
for(i=0;i<N;i++) //将结构体中的数据写入文件
{
printf("%-15s%-16s%-18s%-8d\n",stu[i]stunum,stu[i]stuname,stu[i]spe,stu[i]borrow);
fprintf(fp2,"%-15s%-16s%-18s%-8d",stu[i]stunum,stu[i]stuname,stu[i]spe,stu[i]borrow);
}
fclose(fp2);
}
void find_stu()
{
char stunumber[10];
int i,j;
printf("input studentsnum:");
scanf("%s",stunumber);
for(i=0;i<N;i++)
if(strcmp(stunumber,stu[i]stunum)==0)
{
printf("学号:%-15s姓名:%-16s专业:%-18s借阅本数:%-8d\n",stu[i]stunum,stu[i]stuname,stu[i]spe,stu[i]borrow);
if(stu[i]borrow!=0)
printf("图书编号 书名 作者 单价 \n");
for(j=0;j<M;j++)
{
if(strcmp(stu[i]stunum,bk[j]readnu)==0)
printf("%-8s%-20s%-16s%-142f\n",bk[j]bknu,bk[j]bkname,bk[j]bkauthor,bk[j]price);
}
printf("\n\n\n");
break;
}
if(i==N) printf("该生不存在!!\n\n\n");
}
void main()
{ int i;
read1();
read2();
while(1)
{
printf("小型图书借阅管理系统\n");
printf(" 1按作者查询图书 2按书名查询图书 \n");
printf(" 3按条件查询图书 4借 书 \n");
printf(" 5还 书 6查询学生借书信息 \n");
printf(" 0退出系统 \n");
printf("请选择(0~6):");
scanf("%d",&i);
switch(i)
{
case 1: find_author();break;
case 2: find_bkname();break;
case 3: find_other();break;
case 4: booklend();break;
case 5: bookreturn();break;
case 6: find_stu();break;
case 0: exit(0);
}
}
}
我还有代码呢,要的话,马上帖出来给个红棋吧,呵呵
一、 课题设计名称
学生成绩管理信息系统分析设计
二、 课题设计目的
通过本次课程的设计,加深对信息系统基础理论和基本知识的理解,掌握使用信息系统分析、设计的基本方法,提高解决实际管理问题、开发信息系统的实践能力。
三、 任务要求:
用信息系统开发工具(例如Visual Foxpro、Visual Basic、Delphi等)开发一个实用的中小型管理信息系统。
1、根据课程设计时间选择适当规模大小的设计课题。
2、根据合理的进度安排,按照系统开发的流程及方法,踏实地开展课程设计活动。
3、课程设计过程中,根据选题的具体需求,在开发各环节中撰写相关的技术文档(小组各成员可分别完成某阶段的技术文档),最后要求提交详细的课程设计报告。
4、开发出可以运行的管理信息系统,通过上机检查。
四、 课题设计报告书要求:
1、 课题设计报告书第一页为封面,封面上写清楚标题、班级、姓名、指导老师、完成日期,格式自己设计。
2、 课题设计报告书第二页为本任务书。
3、 课题设计报告书第三页为教师评语。
4、 课题设计报告书第四页为目录。
5、 课题设计报告书第五页开始为具体内容:
(1)可行性分析
(2)系统分析部分
1)业务流程图
2)数据流程图
3)功能分析图
4)数据字典
5)数据加工处理的描述
6)管理信息系统流程设想图(新系统模型)
(3)系统设计部分
1)功能结构图设计
2)新系统信息处理流程设计
3)输出设计(主要指打印输出设计)
4)存储文件格式设计(数据库结构设计)
5)输入设计(主要指数据录入卡设计)
6)代码设计(职工证号和部门代号等)
7)程序设计说明书
(4)附录或参考资料
6、课题设计报告书最后一页是本次课程设计的小节和参考文献。
7、字数要求不少于4000字。
8、打印纸张使用B5纸,页边距设为上、下、左2厘米,右15厘米,
五、 如有雷同,将作不及格处理。
六、 完成时间:200715
计算机二系
尚晋
20071028
教师评语
评分模块 评分标准及分值 得分
平时成绩(20分) 1 态度(10分)
2 考勤(10分)
分析与设计部分
(65分) 3 需求分析(5分)
4 系统复杂度(5分)
系统分析部分(20分) 5 业务流程图(5分)
6 数据流程图(5分)
7 功能分析图(3分)
8 数据字典(7分)
系统设计部分
(35分) 9 系统配置方案设计(5分)
10 用户界面导航图(5分)
11 界面设计(5分)
12 有效性验证(5分)
13 错误处理(5分)
14 编码设计(5分)
15 数据库设计(5分)
报告部分(10分) 16 条理清晰、语言精练准确(5分)
17 描述图形工具使用恰当(5分)
组长加分(5分) 18 组织得力,合作完成情况好(5分)
总分(100分)
成绩:
学生成绩管理信息系统
1 系统规划
11项目开发的背景
伴随着信息社会的到来,信息的极大丰富必然要求人们适应信息社会,信息和材料、能源一样成为一种社会的基本生产资料,在人类的社会生产活动中发挥着重要的作用,其中最重要的前提就是充分利用人们的才智和学习能力。传统的教学只教会了学生相关的知识,没有教会学生如何利用这些知识,以及再学习的能力。特别对于“管理信息系统”这类实用性比较强的课程,更需要培养学生的实际动手能力。教与学互动与结合,强调应用,不仅让学生了解课程上讲授的管理信息系统方法和原理,而且让学生们利用这些知识解决实际问题。这对学生的实际工作能力是一个很好的锻炼。密切结合学生独立完成的系统开发作业,通过指导教师的点评,使学生能够在较短的时间内,通过实践,真正掌所学的知识。同时人们对信息和数据的利用与处理也已经进入了自动化、网络化和社会化的阶段,因此,开发相关的管理信息系统已经成为各行各业的必要和必需了,管理信息系统作为一门边缘学科,集管理科学、信息科学、系统科学、现代通信技术和电子计算机技术于一体,可以解决企业或组织所面临的问题,对于成绩管理员的劳动强度、提高工作质量和效率;方便管理人员对信息的查询、提高信息资源的利用效率和管理水平都具有重要意义。
12 可行性分析
基于以上对问题的调查和分析,利用计算机给我们提供的信息,及时地了解学生的信息,并且形成一整套动态的管理就十分必要了。本系统开发的主要目的是对学生信息和成绩的实现计算机管理。学生管理系统的建立,是在进行对大量用户需求与调查分析得到的。
(1)技术可行性
成绩管理系统主要是用于计算机教育部关于教学计划、课程、教师信息、成绩的查询和管理。通过使用Microsoft公司提供的Visual FoxPro 60工具以及SQL Server数据库可以实现对有关课的教学计划、课程等的网上查询和管理,主要目的是对学生成绩实现计算机管理。
(2)经济可行性
开发学生成绩管理系统费用较底,可利用现有的微机设备,经济上是可行的,非常适合于成绩管理,因为该系统实现了将管理和查询网络
化,极大地方便了管理员、教师、学生。
(3) *** 作可行性
本系统的界面设计简单直观,易于理解。它使用的控件都是用户常用的或常见的, *** 作起来很容易上手。不需要特别的培训和讲解,用户便能使用该系统。
(4)组织与管理可行性
成绩管理员是对学生的成绩进行管理的,但过去由于采用人工方法进行管理,工作效率低,劳动强度大,所以他们希望采用计算机管理,将已有的管理经验转化到管理软件中。这就使得系统调查、需求分析能够得到有关人员的大力支持和积极配合。
13 制定系统开发计划
开发学生成绩管理系统的计划见表1-1
表1-1 实验小学学生成绩管理系统开发简略计划表
序号 项目内容 时间进度 项目负责人
1 系统规划和可行性分析 2007年12月 向万秀
2 系统分析 2007年12月 张春先、向万秀、刁胜
3 系统设计 2007年12月 向万秀、张春先
4 系统实施与测试 2007年12月 向万秀
5 系统评价与维护 2007年12月 张春先
6 安全保障措施 2007年12月 向万秀、张春先
2系统分析
1现行系统业务流程的调查
对某学校进行实地调查,其现行的成绩管理工作都是采用传统的手工管理,经过对成绩管理员、学生和教师的全面的调查研究,手工工作效率低,工作质量差,不适合现在学校成绩管理系统的需求,所以需要改进传统的成绩管理模式。实现科学化管理。
对现行系统的调查业务流程图如下图1-1所示:
学生
1-1 业务流程图
2 需求分析
(1) 功能描述
本系统包括用户管理、学生注册、班级信息录入、学生信息录入、班级课程录入、学校专业信息录入、课程信息录入、学生成绩录入、教师信息录入、各方面的查询等等。
1.教学管理功能
① 新本学期所开设课程的录入与查询:例如在2006年上学期开设课程:C语言与经济数学。
说明:所有的课程成绩均由三部分组成:平时成绩,上机成绩, 笔试成绩。所占的比重分别为:30%,10%,60%,在该系统中这三部分及其比重是固定不变的。
② 对各系科的课程安排的录入与查询,课程安排即是该学期每个学科
的选课课程、任课教师以及上课时间和上课地点。
说明:每一个院系中所有的不同专业所选的课程都是一样的。但是同一院系的学生不一定有同一个教师授课。
(2).成绩管理的功能(教师使用)如下:
① 录入成绩:既可以单个录入也可以批量录入,其中批量录入以成绩单单位,每次从系统中调出一张成绩单,编辑完成后一次性提交。
成绩单:成绩单包括学期、院系、专业、课程、任课教师、学生成绩。
② 查询成绩:单个查询(学生可使用),根据学生的学号或姓名查询出该学生的所有课程的成绩信息。批量查询以成绩单为单位,每次查询出一张成绩单。
③ 打印成绩:可以一次打印一张成绩单,也可以按要求批量打印。
④ 统计调整:对成绩单中的成绩进行统计,指出各个分数段的人数分布情况。因为有时学生的成绩整体上偏低,需要进行调整,一次系统可以按照用户设置的规则对成绩单中的成绩进行调整。
成绩调整规则:将成绩单中总分在某一分数段的学生成绩调整到另外一个分数段。例如将50到60分的学生成绩全部调整到60到65分之间。为了使调整过程尽可能合理,还可以对待调整分数段的学生成绩进行限制,例如设置其笔试成绩必须在50分以上,而平时成绩则可以适当放宽。
⑤ 每学期考试不及各的学生自动纳入新学期的跟考或辅修教学计划中。
(3).权限说明:
① 管理员可使用功能:教师信息管理、系科显示、课程管理、教学计划管理、学生成绩查询;
② 教师可使用成绩管理各项功能:对学生成绩的添、删除、修改、查询、分析、调整;
③ 学生可使用的功能:查询单个学生所有成绩,班级成绩,学生平均成绩,最高分,最低分等。
为学校教师和学生提供快捷的查询手段,让老师和学生能够及时查询学生成绩信息,更快而又方便的进行查询。
(4)性能要求
本系统采用计算机对学生成绩进行管理,进一步提高办学效益和现代化水平。帮助广大教师提高工作效率,实现学生成绩信息管理工作流程的系统化、规范化和自动化。如果本系统能被学校所采用,将会改变以前靠手工管理学生成绩的状况,可以树立良好的办学形象,提高工作效率。由于现在实行九年义务教育,学校学生不断增加,该系统可高效的进行大规模的查询。系统的安全保密性高,能防止非法访问。
3新系统的逻辑模型的建立
(1) 新开发的学生成绩管理系统的功能分析
在学生成绩管理信息系统中,主要有三类外部实体:学生、教师、教务处工作人员。学生成绩管理信息系统的大部分功能是为教务处工作人员设置的。经调查分析,新开发飞的学生成绩管理信息系统应具有以下的功能。
(11) 查询学生的基本信息和成绩信息,包括学生信息的添加、修改、删除等。
(12) 管理学生成绩,包括考试管理,成绩管理等。
(13) 成绩的处理,即统计成绩、分析成绩等。
(2) 绘制数据流图
绘制数据流图时,只考虑学生和教务处两个外部实体,顶层数据流图如图1-2所示。
学生成绩录入 教师课程信息
学生成绩单
学生登录信息
学生选课信息 辅修/跟考通知单
用户名、密码 部门信息
课程类型 学生成绩信息
课程信息 学生考试信息
图1-2 顶层数据流图
0层数据流如图1-3所示。由于1层图没有完整绘制,0层图中只属于一个加工的文件(例如权限表)也在0层图上出现。
0层数据流图通过反应整个系统中不同数据流向,来揭示系统的组成结构以及各组成部门之间的关系,这种关系主要体现在对数据的 *** 作和处理上。
用户名、密码
学生信息
部门信息
学生成绩
学生信息
学生成绩单
成绩类型 辅修/跟考通知
学生成绩 不及格成绩
缺考
图1-3 0层数据流图
学生信息数据流程图如图1-4、1-5所示。
学生信息 审查11 合格单 是否新生12 新生信息
学生纪录
学生成绩
总学生纪录表及成绩
图1-4 1层数据流图
(3) 数据字典
数据字典是进行数据收集和数据分析所获得的主要成果,是系统中各类数据描述的集合。数据字典通常包括数据项、数据流、数据存储、处理逻辑。
数据项
名称:学生信息
别名:学生信息
说明:学生信息=学生基本信息+学生记录+学生成绩记录
类型:字符型
长度:12
取值范围:0000000000001~99999999999
数据流条目:
合格单=姓名+系别+班级+专业
新生信息=入学时间+姓名+性别+年龄+专业+系别+班级
加工条目:
加工名:审查
编号:11
输入:学生信息
输出:合格单
加工逻辑:根据学生信息判断是否是新生
加工逻辑
加工逻辑
加工名:是否是新生
编号:12
输入:合格单
输出:新生信息
加工逻辑:根据合格单建立新生信息
加工名:录入、存储学生信息、各科成绩
编号:1。3
输入:新生信息、考试成绩
输出:本次考试成绩
2层数据流图
学号、课程号 有效查询 成绩
考试成绩 成绩单
学生纪录 班级 统计成绩
各科
本次成绩 升留级名单 学生纪录
成绩标准
图1-5 2 层数据流图
数据字典:
数据项
名称:学号、课程号
别名:编号
说明:惟一标识一个学生编号
类型:字符型
长度:12
取值范围:0000000000001~9999999999999
数据存储文件
数据存储条目:
数据存储名称:考试成绩
组成:姓名+班级+专业+系别+成绩+学号
组织方式:索引文件,以学号为关键字
加工处理
加工逻辑
加工名:有效性检查
编号:2。1
输入信息:学号、课程号
输出信息:有效查询
加工逻辑:根据所输入的信息来检查有效性
加工名:查询成绩
编号:2。2
输入信息:考试成绩
输出信息:成绩
加工逻辑:根据考试成绩查询成绩
加工条目:
加工名:统计选择
编号:3。1
输入信息:学生记录
输出信息:按规定统计成绩
加工逻辑:根据所输入学生记录,按班级、单科统计成绩
数据存储条目:
文件名:成绩标准 组成:成绩
加工条目:
加工名:是否升级
编号:4。1
输入信息:本次成绩、成绩标准
输出信息:升留级名单
加工逻辑:根据本次成绩
IF 大于等于标准成绩 ELSE 降级
ENDLF THEN 升级
加工名:更新记录
编号:4。2
输入信息:升留级名单
输出信息:学生记录
加工逻辑:根据升留级名单修学生记录
3系统设计
1 系统总体结构设计与功能模块划分及系统功能描述
本系统的主要任务是实现对学校教导处的学生信息管理、成绩管理、课程管理及相关查询。其主要功能包括:
学生成绩管理模块,学生信息管理模块、系统模块等等。
学生信息管理功能
(1)班级管理。提供给班主任进行本班学生的信息更新、删除。
(2)添加学生。以班级为单位,进行学生入库。其中分为单个添加和成批添加。单个添加学生供数量较少的学生信息入库;成批添加可以从现存的学生信息EXCEL文件中成批录入到数据库中。
(3)删除学生。当学生毕业后,学生信息转移备份数据库中,系统的基本数据库中需要删除学生信息。该功能主要进行成批地删除学生信息,如连续学号区段的多位学生信息删除,整个班级的删除,所有学生信息的删除。
(4)新生管理。本部分的功能主要有新生导入、分班、及设置学号。新生导入实现从现存的EXCEL新生名单中录入学生信息。分班功能实现按新生的报考专业、成绩及性别进行分班。设置学号实现自动为各班学生编发学号。
学生信息备份。在学生信息删除前,将其按班级为单位保存到备份数据库。
(5)学生信息模块主要包括对学生信息的存储,审查记录以及学生对学生整个信息的调查进行分类和查找。可以实现添加、修改、删除、查询学生信息管理的调查。
(6)学生基本信息管理功能包括:学生信息、学生记录、学生成绩、总学生记录表和成绩。
(7)学生基本信息包括:学生学号、学生班级号、课程号、学生****等等
(8)课程管理。提供本学期各年级各专业所开课程名称的录入、修改、删除。它是学生成绩管理的基础。用以保证数据库中一致性原则。
2系统功能分析
系统开发的总体任务是实现学生信息关系的系统化,规范化和自动化。
学生基本信息所需要完成的功能主要有:
●学生信息的输入,包括输入学生基本信息、所在班级、所学课和 成 绩等。
● 学生信息的查询,包括输入学生基本信息、所在班级、已学课程和成绩 等。
● 学生信息的修改。
● 班级管理信息的输入、查询、修改,包括输入班级设置,年级信息等。
● 基本课程信息的输入、查询、修改。
● 学生成绩信息的输入、查询、修改。
对上述各功能进行集中、分块、按照结构化程序设计的要求。
2绘制学生信息管理模块功能结构图如图
图1-6 学生信息系统管理的功能结构图
3系统配置方案设计
鉴于本系统的业务性质,必须选择具有较高的可靠性、稳定性和必要的容错能力的计算机硬件和软件系统,以保证任何情况下都不至于丢失、损坏数据。
必须具有较高的响应速度,以保证各项具体业务的顺利进行。
应考虑具有良好的可维护性,可 *** 作性和可扩充性,以保证将来系统规模的扩展和升级的需要。
4开发与运行环境的使用
开发前台工具:Visual FoxPro 60
*** 作系统对整个网络起着重要的作用,Windows 2000作为一种强健的、多用途的 *** 作系统,不仅能够运行强有力的客户/服务器应用软件,还可以提供可靠的文件与打印服务,再加其内置的通信与Internet/Internet服务功能,以及安装、使用、管理和维护的方便性,因此,本系统采用Microsoft Windows 2000Server作为 *** 作系统。
本系统准备采用客户机/服务器(C/S)结构模式。C/S结构的最大优势在于广泛采用了网络技术,将系统中的各部分任务分配给分布在网络上的担任不同角色的计算机。把较复杂的计算机管理任务交给服务器完成。再把一些频繁与用户打交道的任务交给客户机完成。通过这种结构完全实现了网络上信息资源的共享。
开发基于C/S结构的管理系统所用到的开发工具包括前台开发工具和后台数据库管理系统,主要根据开发者对开发工具的熟悉程度而定。本系统的前端开发工具采用Visual FoxPro 60。
5编码(Code)设计
6数据库设计
(1) 概念结构设计
经过本次实验,概念结构设计的主要工作是根据用户需求设计概论性数据模型。概念模型是一个面向问题的模型,它独立于具体的数据库管理系统,从用户的角度看待数据库,反映用户的现实环境,与将来数据库如何实现无关。概念模型设计的典型方法是E-R方法,即用实体—联系模型表示。
E-R方法使用E-R图来描述现实世界,E-R图包含三个基本成分:实体、联系、属性。E-R图直观易懂,能够比较准备地反映现实世界的信息联系,从概念上表示一个数据库的信息组织情况。
实体:是指客观世界存在的事物,可以是人或物,也可以是抽象概念。E-R图中各实体的关系说明如下。
学号记载学生成绩管理系统中所登记的一类编号,而所有的学生姓名是所代表的是学生的代码。中两个实体之间为一对多关系。
学生可以选择多门课程,一门课程可以有多个学生选择。其中本系统中E-R图包括学生性别、出生日期等等。课程中包括课程号、课程名、教师姓名等等。
M N
学生与课程之间的关系
课程名是惟一的,而选课的学生是多个的,这两个实体之间为一对一关系。
一个学校有多位老师,这两个实体之间为一对多关系。
学生与课程表中的同一课程对应多个不同的老师与学生,这两个实体间为一对多关系。
个人认为这是一个很好的文字,说的很清楚:
C是一种结构化语言,如谭父说:“它侧重于算法和数据结构。 C程序设计的首要考虑的是怎么一个过程,来获得输出输入(或环境条件)运算处理(或实现过程(事务)控制),而对于C + +,首要考虑的是如何构建对象模型中,因此这种模式是能够符合相应的问题域,这样你就可以通过对象的状态信息输出或实施过程控制(交易)。
所以C和C + +是最大的区别在于他们的思维来解决问题的方式是不一样的。究其原因,是C + +比C更先进,因为“的设计理念已经被集成到了C + +”,在C中,算法语言本身是更概念化。这是不是C并不重要,错!算法的基础程序设计,良好的设计,没有一个很好的算法,同样不能。此外,“C加上好的设计”也可以写一个非常好的事情。
语言本身,C是C + +的一个子集,那么什么样的一个子集?从上面可以看出,CC + +,实现了过程控制等相关功能,而在C + +中C(我称它为“C +”),相对于原来的C已经加强,重,内联函数,异常处理,所以项目的引进,C + +是面向对象的设计来扩展其内容,如类,继承,虚函数,模板和容器类等。
进一步提高一点,在C + +的数据包,输入的东西是什么新东西,如:选择对象的粒度,界面设计对象和继承,需要考虑结合使用继承等其他问题。
所以相对于在C,C + +包含了更丰富的“设计”的概念,但C是一个C + +的子集,自洽,而且还具有强大的功能,还值得研究。
一些学习建议:
1。基本概念是非常重要的。无论是学习C,或了解C + +的基本概念是第一个,它是比较困难的,但只有在掌握基本概念,才能从总体上把握背景下,居高临下。
2。 C是C + +,是比较容易理解的,其基本理念和设计方法,初学者可以从它开始的一个子集。
3。如果你想学习C + +,最好不要推荐适合初学者使用,如VC,BCB平台编写程序,自动代码生成,丰富多彩的界面,可以让你知道该怎么做。最好先找到一个开放的空间,从点滴做起(UNIX,DOS),写了几个大点的程序,轮数,然后VC,BCB下看,你会很容易。在我看来,对学习C / C + +是成为VC,BCB高手的唯一途径。
4。做不是妄想崩溃,你必须有一个字节,有点拉,揣摩每一个问题。
5。几本书:
机械工业出版社的“计算机科学系列”从C到C + +面向对象的设计,随手可得,都TMD是经典中的经典,价格是公平的,非圆顶欺负。
有几本书,谭父的书都很好,就是太多的错误。清华大学周的英语强烈推荐“现代软件工程”(上,中,下),它是我见过一些好书,精华中的精华,点对点,薄的材料,至少它是国家降龙十八掌级的东西。
如果人们仍然希望学习C / C + +,然后有一些小问题,我很高兴回答,但我想学习C / C + +并不重要,重要的是如何行使你的想法。不要找一些混淆的问题,甚至自己做。
我认为,虽然“谭浩强”同志诈骗的犯罪嫌疑人(我有一个几乎相同的英文书籍),但他把底漆进入中国,所以很多程序员理解C语言,我认为他的功劳也不可磨灭的这本书中的所有例子可用于思考的基石,他的节目给大家做的练习是非常有帮助的,我认为这是值得一买的。例子来思考课后编程很有帮助,你不要小看一个简单的例子,它们是你通往成功的道路。
当你能基本掌握了前面的例子在这本书中,你会发现他们的程序的一些例子看到的。开始读,但如果他们努力工作是没有问题的,当你已经看到了一些很好的例子,你会突然看到了光明,(读了很多的例子程序,是学习C / C + +快捷键)你会发现,你的水平已经显着提高。看例子越多,你在Windows / DOS了解更多。更好看一些有关系统的知识的书籍,他将不得不在你的程序非常有用。
这是我学习C / C + +的经验,我希望我没有害怕,想继续学习C / C + +的朋友有一定的帮助。恐怕有些同志说我破坏中国的软件人才发展。
在最后我祝愿所有坚持学习C / C + +的朋友成功!也感谢阅读我的文章的同志。
想学习C + +,C也不能非学校! ! !
今天我这么肯定了这里的言论虽不是新手落入错误的语言越多,越好,这个话题是不是很严格,但我必须说几句讲,对于C平反! !
C + +和C有什么区别会做什么呢?我们现在一步步来分析
一,阶级,阶层,我并没有说有什么不妥,但对于初学者来说,它是一个负担。类包允许初学者程序产生厌倦,不适和麻烦。
二,引用,引用在C + +最趾高气扬的事情,最好是不要尽可能地使用它,我只是从来没有使用引用,除非万不得已。引用更容易为初学者感到困惑,不知道这是引述,这是变量。
三,函数重载,函数重载初学者学习似乎是没有伤害,但是,这使得C语言初学者潜意识变量类型产生稀释的重要性,记得C语言是最敏感的变量类型,类型在C语言中的变量重要性是不言而喻的。
四,流运营商,同样的道理,所以变量类型的重要性产生淡化,况且,CIN这东西有点不方便,可以让初学者有时会产生奇怪的结果。
五, *** 作符重载,一个典型的先进应用,初学者可能并不需要所有这些东西会令他们感到,C + +的难,门槛高,不能读
六,继承,虚函数,一个典型的模仿四不象,这狗屎看起来深奥的东西,除了低实用价值。我怎么可能把一个指针到另一个类类型,但不同类型的类的继承关系是实现动态绑定,晕
一些东西,我不会加以评论,如:新建,删除运营商,等等
7个错误:问题和答案格式:
Q:C + +面向对象和C是面向过程,面向?
答:第二对,错的第一个问题,C + +不完全的面向对象的技术,恐怕只对Java才算得上真正的面向对象的语言。
问:C + +实现的C函数不能做?
答:至少我还没有发现
问:学习C语言,学习C + +有障碍吗?如程序设计
答:至少我还没有看到有这种症状。
问:学习C语言,学习C + +你必须重新开始吗?
答:不,C + +下可以实现所有的C语言函数。
问:我完成学校C将肯定需要学习C + +编程?
答:绝对没有必要的。
问:C + +比C好?
答:更一致的软件工程
问:成品学校学习C到C + +是不是很容易吗?
答:这取决于你所学到的是不是真的完成了C语言,我学会了从C到C + +卧床时间的前一个星期读两本书,然后大彻大悟。然后来这里发布一些狗屁文章。
最近看到很多人在网上学习方法,我坚决不同意。很多人想一口吃个胖子,想学习学习最新的,因为如果没有人愿意去学习那些老的,旧的编程语言?但是,你可以学习理解呢?不学习TC2。 0早期优秀的编程语言,你可以了解在VC6。 0?如果你真的可以,我宁愿做你的弟子!奇怪了,谁不明白最基本的语言的人,如何理解那些人可能最新的编程语言?我学到现在,三年的编程。性能不是太多,只有一台电脑和高程证书四卡,但我觉得我学习VC,你不明白有很多。没有人教我要靠自己的,其中包括所有级别,我总是依靠自己,我从来没有报班。学习的VC超过六个月,我想我基本上已经开始,但依然有很多的困惑。刚开始学习VC,正面临着一个项目,我真的很喜欢在一般情况下,触摸四个恐慌,毫无章法,最后几乎勉强算是一个傻瓜。 VC去学校学习其他先进的Windows编程,我觉得它是很容易的,毕竟,在WINDOWS里面的东西很多,可以直接调用由VC,第一件事情,你可以有WINDOWS有了新的认识,你们去学习其他语言不能简单吗?
我的感觉是面向过程和面向对象的,其实非常重要的,在VC仍然会需要的过程中,很多事情都是相互关联的,也没有面向过程思考,如何编程成为可能?更值得推荐的Windows编程的书,但大多数都是比较老的书呦!我仍然记得那天TC编程很难,但我仍然怀念当年的劳动付出,毕竟我得到了我想要得到的一切 - 编程思想。我认为,一个良好的编程思路,比你一定学习好更重要的一种计算机语言。要形成自己的编程风格。在你的心目中,一个好的编程思想一旦形成,什么样的语言将是很容易学的,因为在这个时候,你不会是简单易学,但验证!
参考文献: >
书名 新概念51单片机C语言教程——入门、提高、开发、拓展全攻略(含光盘1张)
作者
作译者 郭天祥
出版社 电子工业出版社
ISBN 978-7-121-07893-4
定价 6900元
出版日期 2009-01
页码
版次
装帧
开本 16
▼内容简介
本书从实际应用入手,以实验过程和实验现象为主导,循序渐进地讲述51单片机C语言编程方法以及51单片机的硬件结构和功能应用。全书共分5篇,分别为入门篇、内外部资源 *** 作篇、提高篇、实战篇和拓展篇。本书内容丰富,实用性强,书中大部分内容均来自科研工作及教学实践,许多C语言代码可以直接应用到工程项目中。本书配套光盘提供13讲近30学时的教学视频和本书实例代码,可使读者更快更好地掌握单片机知识和应用技能。本书作者还可提供与本书配套的单片机实验板。
本书可作为大学本、专科单片机课程教材,适合于51单片机的初学者和使用51单片机从事项目开发的技术人员,也可供从事自动控制、智能仪器仪表、电力电子、机电一体化等专业的技术人员参考。
▼图书目录
第1篇 入 门 篇
11 单片机概述
111 什么是单片机
112 单片机标号信息及封装类型
113 单片机能做什么
114 如何开始学习单片机
12 51单片机外部引脚介绍
13 电平特性
14 二进制与十六进制
141 二进制
142 十六进制
15 二进制的逻辑运算
151 与
152 或
153 非
154 同或
155 异或
16 单片机的C51基础知识介绍
161 利用C语言开发单片机的优点
162 C51中的基本数据类型
163 C51数据类型扩充定义
164 C51中常用的头文件
165 C51中的运算符
166 C51中的基础语句
167 学习单片机应该掌握的主要内容
21 Keil工程建立及常用按钮介绍
211 Keil工程的建立
212 常用按钮介绍
22 点亮第一个发光二极管
23 while语句
24 for语句及简单延时语句
25 Keil仿真及延时语句的精确计算
26 不带参数函数的写法及调用
27 带参数函数的写法及调用
28 利用C51库函数实现流水灯
第2篇 内外部资源 *** 作篇
31 数码管显示原理
32 数码管静态显示
33 数码管动态显示
34 中断概念
35 单片机的定时器中断
41 独立键盘检测
42 矩阵键盘检测
51 模拟量与数字量概述
52 A/D转换原理及参数指标
53 ADC0804工作原理及其实现方法
54 D/A转换原理及其参数指标
55 DAC0832工作原理及实现方法
56 DAC0832输出电流转换成电压的
方法
第6章 串行口通信原理及 *** 作流程
61 并行与串行基本通信方式
62 RS-232电平与TTL电平的转换
63 波特率与定时器初值的关系
64 51单片机串行口结构描述
65 串行口方式1编程与实现
66 串行口打印在调试程序中的应用
第7章 通用型1602,12232,12864液晶
*** 作方法
71 液晶概述
72 常用1602液晶 *** 作实例
73 常用12232液晶 *** 作实例
74 常用12864液晶 *** 作实例
第8章 I2C总线AT24C02芯片应用
81 I2C总线概述
82 单片机模拟I2C总线通信
83 E2PROM AT24C02与单片机的通信
实例
第9章 基础运放电路专题
91 运放概述及参数介绍
92 反相放大器
93 同相放大器
94 电压跟随器
95 加法器
96 差分放大器
97 微分器
98 积分器
第3篇 提 高 篇
第10章 定时器/计数器应用提高
101 方式0应用
102 方式2应用
103 方式3 应用
104 52单片机定时器2介绍
105 计数器应用
第11章 串行口应用提高
111 方式0应用
112 方式2和方式3应用
113 单片机双机通信
114 单片机多机通信
第12章 指针
121 指针与指针变量
1211 内存单元、地址和指针
1212 指针变量的定义、赋值与
引用
122 指针变量的运算
123 指针与数组
1231 指针与一维数组
1232 指针与多维数组
124 指针与函数
1241 指针作为函数的参数
1242 指向函数的指针
1243 指针型函数
125 指针与字符串
1251 字符串的表达形式
1252 字符指针作为函数参数
1253 使用字符指针与字符数组的
区别
126 指针数组与命令行参数
1261 指针数组的定义和使用
1262 指向指针的指针
1263 指针数组作为main()函数的命令行
参数
127 指针小结
1271 指针概念综述
1272 指针运算小结
1273 等价表达式
128 C51中指针的使用
1281 指针变量的定义
1282 指针应用
第13章 STC系列51单片机功能介绍
131 单片机空闲与掉电模式应用
132 “看门狗”概念及其应用
133 用软件实现系统复位
134 内部扩展RAM的应用
135 扩展P4口的应用
136 内部E2PROM的应用
137 STC89系列单片机内部A/D应用
138 STC12系列单片机内部A/D应用
139 STC12系列单片机的PCA/PWM
介绍
1310 STC12系列单片机的SPI接口
介绍
1311 STC12系列单片机的“576MHz”超速
运行
第4篇 实 战 篇
第14章 利用51单片机的定时器设计一个
时钟
141 如何从矩阵键盘中分解出独立按键
142 原理图分析
143 实例讲解
第15章 使用DS12C887时钟芯片设计
高精度时钟
151 时钟芯片概述
152 DS12C887时钟芯片介绍
153 如何用TX-1C实验板扩展本实验
154 原理图分析
155 实例讲解
第16章 使用DS18B20温度传感器设计
温控系统
161 温度传感器概述
162 DS18B20温度传感器介绍
163 实例讲解
第17章 太阳能充/放电控制器
171 控制器原理图分析
172 控制器板上元件介绍
173 实例讲解
第18章 VC、VB(MSCOMM控件)与
单片机通信实现温度显示
181 VC MSCOMM控件与单片机通信实现
温度显示
182 VB MSCOMM控件与单片机通信实现
温度显示
第5篇 拓 展 篇
第19章 使用Protell 99绘制电路图全
过程
191 绘制电路板概述
192 建立工程
193 制作元件库
194 添加封装及制作PCB封装库
195 错误检查及生成PCB
196 布线电气特性设置
197 自动布线和手动布线
第20章 ISD400x系列语音芯片应用
201 ISD400x系列语音芯片介绍
202 ISD400x系列语音芯片 *** 作规则
203 ISD400x系列语音芯片应用实现
第21章 电机专题
211 直流电机原理及应用
212 步进电机原理及应用
213 舵机原理及其应用
第22章 常用元器件介绍
221 二极管
222 电容
223 场效应管
224 光耦
225 蜂鸣器
226 继电器
227 自恢复保险
228 瞬态电压抑制器
229 晶闸管(可控硅)
2210 电荷泵
第23章 直流稳压电源专题
231 整流电路
232 滤波电路
233 稳压电路
234 集成稳压模块的使用
235 串联开关型稳压电源
第24章 运放扩展专题
241 简单低通滤波器
242 “电流-电压”转换电路
243 光电放大器
244 精密电流源
245 可调参考电压源
246 复位稳定放大器
247 模拟乘法器
248 全波整流器和平均值滤波器
249 正弦波振荡器
2410 三角波发生器
2411 自动跟踪对称电源
2412 可调实验电源
2413 运放相关术语表
附录A 天祥电子开发实验板简介
A1 TX-1C 51单片机开发板(配套详细
视频教程)
A2 AVR单片机开发板(配套详细视频
教程)
A3 PIC单片机开发板(配套详细视频
教程)
A4 J-Link全功能ARM仿真器
A5 三星S3C44B0 ARM7入门级开
发板
A6 三星S3C44B0 ARM7提高级开
发板
A7 TX-51STAR 51单片机开发板(配套
详细视频教程)
参考文献
以上就是关于C语言课程设计—学生成绩管理系统<急!!!!!>注意要求,谢谢全部的内容,包括:C语言课程设计—学生成绩管理系统<急!!!!!>注意要求,谢谢、求一个C语言课程设计、C语言程序设计 学生成绩管理信息系统等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)