[研究生入学考试]学生成绩与学费系统_第1页
[研究生入学考试]学生成绩与学费系统_第2页
[研究生入学考试]学生成绩与学费系统_第3页
[研究生入学考试]学生成绩与学费系统_第4页
[研究生入学考试]学生成绩与学费系统_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、程序设计基础课程设计报告班 级实验时间学 号姓 名课程设计题目学生成绩与学费查询系统1 概述这个系统主要是实现学生成绩与学费查询的,首先输入一系列学生的信息,然后通过这些信息构成一个整的信息网络,利用这个信息网络形成一系列的利于查询者的功能。可以输入学生的基本信息、课程基本信息、学生成绩基本信息、学生学费基本信息,输入后还可以修改,另外可以以表格的形式输出,便于观看,加入索引后可以快速的查找信息。还可以文件初始化也就是清除以前输入的信息。2 数据描述2.1 数据对象描述/*出生年月日*/struct birth int year;int month;int day;/*学生基本信息包括*/ty

2、pedef struct char num10; /*学号 注意:输入的学号长度10 */char name12; /*姓名 注意:输入的姓名长度12 */char sex5; /*性别*/struct birth birthday;char phone15; /*电话 注意:输入的电话长度15 */char docmoity3; /是否住校intcounts; /*已修课程门数*/intcredits; /*已修课程学分*/floatjiaquan; /*加权分*/ baseinfotab; /*课程数据*/ typedef struct char num20;/*课程代码*/char na

3、me20;/*课程名称*/floatbookcost; /*课本费用*/floatstudycost;/*教学费用*/intcredits; /*课程学分*/charwhere10;/*地点*/charteacher10; /*老师的名字*/ coursetab;/成绩数据 typedef struct char num10;/*学号*/char numcourse20;/*课程代码*/char days10; /*学期*/char name20;/课程名称int lastcount;/*考试成绩*/int dailycount;/*平时成绩*/ scoretab;/学费数据typedef s

4、tructcharnum10;/*学号*/floatdcost;/*住宿费用*/floatrcost;/*器械使用费*/floatlcost;/*往年欠费*/floatfcost;/*往年剩余*/floatmcost;/*总计*/costtab;/ 定义学生索引结构体类型typedef struct char num10; / 索引码:学号long offset; / 索引码值所对应学生记录在学生文件中的位移量 baseinfoidxtab;/ 定义课程索引结构体类型typedef struct char coursenum10; / 索引码:课程号long offset; / 索引码值所对应

5、课程记录在课程文件中的位移量 courseidxtab;/ 定义成绩索引结构体类型typedef struct char num110; / 第1索引码:学号或课程号char num210; / 第2索引码:课程号或学号long offset; / 索引码值所对应成绩记录在成绩文件中的位移量 scoreidxtab;2.2 数据对象实例表1 学生基本信息姓名学号性别出生年月年龄是否住校电话已修课程门数已修课程学分加权分谢霆锋0112901男1993.6是187791830747张柏芝0112902女1993.3否1877918307510王力宏0112903男1993.5是1877918307

6、67刘亦菲0112904女1993.5是187791830776梁静茹0112905女1993.5是187791830788何炅0112906男1993.4是187791830797谢娜0112907女1993.6否187791830736张杰0112908男1993.3是187791830727杜海涛0112909男1993.5是187791830717表2 课程基本信息课程代码课程名称课本费单科教学费课程学分教学地点任课教师111高数32110402032严淑112语文45123302042王丽丽113大英24156302052李玉114历史25142302062张翰115思修231563

7、02072李飞116毛概35123302082赵霞117管理学39135402092何明118数字逻辑24156402012吴哲119美于110计算机组成原理45146502011高哲宇表3 学生成绩基本信息学号学期课程代码课程考试成绩平时成绩011290111121111812201129011112111282210112901111211138022011290111121114852401129011112111585220112901111211188424011290111121119862601129021112111185270112902111211

8、128521011290211121113842201129021112111585220112902111211168624011290211121117872801129021112111484290112902111211108528011290211121118892701129021112111987280112903111211108828011290311121111882701129031112111285280112903111211138529011290311121115842701129031112111686280112903111211178627011290411

9、121110812701129041112111285280112904111211158827011290411121116882501129041112111787270112904111211188727011290511121110882801129051112111188280112905111211138727011290511121114842801129051112111585270112905111211168627011290511121118882701129051112111989280112906111211108229011290611121112852801129

