学籍管理系统实习报告.docx
- 文档编号:27057291
- 上传时间:2023-06-26
- 格式:DOCX
- 页数:15
- 大小:108.15KB
学籍管理系统实习报告.docx
《学籍管理系统实习报告.docx》由会员分享,可在线阅读,更多相关《学籍管理系统实习报告.docx(15页珍藏版)》请在冰豆网上搜索。
学籍管理系统实习报告
中国地质大学(武汉)
C语言课程设计论文
学院:
珠宝学院
专业:
宝石及材料工艺
题目:
杂志订阅管理软件
班级:
141101
姓名:
邓淼
学号:
20101003535
指导教师:
马老师
2011年7月
1题目要求
1.1题目原文
使用计算机对一种杂志的订阅进行管理,该杂志拥有最多用户不超过十人,每个用户的信息包括:
姓名,性别,地址,电话号码,杂志单价,订阅数,订阅期限(以“YYYY.MM.DD”表示)),现要求用菜单选择并完成以下的功能:
1,增加新订户,将用户的全部信息写入输入到文件中。
2,根据当天的日期对订户文件进行查询,删除已到期的订户信息。
3.统计本期杂志的订户数,并打印运行结果。
1.2题目分析
本题主要是要求我编一个程序来管理订阅,包括增加和删除用户记录,统计运算结果。
增加用户就是在原有的文件中写入一个新的用户信息,但有一个前提就是用户数不能超过10人。
删除以到期的用户,就是从原有的文件中去掉一个用户信息,这里需要把日期与当天的日期进行比较,而统计结果就是把文件中的用户进行统计,并输出。
2需求分析
根据题目要求,由于订户信息放在文件中,所以应提供文件的输入,输出,删除等操作;在程序中需要浏览订户的信息,应提供显示、查找等操作;另外还应提供用户每步的输入提示、输入的日期的格式判断及重输功能、键盘式选择菜单实现功能等。
3总体设计
本程序总思路
本程序有一个主函数和多个被调函数,多个被调函数用来解决增加新订户,删除订户记录,统计订户信息打印运算结果三个问题。
主要的结构体为magzine,他包括用户的基本信息:
姓名,性别,地址,电话号码,单价,订阅数和期限。
全局变量为结构体变量order。
实现功用1,解决增加新用户的问题。
先打开文件,要判断用户数是否超过10,然后将新的用户信息写入文件中,这里用的是do……while语句对文价进行读和写,读文件需要计算出订户数,并判断。
写即是写入新订户。
实现功用2,解决删除订户记录的问题。
进行文件的读出操作,并输入当天的日期,用strcmp语句与定户信息中的期限进行比较,如果订户信息中的期限与当日的期限相同,那么在写文件时,该订户的记录就不用写入了,反之,就应当写入。
这样变完成了删除操作了。
实现功用3,统计用户信息并打印运算结果。
这里主要是进行文件的读和写,运用if语句完成,统计结果即是根据单价和数量算出总价格并把所有的价格求和即可。
然后输出用户的所有信息。
4详细设计
1.主函数
2.增订新用户模块
3.删除过期用户模块
4.统计本期杂志订户信息模块
附:
程序代码
#include
#include
#definemax20
structmagazine
{
charname[11];
charsex[6];
charaddr[11];
charphone_number[12];
charunit_price[5];
charamount[4];
chartime_limit[11];
}order[max];
voidsave(intn);
intload_record();
voidsearch();
voidprintf_n(intn);
voidprintf_one(inti);
voidinput(inti);
voidstatistic();
voidadd();
voidmenu();
main()
{
FILE*fp;
fp=fopen("record.txt","w");
fclose(fp);
menu();}
voidmenu()
{
intw,n;
do
{printf("\n\n\t\t*********************************************\n\n");
printf("\t\t1:
添加新用户\n");
printf("\t\t2:
查找及删除\n");
printf("\t\t3:
统计\n");
printf("\t\t4:
退出\n\n");
printf("\t\t*********************************************\n\n");
printf("请选择你想要的功能(输入对应数字):
[]\b\b");
scanf("%d",&n);
getchar();
if(n<1||n>4)w=1;
elsew=0;
}
while(w==1);
switch(n)
{
case1:
add();break;
case2:
search();break;
case3:
statistic();break;
case4:
break;
}
}
voidadd()
{
intt,i,m;
t=load_record();
printf("你想添加多少组用户?
\n");
printf("请输入数量:
[]\b\b\b");
scanf("%d",&m);
for(i=0;i { printf("\n输入第%d组用户记录.\n",i+1); input(t+i); } save(t+m); menu(); } voidinput(inti) { printf("请输入: \n姓名性别地址电话单价数量最后期限\n"); scanf("%s%s%s%s%s%s%s",&order[i].name,&order[i].sex,&order[i].addr,&order[i].phone_number,&order[i].unit_price,&order[i].amount,&order[i].time_limit); } voidstatistic() { intt; t=load_record(); printf("订阅信息依次为\n[%d]\b\b\b",t); printf_n(t); printf("\n\n\n按任意键返回...\n\n"); menu(); } voidprintf_one(inti) { printf("%-8s%-5s%-10s%-11s%-4s%-3s%-10s\n\n",order[i].name,order[i].sex,order[i].addr,order[i].phone_number,order[i].unit_price,order[i].amount,&order[i].time_limit); } voidprintf_n(intn) { intj; printf("姓名性别地址电话单价数量最后期限\n\n"); for(j=0;j { if((j+1)%10==0) { printf("\n\n按任意键继续..."); puts("\n\n"); } printf_one(j); } } voidsearch() { FILE*fp; chardate[11],str[2]; intt,i,sum=0; t=load_record(); printf("请输入日期: []\b\b\b\b\b\b\b\b\b\b\b"); scanf("%s",date); printf("\n"); if((fp=fopen("record.txt","w"))==NULL) { printf("\nCannotopenfile\n"); } printf("\n"); for(i=0;i { if(strcmp(order[i].time_limit,date)<0) { sum++; printf("\n"); printf_one(i); printf("\n\n记录已过期! "); printf("\n\n是否删除此信息? ('Y'or'N'): []\b\b"); scanf("%s",str); if(strcmp(str,"Y")==0||strcmp(str,"y")==0) continue; } fwrite(&order[i],sizeof(structmagazine),1,fp); } fclose(fp); if(sum==0) { printf("***************************************************\n\n"); printf("对不起! 没有找到你想要的信息! \n\n"); printf("***************************************************\n\n"); } printf("\n\n\n按任意键返回到上一步...\n"); menu(); } intload_record() { FILE*fp; inti; if((fp=fopen("record.txt","r"))==NULL) { printf("\nCannotopenfile\n"); } for(i=0;! feof(fp);i++) fread(&order[i],sizeof(structmagazine),1,fp); fclose(fp); return(i-1); } voidsave(intn) { FILE*fp; inti; fp=fopen("record.txt","w"); for(i=0;i { fwrite(&order[i],sizeof(structmagazine),1,fp); } fclose(fp); } 5问题、办法、心得与结论、展望等 刚开始那到这个题目的时候,感到一片茫然,不知道如何下手,果然是万事开头难啊! 开始的C语言实习似乎还没让我找到感觉。 结果就产生了一些错误的念头,便从网上搜索出来一些相关的程序,结果运行时出现了很多错误,漏洞百出。 后来认识到这样做不对,不仅投机取巧,还对我的程序设计能力没有一点提高。 计算机C语言的课程我自己感觉学的还不错,考试时也很有信心,取得了较为优异的成绩,但是这个上机实习却也给了我不少的打击,不过我从小就是个好学上进的孩子,在和同学的不断交流中,我有了一定的思路。 想到马上就去做,我的一贯风格,在设计程序的过程中,用到被调函数,我经常将整体变量和局部变量混淆,以致在运行时无法满足要求。 于是看前面的温故知新逐渐分清了一些概念才将这个问题解决。 还有在写完程序后,出现了十几个错误,当时我看着就不想改了,后来才发现数字只是表面,通过不断的修改,错误变少的很快,另外,对于我拿到的这个题目,我也有不少的疑惑,比如关于“统计本期订阅的用户数,”到底包括不包括已经到期的用户呢? 通过与马老师在网上的交流,我得到了老师的肯定,按自己理解的想法来,把想法转化为程序,就算是成功了。 学习和练习C程序的设计是一个漫长的过程,这几天的学习只是让我们接触到了C语言程序设计,只是肤浅的了解了它的一些基本操作,。 在这次实习中,我对C语言有了一个更深的了解认识,也对这个学期学的知识得到巩固,还尝试运行编程,每次运行程序不成功,并没有让我对后面的调试失去信,反而激发了我不服输的个性,我不断找同学交流,请教了很多问题,最终把理论知识转化基本技能.同时这次的实习,使我对C语言的学习产生了浓厚的兴趣.还是这次实习,我同样深切体会到了老师认真负责的精神和热情为同学指导的促学方式,看到老师一遍又一遍为周围的同学讲解题目,做一些必要的指导,颇为感动,虽然对有些时候老师没给我们指出解决问题的方法有些小抱怨,但是到了结束时才知道,这种教学让我们自己学会了自学,学会了在思考与讨论中去看懂别人的代码。 这些是平时上课时无法学到的,是更深层次的巨大收获.通过这次实习,我也发现了许多问题.我认识到自己还有很多的知识没学好,虽然C语言的笔试考试中我取得了94分的好成绩,但现在发现还是有不少基础知识没理清,而且许多东西还要去翻书,去上网搜索.而且遇到一些小错误运行不出来,就会烦躁不安,觉得有些自暴自弃或者抱怨项目的变态,以后要克服,尽量保持一颗良好的心态,学好C语言,也学好用C语言编写一个按要求的系统.还有就是对于未来,我觉得我还有许多方面需要提高.首先我要继续学习好C语言的基础知识,然后能在上网时候多看一些优秀的教程和优秀的代码.遇到问题时多和同学讨论,并且多弄出几套方案,多锻炼自己结局问题的能力和与同学合作的能力.总之,这一切都成为我记忆里面的一个篇章,更是在C语言编程上的一个里程碑. 备注: 程序使用说明 1使用之前,应当把record.txt,这个文件放到D盘主目录下(D: \)。 2使用查询、删除、统计功能之前,必须先进行数据录入。 即使用所用的功能必须先将所有用户信息输入文件中。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学籍 管理 系统 实习 报告