10、061112111381270112906111211148427011290611121115882701129061112111885280112906111211198228011290711121110812801129071112111285270112907111211168527011290711121117862801129071112111885290112907111211198428011290811121110842701129081112111184280112908111211128427011290811121116852701129081112111788280

11、11290811121118892801129081112111987280112909111211108728011290911121111842701129091112111383290112909111211148228011290911121115852801129091112111684280112909111211188527表4 学生收费信息学号课本费住宿费器械使用费教学费往年欠费往年剩余总计01129011000100000112902010000011290310001000001129041000100000112905100010000011290610001000001

12、12907010000011290810001000001129091000100003 功能及菜单3.1 功能示意图成绩与学费查询返回输入数据修改文件中的记录记录方式查找表格方式列示报表自动计算加权成绩与课程表建立索引文件初始化输入数据返回学生基本信息课程信息成绩信息学费信息修改文件中的记录返回学生基本信息课程信息成绩信息学费信息记录方式查找返回学生基本信息课程信息成绩信息学费信息表格方式列示返回学生基本信息课程信息成绩信息学费信息报表返回根据学生选得课程报表根据学生学费报表成绩与课表返回学生表按学号升序排序课程表按课程号升序排序成绩表按先学号、后课程升序排序成绩表按先课程号、后学号升序排序

13、建立索引返回学生表按学号建立索引课程表按课程建立索引成绩表按先学号、后课程号来建立索引成绩表按先课程号后学号来建立索引没有完成的功能:报表功能老是出现乱码;索引功能的后三个虽然没有报错,好像也没有成功;成绩与课表功能的后两个,还没有完成编码。3.2 主要功能描述(1)输入数据、修改数据、数据查找、表格方式列表都有四个,分别是学生基本信息表、课程信息表、成绩信息表、学费信息表,四个函数中分别有返回等选择功能,还可以进一步加入索引功能,使得查找速度更加的快;(2)报表功能可以根据学生课程报表也可以根据学费报表。(3)索引功能是用在数据查找和数据列表里,加快查找速度。4 系统结构及函数描述4.1 系

14、统文件结构图2904_c00.c源文件。2904_h01.h头文件。2904stud.dat学生基本信息文件。2904cur.dat课程基本信息文件。2904scro.dat成绩基本信息文件。2904cost.dat学费基本信息文件。2904stud.idx学生成绩索引文件。2904cour.idx课程索引文件。2904sco2.idx学生成绩索引文件(先课程后学号)。2904sco1.idx成绩索引文件 (先学号后课程)。4.2 函数原型及功能描述void initfile(void)文件初始化。void inputdata(void) 输入数据。void modifile(void) 修改

15、文件中的记录。void findrec(void) 记录方式查找。void tabshow(void) 表格方式列示。void statrepo(void) 报表。void autocomp(void) 自动计算加权。void sort(void) 成绩与课程表。void buildidx(void) 建立索引。程序代码#include #include #include #include #include .成绩与学费2904_h01.h / 数据处理头文件void main() char xz9; while (1) system(cls); printf( 欢迎来到江江成绩与学费查询系统

16、(祝你有一个轻松愉快的旅程):); printf(nn 0) 退出:); printf(n 1) 输入数据:); printf(n 2) 修改文件中的记录:); printf(n 3) 记录方式查找:); printf(n 4) 表格方式列示:); printf(n 5) 报表); printf(n 6) 自动计算加权); printf(n 7) 成绩与课程表); printf(n 8) 建立索引); printf(n 9) 文件初始化: ); printf(n 亲,请选择:(0-9):); while (1) gets(xz); if (xz0=48 & xz0=57) break; sys

17、tem(cls); switch (xz0) case 0: return; case 1: inputdata(); break; case 2: modifile(); break; case 3: findrec(); break; case 4: tabshow(); break; case 5: statrepo(); break; case 6: autocomp(); break; case 7: sort(); break; case 8: buildidx(); break; case 9: initfile(); break; /*-*/void inputdata() /

18、 向文件中追加记录 char xz8; char ch30; int find; file *fp; baseinfotab t; / 定义学生表的结构体变量t coursetab a; scoretab b; costtab c;system(cls); printf(nn 0)返回:); printf(n 1) 学生基本信息:); printf(n 2) 课程信息:); printf(n 3) 成绩信息:);printf(n 4) 学费信息:); printf(nn please choise:(1,2,3,4):); do gets(xz); while (xz0!=1 & xz0!=2

19、 & xz0!=3& xz0!=4); system(cls); switch (xz0) case 1: / 输入学生基本信息 if (fp=fopen(2904stud.dat, a+b)=0) printf(nn无法打开学生基本信息文件!n); break; f1: system(cls); printf(ntt输入学生基本信息 ); printf(n=); printf(n 学号 : ); gets(ch); / 输入一个学号到字符数组ch find=0; rewind(fp); / 复位到文件头 fread(&t, sizeof(baseinfotab ), 1, fp); / 从学

20、生文件中读取一个学生记录 while (!feof(fp) / 判断学号ch的学生记录是否已经输入过,输入过则不能再输入 if (strcmp(t.num, ch)=0) / 如果在学生文件中找到了学号ch的学生记录,则结束查找 find=1; break; / 结束查找 fread(&t, sizeof(baseinfotab ), 1, fp); / 从学生文件中读取一个学生记录 if (find) / 在学生文件中已经存在该学号的学生记录,选择是否输入下一个学生 printf(nnnt 学生 %s 已经存在 ! 继续输入吗? (y/n) , ch); do gets(ch); while

21、 (ch0!=y & ch0!=y & ch0!=n & ch0!=n) ; if (ch0=y | ch0=y) goto f1; / 实际上是构成循环 else fclose(fp); return; strcpy(t.num, ch); / 将学号ch字符串拷贝给学生结构体变量t的学号成员num printf( 名字 : ); gets(); printf( 性别 : ); gets(t.sex); printf( 生日 - 年: ); gets(ch); t.birthday.year=atoi(ch); printf( 月: ); gets(ch); t.birthday

22、.month=atoi(ch); printf( 日: ); gets(ch); t.birthday.day=atoi(ch); printf(电话号码 : ); gets(t.phone);printf(寝室(y/n):);gets(t.docmoity); fwrite(&t, sizeof(t), 1, fp); / 向文件中追加学生记录 printf(=); printf(nnntt 继续输入吗? (y/n) ); do gets(ch); while (!(ch0=y | ch0=n | ch0=y | ch0=n); if (ch0=y | ch0=y) goto f1; / 实

23、际上是构成循环 else fclose(fp); break; case 2: / 输入课程基本信息 if (fp=fopen(2904cur.dat, a+b)=0) printf(nn无法打开学生课程基本信息文件!n); break; f2: system(cls); printf(ntt输入课程信息); printf(n=); printf(n 课程号: ); gets(ch); / 输入一个课程号到字符数组ch find=0; rewind(fp); / 复位到文件头 fread(&a, sizeof(coursetab), 1, fp); / 从课程文件中读取一个课程记录 while

24、 (!feof(fp) / 判断课程号ch的课程记录是否已经输入过,输入过则不能再输入 /fread(&x, sizeof(coursetab), 1, fp); / 从课程文件中读取一个课程记录 if (strcmp(a.num, ch)=0) / 如果在课程文件中找到了课程号ch的课程记录,则结束查找 find=1; break; / 结束查找 fread(&a, sizeof(coursetab), 1, fp); / 从课程文件中读取一个课程记录 if (find) / 在课程文件中已经存在该课程号的课程记录,选择是否输入下一门课程 printf(nnnt这个课程 %s 已经存在! 还

25、要继续吗? (y/n) , ch); do gets(ch); while (ch0!=y & ch0!=y & ch0!=n & ch0!=n) ; if (ch0=y | ch0=y) goto f2; / 实际上是构成循环 else fclose(fp); return; strcpy(a.num, ch); / 将课程号ch字符串拷贝到课程结构体变量t的课程号成员num printf( 课程名称: );gets(); printf( 课本费 : ); gets(ch); a.bookcost =atof(ch); printf( 单科教学费: ); gets(ch); a.

26、studycost=atof(ch); printf( 课程学分: ); gets(ch); a.credits=atoi(ch); printf( 教学地点: ); gets(a.where); printf( 任课教师 : ); gets(a.teacher); fwrite(&a, sizeof(a), 2, fp); / 向文件中追加学生记录 printf(=); printf(nn input next?(yes/no) ); do gets(ch); while (!(ch0=y | ch0=n | ch0=y | ch0=n); if (ch0=y | ch0=y) system

27、(cls); goto f2; else fclose(fp); break; case 3: if (fp=fopen(2904scro.dat, a+b)=0) printf(nn无法打开学生成绩基本信息文件!n); break; f3: system(cls);printf(ntt输入课程代码); printf(n=); printf(n 课程代码: ); gets(ch); find=0; rewind(fp); / 复位到文件头 fread(&b, sizeof(scoretab ), 1, fp); while (!feof(fp) if (strcmp(b.num, ch)=0)

28、 find=1; break; / 结束查找 fread(&b, sizeof(scoretab), 1, fp); if (find) printf(nnnt这个课程 %s 已经存在! 还要继续吗? (y/n) , ch); do gets(ch); while (ch0!=y & ch0!=y & ch0!=n & ch0!=n) ; if (ch0=y | ch0=y) goto f3; / 实际上是构成循环 else fclose(fp); return; strcpy(, ch);printf( 学号: ); gets(b.num); printf( 学期: ); get

29、s(b.days); printf( 课程考试成绩: ); gets(ch); b.dailycount=atoi(ch); printf( 平时成绩: ); gets(ch); b.lastcount=atoi(ch); fwrite(&b, sizeof(b), 3, fp); / 向文件中追加学生记录 printf(=); printf(nn input next?(yes/no) ); do gets(ch); while (!(ch0=y | ch0=n | ch0=y | ch0=n); if (ch0=y | ch0=y) system(cls); goto f3; else f

30、close(fp); break;case 4: if (fp=fopen(2904cost.dat, a+b)=0) printf(nn无法打开学生学费基本信息文件!n); break; f4: system(cls);printf(ntt输入学号); printf(n=); printf(n 学号: ); gets(ch); find=0; rewind(fp); / 复位到文件头 fread(&c, sizeof(costtab), 1, fp); while (!feof(fp) if (strcmp(c.num, ch)=0) find=1; break; / 结束查找 fread(

31、&c, sizeof(costtab), 1, fp); if (find) printf(nnnt这个学生 %s 已经存在! 还要继续吗? (y/n) , ch); do gets(ch); while (ch0!=y & ch0!=y & ch0!=n & ch0!=n) ; if (ch0=y | ch0=y) goto f4; / 实际上是构成循环 else fclose(fp); return; strcpy(c.num, ch); printf( 住宿费: ); gets(ch);c.dcost=atof(ch); printf( 器械使用费 : ); gets(ch); c.rc

32、ost=atof(ch); printf( 往年欠费: ); gets(ch); c.lcost =atof(ch); printf( 往年剩余: ); gets(ch);c.fcost=atof(ch);/printf( 总计: ); /gets(ch);c.mcost=atof(ch); fwrite(&c,sizeof(c),4, fp); / 向文件中追加学生记录 printf(=); printf(nn input next?(yes/no) ); do gets(ch); while (!(ch0=y | ch0=n | ch0=y | ch0=n); if (ch0=y | ch

33、0=y) system(cls); goto f4; else fclose(fp); break; /*-*/void modifile() / 修改文件中的记录 int find; long pos; char xz8, ch30, num10; file *fp; baseinfotab t; / 定义学生表的结构体变量tcoursetab a;scoretab b;costtab c; system(cls); printf(nn 0) 返回:); printf(n 1) 学生基本信息:); printf(n 2) 课程信息:); printf(n 3) 成绩信息:);printf(n

34、 4) 学费信息:); printf(nn 亲,请选择:(0,1,2,3,4):); do gets(xz); while (xz0!=0 &xz0!=1 & xz0!=2 & xz0!=3& xz0!=4); system(cls); switch (xz0) case 0: return; case 1: /*按学号修改学生基本信息*/ if (fp=fopen(2904stud.dat, r+b)=0) printf(nn无法打开学生基本信息文件夹!n); break; f1: system(cls);printf(请输入要查找学生学号: ); gets(num); / 输入需修改记录的学号 find=0; while (!feof(fp) pos=ftell(fp); fread(&t, sizeof(t), 1, fp); / 从文件中读取一个学生记录 if (strcmp(t.num, num)=0) / 读取的记录是给定学号的学生记录 find=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论